gpt4 book ai didi

java - 用java创建生活游戏

转载 作者:行者123 更新时间:2023-12-02 06:32:57 25 4
gpt4 key购买 nike

我正在制作一款生活游戏。

以下代码旨在检查一个点有多少个邻居。

public int neighbours(int x, int y){
int result = 0;
if(x!=0 && y!=0 && y!=getHeight() && x!= getLength()){
if (life[x - 1][y + 1] == 1)
result++;
else if (life[x][y + 1] == 1)
result++;
else if (life[x + 1][y + 1] == 1)
result++;
else if (life[x + 1][y] == 1)
result++;
else if (life[x + 1][y - 1] == 1)
result++;
else if (life[x][y - 1] == 1)
result++;
else if (life[x - 1][y - 1] == 1)
result++;
else if (life[x - 1][y] == 1)
result++;
} else if(x==0 && y==0){
if (life[x][y + 1] == 1)
result++;
else if (life[x + 1][y + 1] == 1)
result++;
else if (life[x + 1][y] == 1)
result++;
}
else if(x==0 && y==getHeight()){
if (life[x + 1][y] == 1)
result++;
else if (life[x + 1][y - 1] == 1)
result++;
else if (life[x][y - 1] == 1)
result++;
}
else if(y==getHeight() && x==getLength()){
if (life[x][y - 1] == 1)
result++;
else if (life[x - 1][y - 1] == 1)
result++;
else if (life[x - 1][y] == 1)
result++;
}
else if(y==0 && x==getLength()){
if (life[x - 1][y + 1] == 1)
result++;
else if (life[x][y + 1] == 1)
result++;
else if (life[x - 1][y] == 1)
result++;
}
else if (x==0){
if (life[x][y + 1] == 1)
result++;
else if (life[x + 1][y + 1] == 1)
result++;
else if (life[x + 1][y] == 1)
result++;
else if (life[x + 1][y - 1] == 1)
result++;
else if (life[x][y - 1] == 1)
result++;
}
else if(y==getHeight()){
if (life[x + 1][y] == 1)
result++;
else if (life[x + 1][y - 1] == 1)
result++;
else if (life[x][y - 1] == 1)
result++;
else if (life[x - 1][y - 1] == 1)
result++;
else if (life[x - 1][y] == 1)
result++;
}
else if(x==getLength()){
if (life[x - 1][y + 1] == 1)
result++;
else if (life[x][y + 1] == 1)
result++;
else if (life[x][y - 1] == 1)
result++;
else if (life[x - 1][y - 1] == 1)
result++;
else if (life[x - 1][y] == 1)
result++;
}
else if(y==0 && x!=getLength() && x!=0){
if (life[x - 1][y + 1] == 1)
result++;
else if (life[x][y + 1] == 1)
result++;
else if (life[x + 1][y + 1] == 1)
result++;
else if (life[x + 1][y] == 1)
result++;
else if (life[x - 1][y] == 1)
result++;
}
return result;
}

如您所见,我已尝试解决所有异常,但程序不断给出以下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 30
at LifeGrid.neighbours(LifeGrid.java:165)
at LifeGrid.run(LifeGrid.java:179)
at TestLife.main(TestLife.java:15)

你们知道为什么当我处理了所有可能的异常时仍然会发生越界异常吗?

最佳答案

您需要检查< getHeight/Width(),而不是==。如果它是 == getHeight 或 getWidth 它将超出范围。

关于java - 用java创建生活游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19914625/

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