gpt4 book ai didi

javascript - 用Java编写Conways Life of Life错误

转载 作者:行者123 更新时间:2023-12-02 11:01:56 24 4
gpt4 key购买 nike

我目前正在使用JavaScript编写Conways生活游戏,但是遇到了一些我不知道如何解决的错误。想知道是否有人可以帮助我解决这些问题?
当前在Google Chrome浏览器中显示4个错误,具体如下:

  • 未捕获的TypeError:无法读取未定义的属性'length'-“for(var i = 0; i
  • GoL.update @ life.js:72-这是-“for(var i = 0; i
  • GoL.updateAll @ life.js:88这是-“this.update(i,j);”
  • (匿名函数)@ life.js:115,这是-“gameoflife.updateAll();”

  • 我认为它们可能属于我不确定的类别。
    这是我的代码:
    //object constructor
    function cell(){
    this.alive = Math.random() >0.7;
    this.neighbours = 0; //number of live neighbours
    this.checkneighbours = [[-1,-1],[-1,0],[0,-1],[-1,1],[1,-1],[1,0],[0,1],[1,1]];
    }


    function GoL(size){
    this.size = size;
    this.grid = this.makeGrid(size);
    };

    GoL.prototype.makeGrid = function(size){
    var grid = [];
    for(var i=0; i<size; i++){
    var row=[];
    for(var j =0; j<size; j++){
    row.push(new cell());
    }
    grid.push(row);
    }
    return grid;
    };

    GoL.prototype.drawGrid = function(){
    console.log("\033[2J");
    for(var i=0;i<this.size;i++){
    var row =this.grid[i];
    var rowCell="";
    for(var j=0;j<this.size;j++){
    var cell = row[j];
    if(cell.alive){
    rowCell += "X|";
    }else{
    rowCell += " |";
    }
    }
    console.log(rowCell);
    }
    };

    GoL.prototype.underpopulation = function(ro,col){
    var cell = this.grid[ro][col];
    if(cell.neighbours <2){
    return true;
    }else{
    return false;
    }
    };
    GoL.prototype.overpopulation = function(ro,col){
    var cell = this.grid[ro][col];
    if(cell.neighbours >3){
    return true;
    }else{
    return false;
    }
    };

    GoL.prototype.backtolife = function(ro,col){
    var cell = this.grid[ro][col];
    if(cell.neighbours ===3 && !cell.alive){
    return true;
    }else{
    return false;
    }
    };

    GoL.prototype.update = function(ro,col){
    var cell = this.grid[ro][col];
    cell.num_of_neighbours = 0;
    for(var i =0; i<this.checkneighbours.length; i++){
    var checkneighbour = this.checkneighbours[i];
    var neighbour1 = direction[0];
    var neighbour2 = direction[1];
    if(neighbour1>=0 && neighbour1 < this.size && neighbour2 >=0 && neighbour2 < this.size){
    var currentneighbour = this.grid[ro + neighbour1][col+neighbour2];
    if(currentneighbour.alive){
    cell.num_of_neighbours++;
    }
    }
    }
    };

    GoL.prototype.updateAll = function(){
    for(var i=0; i<this.size;i++){
    for(var j=0; j<this.size;j++){
    this.update(i,j);
    }
    }
    }

    GoL.prototype.cellstatus = function(ro,col){
    var cell = this.grid[ro][col];
    if(this.underpopulation(ro,col) || this.overpopulation(ro,col)){
    cell.alive = false;
    }else if(this.backtolife(ro,col)){
    cell.alive = true;
    }
    };

    GoL.prototype.allcellstatus = function(ro,col){
    for(var i=0; i<this.size;i++){
    for(var j=0; j<this.size;j++){
    this.cellstatus(i,j);
    }
    }
    };


    var gameoflife = new GoL(40);

    var interval = setInterval(function(){
    gameoflife.drawGrid();
    gameoflife.updateAll();
    gameoflife.allcellstatus();
    },1000);

    任何帮助,将不胜感激!

    最佳答案

    一些想法

    GoL.prototype.update = function (ro, col) {
    var cell = this.grid[ro][col];
    cell.num_of_neighbours = 0;
    for (var i = 0; i < cell.checkneighbours.length; i++) { // change this to cell
    var direction = cell.checkneighbours[i]; // change this to cell, rename 'checkneighbour' to 'direction'
    var neighbour1 = direction[0];
    var neighbour2 = direction[1];
    if (neighbour1 >= 0 && neighbour1 < this.size && neighbour2 >= 0 && neighbour2 < this.size) {
    var currentneighbour = this.grid[ro + neighbour1][col + neighbour2]; // add here some error checking for out of range!
    if (currentneighbour.alive) {
    cell.num_of_neighbours++;
    }
    }
    }
    };

    关于javascript - 用Java编写Conways Life of Life错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35627349/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com