function Cell(i, j) { this.i = i; this.j = j; this.walls = [true, true, true, true]; this.visited = false; this.checkNeighbors = function () { var neighbors = []; var top = grid[index(i, j - 1)]; var right = grid[index(i + 1, j)]; var bottom = grid[index(i, j + 1)]; var left = grid[index(i - 1, j)]; if (top && !top.visited) { neighbors.push(top); } if (right && !right.visited) { neighbors.push(right); } if (bottom && !bottom.visited) { neighbors.push(bottom); } if (left && !left.visited) { neighbors.push(left); } if (neighbors.length > 0) { var r = floor(random(0, neighbors.length)); return neighbors[r]; } else { return undefined; } }; this.highlight = function () { var x = this.i * w; var y = this.j * w; noStroke(); fill(252, 106, 2, 100); rect(x, y, w, w); }; this.show = function () { var x = this.i * w; var y = this.j * w; stroke(0); if (this.walls[0]) { line(x, y, x + w, y); } if (this.walls[1]) { line(x + w, y, x + w, y + w); } if (this.walls[2]) { line(x + w, y + w, x, y + w); } if (this.walls[3]) { line(x, y + w, x, y); } if (this.visited) { noStroke(); fill(242, 255, 28, 125); rect(x, y, w, w); } }; }