Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solution #8

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Solution #8

wants to merge 2 commits into from

Conversation

kshvetsova
Copy link

@vpolets
Copy link
Contributor

vpolets commented Sep 18, 2020

Знайшов баг, якщо наприклда ходу немає вліво, клікаєш вліво і у тебе в рандомному місці генериться клітинка

Copy link
Contributor

@vpolets vpolets left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moveUp moveDown moveRight
Буде дуже класно це переробити на одну функцію merge.
Як? Завжди мерджити клітинки в одному напрямку, вниз для прикладу.
Ця функція в тебе вже готова, але як зробити так щоб завжди мерджити вниз при будь-якому натисканні стрілки?
В тебе є матриця 4*4, якщо нажали вниз тоді ти просто мерджиш клітинки вниз, якщо нажали вверх, то ти розвертаєш свою матрицю на 180 градусів, мерджиш клітинки і тоді розвертаєш матрицю назад на 180 градусів,
Якщо нажимають вправо, ти повертаєш матрицю на 90 градусів і -90 для натискання в ліво
Відповідно схематично буде щось схоже:

addEventListener('keypress', () => {
  rotateMatrix(matrix, 90);
  mergeNumbers();
  rotateMatrix(matrix, -90);
})

Це чисто схематично може треба буде ще коду там дописати, але це щоб було зрозуміло про що я.

Comment on lines 27 to 50
case '': cell[i].className = 'field-cell';
break;
case '2': cell[i].classList.add('field-cell--2');
break;
case '4': cell[i].classList.add('field-cell--4');
break;
case '8': cell[i].classList.add('field-cell--8');
break;
case '16': cell[i].classList.add('field-cell--16');
break;
case '32': cell[i].classList.add('field-cell--32');
break;
case '64': cell[i].classList.add('field-cell--64');
break;
case '128': cell[i].classList.add('field-cell--128');
break;
case '256': cell[i].classList.add('field-cell--256');
break;
case '512': cell[i].classList.add('field-cell--512');
break;
case '1024': cell[i].classList.add('field-cell--1024');
break;
case '2048': cell[i].classList.add('field-cell--2048');
break;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а це можна автоматизувати а не руками прописувати стільки коду?)

cell[i].classList.add('field-cell--${cell}')

}
}

const board = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

чому 1234567...
не легше працювати з нулями, індекси елементів в тебе і так є.
типу нуль це пуста клітинка, 2 відповідно з 2кою

Comment on lines 93 to 107
if (cell[board[row + 1][j]].innerHTML === '') {
cell[board[row + 1][j]].innerHTML = cell[board[row][j]].innerHTML;
cell[board[row][j]].innerHTML = '';
row++;
} else if (cell[board[row + 1][j]].innerHTML
=== cell[board[row][j]].innerHTML) {
cell[board[row + 1][j]].innerHTML *= 2;
cell[board[row][j]].innerHTML = '';

score.innerHTML = +score.innerHTML
+ (+cell[board[row + 1][j]].innerHTML);
checkForWin();
break;
} else {
break;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

то це що виходить що board вище нам навіть не треба?? Ти просто читаєш інфу з клітинок? Це дуже поганий підхід, в такому разі я як користувач можу просто підредагувати html і перемогти.
Створи собі board масив масивів і працюй з ним, а не з html, створи метод render передай туди свій масив і перетворюй вже свій масив html елементи.
Користувач має бачити тільки результат того що він нажав, ніяк самостійно вплинути він не має на результати, навіть якщо він підредагує числа в клітинках, в тебе в масиві мають зберігатися точні числа і точний стан справ

@kshvetsova kshvetsova requested a review from vpolets September 26, 2020 19:38
Copy link
Contributor

@vpolets vpolets left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В гру грати можна, в портфоліо теж додати можна, виглядає гарно і здається все працює ок. По коду є зауваження
Наприклад краще було б все ж використати rotate вже готовий алгоритм, щоб не придумувати велосипед)
Ну і код дуже не очевидний, тобто я читаю функцію і насправді не розумію що там відбувається, треба старати писати максимально простий код і тупий, тобто людською мовою, щоб він читався як книжка
перечитуй свій код і дивись на нього так ніби це не ти писала і чи буде людині яка тільки почала девелопити зрозуміло що тут відбувається
Не використовуй абстрактні назви типу arr, action
якщо це масив елементів з рядка то так і пиши row


function merge(data) {
const arr = [];
let alpha = data.shift();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

шо це тут за радіоактивний код? бета гама альфа?)

}

function merge(data) {
const arr = [];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

що таке arr? що там зберігається?

Comment on lines +56 to +59
if (!beta) {
if (alpha) {
arr.push(alpha);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

тут якісь чудеса теж(
банально не розумію що тут відбувається

arr.push(alpha);
}
break;
} else if (alpha === beta) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

альфа і бета рівні, чому?
Думаю ти розуміє, що окрім тебе цей код ніхто не зможе розшифрувати і це погано

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants