- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写 Conway 的生命游戏 java 代码,我正在努力使用我的更新方法(也称为下一代创建者)。我将发布我到目前为止编写的代码,请让我知道我可以做些什么来修复更新方法。
如果在时间 T 没有细胞,则细胞诞生1 并且它的三个邻居还活着。
如果在时间 T,现有细胞仍然存活1 有两个或三个邻居
如果在时间 T,一个细胞因隔离而死亡1 邻居少于两个。
如果在时间 T 时,细胞会因过度拥挤而死亡1 有三个以上的邻居。
public class GameOfLife {
private char [][] grid;
private int rows;
private int columns;
public GameOfLife(int rows, int columns) {
grid=new char[rows][columns];
for(int i=0;i<grid.length;i++)
{
for(int j=0;j<grid[i].length;j++)
grid[i][j]=' ';
}
}
public int numberOfRows() {
int countRows=0;
for(int i=0;i<grid.length;i++){
countRows++;
rows=countRows;
}
return rows;
}
public int numberOfColumns() {
int countColumns=0;
for(int i=0;i<1;i++){
for(int j=0;j<grid[i].length;j++)
countColumns++;
columns=countColumns;
}
return columns;
}
public void growCellAt(int row, int col) {
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[i].length;j++)
grid[row][col]='O';
}
}
public boolean cellAt(int row, int col) {
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[i].length;j++)
if(grid[row][col]=='O')
return true;
}
return false;
}
public String toString() {
String result="";
for(int i=0;i<rows;i++){
for(int j=0;j<columns;j++)
result+=grid[i][j];
}
return result;
}
public int neighborCount(int row, int col) {
int count=0;
int i=row;
int j=col;
int left;
int right;
int up;
int down;
if(i > 0)
up = i-1;
else
up = grid.length-1;
if(i < (grid.length-1))
down = i+1;
else
down = 0;
if(j > 0)
left = j-1;
else
left = grid[i].length - 1;
if(j < (grid[i].length-1))
right = j+1;
else
right = 0;
if(grid[up][left] == 'O')
count++;
if(grid[up][j] == 'O')
count++;
if(grid[up][right] == 'O')
count++;
if(grid[i][left] == 'O')
count++;
if(grid[i][right] == 'O')
count++;
if(grid[down][left] == 'O')
count++;
if(grid[down][j] == 'O')
count++;
if(grid[down][right] == 'O')
count++;
return count;
}
public void update() {
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[i].length;j++){
if(grid[i][j]==' ' && neighborCount(i,j)==3)
grid[i][j]='O';
if(neighborCount(i,j)<2 || neighborCount(i,j)>3)
grid[i][j]= ' ';
if(grid[i][j]=='O' && neighborCount(i,j)==2 || neighborCount(i,j)==3)
grid[i][j]='O';
}
}
}
}
好的,关于在更新方法中创建一个新数组,这就是所有需要做的吗?另外,我将如何为更新方法进行断言测试?
public void update() {
char[][] newGrid = new char[grid.length][grid[0].length];
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[i].length;j++){
if(grid[i][j]==' ' && neighborCount(i,j)==3)
newGrid[i][j]='O';
if(neighborCount(i,j)<2 || neighborCount(i,j)>3)
newGrid[i][j]= ' ';
if(grid[i][j]=='O' && neighborCount(i,j)==2 || neighborCount(i,j)==3)
newGrid[i][j]='O';
}
}
}
最佳答案
看起来您正在尝试修改您正在循环访问的同一个网格。当您遍历网格时,应根据网格的先前 状态进行更改。尝试构建一个新网格而不是覆盖旧网格。
关于java - 康威的生命游戏更新(下一代),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077030/
我正在编写 Conway 的生命游戏 java 代码,我正在努力使用我的更新方法(也称为下一代创建者)。我将发布我到目前为止编写的代码,请让我知道我可以做些什么来修复更新方法。 如果在时间 T 没有细
Some articles指出 Windows 8 开发是基于 HTML 的,而不是主要使用像 C 或 C++(直到现在)或 .NET(就像现在一样,或者甚至更多,就像它在 Longhorn 中那样,
当一个函数需要返回两个参数时,你可以使用 std::pair 编写它: std::pair f() {return std::make_pair(1,2);} 如果你想使用它,你可以这样写: int
我将 NextGen Gallery 插件添加到我的 wordpress 安装中,但出于某种原因,CSS 无法正常工作。你可以在这里看到:http://cbchaverhill.onedirectio
我真的很想创建一个外观漂亮的 GUI 桌面应用程序,例如: Mac OS X 界面 Windows 上的 Picasa 桌面客户端 iPhone 应用程序 办公室 2007 我一直在使用 Qt/Swi
Closed. This question is opinion-based。它当前不接受答案。 想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。 5年前关闭。
Tailwind CSS 作者 Adam Wathan 宣布了一个新项目:用于 Tailwind CSS 的 JIT 编译器 tailwindcss-jit,目前处于实验性阶段。 据介绍,
我尝试在 OpenShift Online Next Gen 中使用常规 EBS 持久存储卷,并在尝试部署时遇到以下错误: Unable to mount volumes for pod "p
我需要在 .jsp 页面上部署一个小程序,并希望利用使用 JNLP 时获得的延迟加载和 pack200。但是,我的客户没有在他们的计算机上启用下一代 Java 插件,并且他们不想启用它。这意味着我无法
我想评估 OpenShift(下一代)。然而,在第一步我遇到了一个阻止我继续的问题。为了从命令行创建应用程序,文档说要执行命令: $ oc new-app /path/to/source/code 很
我是一名优秀的程序员,十分优秀!