gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:25:40 27 4
gpt4 key购买 nike

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

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

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

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

(顺便说一下,这都是用java编写的)

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

最佳答案

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

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

关于java - 如何声明其位置导致棋盘对象更新棋子并将棋子存储在给定位置的棋子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15913111/

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