Страницы

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

воскресенье, 7 июля 2019 г.

Проблема с вызовом метода

Не работают два метода .fill_field() и .draw_field()
function cell_state() { this.is_mine = false; this.is_open = false; this.mine_around = 0; } var game = { width: 10, height: 10, mine_count: 10, open_count: 0, field: [], fill_field: function () { for (var x = 0; x < game.width; x++) { for (var y = 0; y < game.height; y++) { game.field.push(new cell_state()); } }
for (var i = 0; i < game.mine_count; i++) { var xx = Math.floor(Math.random * game.width); var yy = Math.floor(Math.random * game.height); if (!game.field[xx][yy].is_mine) { game.field[xx][yy].is_mine = true; } else { i--; } } }, draw_field: function() { $("body").append("

"); for (var x = 0; x < game.width; x++) { $("table").append(""); for (var y = 0; y < game.height; y++) { $("tr").append("
"); } } } }; game.fill_field(); game.draw_field();


Ответ

function cell_state() { this.is_mine = false; this.is_open = false; this.mine_around = 0; } var game = { width: 10, height: 10, mine_count: 10, open_count: 0, field: [], fill_field() { for (var x = 0; x < game.width; x++) { // 1: У вас дальше в коде идёт обращение таким образом: game.field[xx][yy] // А field вы делаете одномерным массивом. Тут надо создавать массив-столбец: var row = []; game.field.push(row); for (var y = 0; y < game.height; y++) { // И клетки класть в него, а не прямо в field row.push(new cell_state()); } } for (var i = 0; i < game.mine_count; i++) { // 2: Math.random это функция (скобки забыли) var xx = Math.floor(Math.random() * game.width); var yy = Math.floor(Math.random() * game.height); if (!game.field[xx][yy].is_mine) { game.field[xx][yy].is_mine = true; } else { i--; } } }, draw_field: function() { $("body").append("

"); for (var x = 0; x < game.width; x++) { $("table").append(""); for (var y = 0; y < game.height; y++) { // 3: Какую именно строку таблицы вы тут получаете? // $("tr").append("
"); // Вам нужна последняя: $("tr:last-child").append(``); } } } }; game.fill_field(); game.draw_field(); td{ width: 10px; height: 10px; border: 1px solid black; } td.ismine{ background: black; }

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

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