gpt4 book ai didi

java - 编写国际象棋游戏,无法从另一个方形物体中获取一个方形物体

转载 作者:太空宇宙 更新时间:2023-11-04 14:15:17 25 4
gpt4 key购买 nike

我正在编写一个国际象棋游戏。我的基本设计是有一个由方形对象组成的二维数组(8 x 8)。 Squares 有许多字段,包括 file(字符)和rank(int)。

我的 getNewSquare 方法采用一个起始正方形并返回其上方的[垂直]正方形和其右侧的[水平]正方形。负参数只是朝相反的方向发展。如果参数让我们离开董事会,该方法应该返回 null。

public static Square getNewSquare (Square start, int vertical, int horizontal) {
int squareNumber = start.getNumberFromSquare();
//see if too far right or left
if ((int) (start.file - 'a') + horizontal >= 8 || (int) (start.file - 'a') + horizontal < 0) {
return null;
//see if too far up or down
} else if ( start.rank + vertical >= 8 || start.rank + vertical < 0) {
return null;
//otherwise
} else {
squareNumber += (8 * vertical + horizontal);
return getSquareFromNumber(squareNumber);
}
}

我有两个辅助函数,getNumberFromSquare 和 getSquareFromNumber。基本上每个方形物体都有一个数字。左上角是 0,右下角是 63。从左到右、从上到下递增。

public int getNumberFromSquare() {
return (int) (this.file - 'a') + (8 - this.rank) * 8;
}

public static Square getSquareFromNumber(int candidate) {
char myFile = (char) (candidate % 8 + 'a');
int myRank = 8 - (candidate / 8);
return new Square(myFile, myRank);
}

当我运行此代码时:

Square south = Square.getNewSquare(start, -1, 0);
System.out.println("starting south square is " + south.getFile() + south.getRank());

我得到“从南广场开始是a9”,这应该是不可能的,因为不允许> 8 的等级。

知道这里出了什么问题吗?

最佳答案

您的测试似乎运行 0 到 8(含)之间的内容;当然,它们应该是 0 到 7。但是您应该将其放入带有一些测试调用的调试器中并进行调试,如果不这样做,试图找出问题所在就没有什么意义。

关于java - 编写国际象棋游戏,无法从另一个方形物体中获取一个方形物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27830965/

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