我正在做一个简单的扫雷游戏。我正在使用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

07-24 17:45