Страницы

Поиск по вопросам

суббота, 8 июня 2019 г.

Сапер на JavaScript

создаю сапера на JS, есть двумерный массив заполненый нулями и единицами ,1 это мина, нужно создать массив заполненый числами количеством мин вокруг ячейки, не получаеться сделать из-за границ массива.
var mineField = [ ['0', '0', '0', '1', '0'], ['0', '1', '0', '0', '0'], ['0', '0', '1', '0', '1'], ['1', '0', '0', '1', '0'], ['0', '0', '1', '0', '0'] ];
var markField=[]; for(var i = 0;i< mineField.length;i++){ markField[i] = []; for(var j = 0; j< mineField[i].length; j++){ if(field[i][j] == 1) markField[i][j] = "-1";//если мина то вносить -1 else{ var mineCounter = 0;//Количество мин вокруг ячейки if (field[i-1][j-1] === 1) mineCounter++; if (field[i-1][j] === 1) mineCounter++; if (field[i-1][j+1] === 1) mineCounter++; if (field[i][j-1] === 1) mineCounter++; if (field[i][j+1] === 1) mineCounter++; if (field[i+1][j-1] === 1) mineCounter++; if (field[i+1][j] === 1) mineCounter++; if (field[i+1][j+1] === 1) mineCounter++; markField[i][j] = mineCounter; } } }


Ответ

Передумал закрывать как дубликат Не работает счетчик мин вокруг, так как это другой способ, который тоже имеет право на существование.
var field = [ [0, 0, 0, 1, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [1, 0, 0, 1, 0], [0, 0, 1, 0, 0] ]; var mark = []; for (var i = 0; i < field.length; i++) { mark[i] = []; for (var j = 0; j < field[i].length; j++) { if (field[i][j] == 1) mark[i][j] = 9; // для красоты вывода результата, 9 тоже не может быть else { var counter = 0; if (field[i - 1] && field[i - 1][j - 1] == 1) counter++; if (field[i - 1] && field[i - 1][j] == 1) counter++; if (field[i - 1] && field[i - 1][j + 1] == 1) counter++; if (field[i][j - 1] == 1) counter++; if (field[i][j + 1] == 1) counter++; if (field[i + 1] && field[i + 1][j - 1] == 1) counter++; if (field[i + 1] && field[i + 1][j] == 1) counter++; if (field[i + 1] && field[i + 1][j + 1] == 1) counter++; mark[i][j] = counter; } } } for (i = 0; i < mark.length; i++) console.log(JSON.stringify(mark[i]));

Комментариев нет:

Отправить комментарий