Давайте теперь обсудим этапы решения нашей задачи. Очевидно, что для начала нам нужно написать код, который будет формировать таблицу заданного размера, заполненную случайными числами.
Однако, эта подзадача слишком объемная. Давайте ее раздробим на более мелкие.
Мне кажется удобным сделать функцию, которая параметром будет принимать ссылку на игровое поле и массив со случайными числами, и будет формировать ячейки таблицы, заполняя их числами из массива:
function build(field, arr) {
}
Удобно было бы, если бы массив, передаваемый в эту функцию был двухмерным, уже специально подготовленным, со случайными числами.
Пусть этот массив подготавливает функция
prepare
, параметром принимающая размер
стороны игрового поля:
function prepare(size) {
}
Используя наши функции, мы можем вот так
создать начальную таблицу 2
на 2
:
build(field, prepare(2));
Функция prepare
получится слишком
сложной, если в ней будет весь код для подготовки
массива. Лучше будет, если она будет использовать
вспомогательные функции.
Пусть вспомогательная функция range
формирует массив с числами от 1
до
максимального числа таблицы:
function range(count) {
}
Пусть функция shuffle
перемешивает
элементы массива в случайном порядке:
function shuffle(arr) {
}
Пусть функция chunk
разбивает одномерный
массив в двухмерный. Второй параметр пусть
указывает количество элементов в подмассиве:
function chunk(arr, n) {
}
Имея такие функции, мы можем с их помощью
сделать нужную нам функцию prepare
:
function prepare(size) {
let arr = [];
arr = range(size * size);
arr = shuffle(arr);
arr = chunk(arr, size);
return arr;
}
Сделайте описанную функцию range
.
Потестируйте ее работу.
Сделайте описанную функцию shuffle
.
Потестируйте ее работу.
Сделайте описанную функцию chunk
.
Потестируйте ее работу.
Потестируйте работу созданной вами функции
prepare
.