我正在做一个简单的扫雷游戏。我正在使用p5js,并且不断收到此错误。 ##未被捕获的TypeError:无法读取undefined(...)sketch.js:34 ##的属性'isMine'。
sketch.js-
var cells = [];
function createCells() {
var x = 0;
var y = 0;
for(var i = 0; i < 100; i++) {
cells[i] = new Cell(x, y, 255);
x += 50;
if(x >= 500) {
y += 50;
x = 0;
}
}
}
function setup() {
createCanvas(501, 501);
frameRate(60);
createCells();
for(var i = 0; i < 5; i++) {
var rd = random(cells);
if(!cells[rd].isMine()) {
cells[rd].setMine();
} else {
i--;
}
}
}
function draw() {
background(50);
for(var i = 0; i < cells.length; i++) {
cells[i].show();
}
}
function mousePressed() {
for(var i = 0; i < cells.length; i++) {
if(mouseX < cells[i].x + cells[i].w && mouseX > cells[i].x) {
if(mouseY < cells[i].y + cells[i].h && mouseY > cells[i].y) {
if(!cells[i].mine) {
cells[i].cOlor = 'rgb(0, 153, 0)';
}
}
}
}
}
cell.js-
function Cell(x, y, cOlor) {
this.w = 50;
this.h = 50;
this.x = x;
this.y = y;
this.cOlor = cOlor;
this.mine = false;
this.setMine = function() {
this.mine = true;
}
this.isMine = function() {
return this.mine;
}
this.show = function() {
fill(this.cOlor);
stroke(0);
rect(this.x, this.y, this.w, this.h);
}
}
在此先感谢您的帮助。 :)
最佳答案
random(cells)返回数组的元素(一个Cell对象),而不是索引。
所以试试这个:
for(var i = 0; i < 5; i++) {
var cellRandom = random(cells);
if(!cellRandom.isMine()) {
cellRandom.setMine();
} else {
i--;
}
}
见https://p5js.org/reference/#/p5/random