Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 康威';s的生活游戏没有';I don’我没有按预期工作_Java_Conways Game Of Life - Fatal编程技术网

Java 康威';s的生活游戏没有';I don’我没有按预期工作

Java 康威';s的生活游戏没有';I don’我没有按预期工作,java,conways-game-of-life,Java,Conways Game Of Life,我在尝试创建康威的java生活游戏。我的代码没有问题,但是游戏的输出有问题。按预期工作,但所有移动的结构都以不同的方式结束 例如:1是活细胞;0是一个死区 在wiki页面上有一个振荡器,即闪烁器。在我的例子中,它的行为如下: 我在一个applet中做所有的事情,我把它添加到一个jframe中。 以下是小程序代码(忽略德语注释,除非您是德语:P): import java.applet.applet; 导入java.awt.Color; 导入java.awt.Dimension; 导入java.

我在尝试创建康威的java生活游戏。我的代码没有问题,但是游戏的输出有问题。按预期工作,但所有移动的结构都以不同的方式结束

例如:1是活细胞;0是一个死区

在wiki页面上有一个振荡器,即闪烁器。在我的例子中,它的行为如下:

我在一个applet中做所有的事情,我把它添加到一个jframe中。 以下是小程序代码(忽略德语注释,除非您是德语:P):

import java.applet.applet;
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.Graphics;
导入java.awt.Image;
导入java.awt.event.MouseEvent;
导入java.awt.event.MouseListener;
公共类画布扩展小程序实现MouseListener{
私有静态最终长serialVersionUID=-9195952699213522986L;
私有布尔值[][]单元格;//True lebt;false ist tod
私人单位宽度;
私人净利润率=2;
私有整数步长=0;
私有布尔值isRunning=false;
公共画布(int-size,int-cv){//size=50;cv=10;
addMouseListener(这个);
单元格=新布尔值[size][size];
细胞宽度=cv;
//泽伦·弗伦
对于(int i=0;i3){
newCells[i][j]=假;
}
//好的
else if(邻居==2 | |邻居==3){
newCells[i][j]=真;
}
}
//托特泽勒
如果(!cells[i][j]){
//新泽伦威德格博伦酒店
如果(邻居==3){
newCells[i][j]=真;
}
}
}
}
细胞=新细胞;
System.out.println(“步骤”+(++Step));
}
私有整数邻域(整数x,整数y){
int=0;

对于(inti=x-1;i来说,这是一个复杂的算法,所以我不能保证在这之后它会工作,但是其余的代码看起来还可以

boolean[][] newCells = cells.clone();
好的,clone()执行卷影复制,这对基本体很有效。但它不适用于二维数组(用作一维数组的一维数组)。因此,您仍然有一个浅拷贝


这样做之后,在所有计算结束之前,您实际上是在覆盖旧数组,这是正常的,因为新的和旧的数组应该是相同的,对于其他情况,您会发现错误。

这是一个复杂的算法,因此我不能保证在此之后它会工作,但其余代码看起来正常

boolean[][] newCells = cells.clone();
好的,clone()执行卷影复制,这对基本体很有效。但它不适用于二维数组(用作一维数组的一维数组)。因此,您仍然有一个浅拷贝


这样做之后,在所有计算结束之前,您实际上是在覆盖旧数组,这是可以的,因为新的和旧的数组应该是相同的,对于其他情况,您会发现错误。

也许您应该描述正在发生的事情与您期望的事情,以及您特别询问的代码中的位置——否则它大约有150多行代码,我们必须理解其中的大部分,然后才能提供帮助。请不要理解
ArrayIndexOutOfBoundsException
如下所示。单击。只需确保您仅访问多维数组上的有效数组索引…Is
clone()
(内部
update()
)做你期望它做的事?你如何运行你的应用程序?小程序需要一个无参数构造函数。你用什么值来表示大小和cv?在查看代码之前,作为一个猜测,如果静止的可以工作,但是移动的不能,我想你在切换/清除以前的游戏状态时有问题。确保你签入了在你的打开/关闭代码中更新的电路板状态。也许你应该描述一下发生了什么