1

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

我应该将这些片段声明为实例变量吗?还是我应该主要声明它们?

至于用户输入一个已经被占用的位置,我完全不知道如何将其转换为代码。

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

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

任何帮助将不胜感激!!提前致谢!让我知道查看我的一些代码是否会有所帮助。

4

1 回答 1

2

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

如果您需要实现过路人,那么您可能需要一个单独的规则引擎,碎片可以查询它们的合法移动 - 碎片将是无状态的,并且规则引擎将携带确定 pawn 是否可以捕获所需的状态信息过路人,或者如果由于三步重复而导致平局。

于 2013-04-09T21:53:37.413 回答