2016-12-12 18 views
0

私は単純な掃除機ゲームを作っています。私はp5jsを使用しており、このエラーが発生しています。 ## Uncaught TypeError:未定義(...)のプロパティ 'isMine'を読み取ることができませんsketch.js:34 ##。未定義のプロパティを読み取れません - p5js

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); 
    } 
} 

感謝。 :)

答えて

1

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

を参照してください。
関連する問題