2016-12-12 6 views
0

Ich mache eine einfache Mine Sweeper-Spiel. Ich benutze p5js und ich bekomme diesen Fehler immer wieder. ## Uncaught TypeError: Kann die Eigenschaft 'isMine' von undefiniertem (...) sketch.js: 34 ## nicht lesen.Kann nicht lesen Eigenschaft von undefined - 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); 
    } 
} 

Dank auf Voraus für jede Hilfe. :)

Antwort

1

random (Zellen) gibt ein Element des Arrays (ein Cell-Objekt) zurück, kein Index. Also versuchen Sie dies:

for(var i = 0; i < 5; i++) { 
    var cellRandom = random(cells); 
    if(!cellRandom.isMine()) { 
     cellRandom.setMine(); 
    } else { 
     i--; 
    } 
} 

Siehe https://p5js.org/reference/#/p5/random

Verwandte Themen