В настоящее время я работаю над созданием многопользовательской игры Snake в HTML5 Canvas с использованием Javascript.
Код ниже является функцией, которая обрабатывает случайное размещение пищи для змеи.Проблема с фрагментом кода состоит в том, что он дает мне x и y в while (map [x] [y]);обратно, как что-то, что он не может прочитать, хотя он генерирует случайное число.
Это точная ошибка:
"Uncaught TypeError: Cannot read property '20' of undefined"
'20' - это случайное сгенерированное число (и оно будет позицией решетки пищи в двумерном массиве), и оно изменяется каждый разЯ перезапускаю программу или обновляю веб-страницу.Может кто-нибудь объяснить, что мне нужно изменить, чтобы определить х и у и разместить мою еду?
function rand_food(){
var x, y;
do {
x = MR() * this.rect_w|0;
y = MR() * this.rect_h|0;
}
while (map[x][y]); <-- Here is the error
map[x][y] = 1;
this.ctx.strokeRect(x * 10+1, y * 10+1, 8, 8);
}
Вот еще один фрагмент кода, который определяет карту.
this.map = [];
// Map positions
//*
for (i = 0; i < this.rect_w; i++){
map[i] = [];
}//*/
После попытки предположить Шона мой код теперь выглядит так: Но он все еще дает мне ту же ошибку.Любое другое предложение?
function SnakeGame(){
this.map = [];
for (i = 0; i < this.rect_w; i++){
this.map[i] = [];
}
function rand_food(){
var x, y;
console.log("Map length: " + this.map.length);
do {
x = MR() * this.rect_w|0;
y = MR() * this.rect_h|0;
console.log("x: " + x);
console.log("y: " + y);
}
while (this.map[x][y]);
this.map[x][y] = 1;
this.ctx.strokeRect(x * 10+1, y * 10+1, 8, 8);
}