【问题标题】:How to declare chess pieces whose location causes the chess board object to update and store the piece at the given location如何声明其位置导致棋盘对象更新并将棋子存储在给定位置的棋子
【发布时间】:2013-04-09 21:42:08
【问题描述】:

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

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

就用户输入已被占用的位置而言,我完全不知道如何将其转换为代码。

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

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

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

【问题讨论】:

  • 另见examplevariation
  • capitals represent pieces on white squares, lowercase are pieces on black squares 没有意义。可能您的意思是“大写代表白人球员的棋子,小写代表黑人球员的棋子”。否则,我不认为根据它所在的位置来改变它的表示是一个好主意。
  • 对不起,我的意思是黑白片,不是正方形,我的错
  • 开始编码。当您完成大约一半时,将其扔掉并重新开始。这是唯一的方法。
  • @Adel 我的错,我一完成就看到了,把我自己的编辑回滚给你。

标签: java object location chess


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    相关资源
    最近更新 更多