作为一种培养我的编程技巧的方法(到目前为止,我已经上了一门课),我给自己做了一个自我指定的项目。我正在努力建立一个可玩的国际象棋游戏。
方法:我想设计它,因此会有一个位置(列和行)的类,一个类型(int表示,int值,字符串名称,运动x)的类,其中移动是来自另一个类的引用。
然后,有一个方形类(位置,类型)。例如,每个正方形将被赋予一个位置和一个类型(例如空,典当等)。我想在square或'play'类之外初始化每种类型,因为我希望这些类型是预定义的。因此,当我声明Square 1 = new Square(P1,EMPTY)时,我可以使用预设类型和位置初始化方块。问题是我需要将'Empty'声明为全局类型,我不知道该怎么做。有谁看到我能做到这一点的方式?非常感谢您的帮助。如果有帮助,我正在使用oracle版本。
答案 0 :(得分:0)
我不会选择“类型”,因为根据与之相关的棋子来改变类型并不太有意义。如果您坚持下去,那就这样吧,并按照评论中的建议使用enum
。
public enum SquareType {
KING, QUEEN, ... , EMPTY
}
如果我不想这样做,而我不这样做,我会做两件事之一:
position
件并将其替换为Square
,因为这也是位置。 Square
中添加对棋子的引用;如果引用为null
,则表示它为空。因为一块棋子不能放在棋盘上而不是在正方形上,所以你可以通过这种方式减少冗余,并且不需要“全局”标识符。
在分配游戏板时,我会制作一个2D阵列(也建议),我会这样做:
// For a non-empty square
board[row][col] = new Square(new ChessPiece(...), ...);
// For an empty square
board[row][col] = new Square(null, ...);