如何声明棋子的位置导致棋盘对象更新并将棋子存放在给定位置

时间:2013-04-09 21:42:09

标签: java object location chess

如果我正在设计一个简单的国际象棋游戏代码,我已经创建了我的电路板布局, 我想知道我是如何实现碎片(P, p, R, r, N, n, B, b, Q, q, K, k)(大写字母代表白色碎片,小写是黑色碎片),以便ChessBoard对象更新以将碎片存储在输入的位置?

我应该将这些碎片声明为实例变量吗? 或者我应该在主要声明它们?

就用户输入已经拍摄的位置而言,我完全迷失了如何将其转换为代码。

但是,如果用户的输入超出了电路板范围,我确实会实现显示错误消息的部分代码。

(顺便说一句,这都是在java中)

任何帮助将不胜感激!!提前致谢!如果看到我的一些代码会有所帮助,请告诉我。

1 个答案:

答案 0 :(得分:2)

几年前,我为“求职面试”实施了“国际象棋”。每个部分都是一个实例变量,并且有一个move()方法来确定该部分的合法移动是什么。董事会包含有关所有部件所在位置的信息,并且在确定其合法行动时会查询董事会(例如,一个棋子会查询董事会,看看是否有任何可以捕获的对角线对角件) 。 Piece是一个抽象类(并且该板包含Piece个对象的网格),PawnKnight等扩展Piece

如果你需要实现en passant,那么你可能需要一个单独的规则引擎,这些部分可以查询它们的合法移动 - 这些部分将是无状态的,并且规则引擎将携带确定是否需要的状态信息棋子可以通过en passant捕获,或者如果由于三次移动重复而实现平局。