我在写一个象棋游戏。我的基本设计是有一个二维阵列(8 x 8)组成的正方形对象。方格有许多字段:int height、int width和Piece Piece(如果为空则为null,否则为某种类型的Piece对象)。
NB:车,骑士,主教等都延伸件。
现在,在我的OOP设计中,我有点不知道如何确定对于给定的部分,什么移动是合法的。我是这么想的:
1)用户单击方块2)我们确定方块上的棋子(如果为空,则返回错误消息)3)在该方块上为该棋子生成合法移动
我担心编写的代码像:
if (clickedSquare.piece.instanceOf(Rook)) {
return Rook.getLegalDestinationSquares(clickedSquare);
} else if (clickedSquare.piece.instanceOf(Bishop)) {
return Bishop.getLegalDestinationSquares(clickedSquare);
} else if...
看来真的很糟糕。一定有一种方法可以更好地符合OOP,但我还在学习中。
谢谢你的帮助Mariogs
您不需要创建那个if语句。只需在字段中获取当前的部分并调用一些方法,如(getLegalMoves())或其他方法。如果字段为空-返回允许移动的空列表。
public abstract class Piece {
public abstract List<Field> getFieldsAllowed(Field field);
}
public class Rook extends Piece {
@Override
public List<Field> getFieldsAllowed(Field field) {
// TODO Auto-generated method stub
return null;
}
}
public class Field {
public Piece getPiece() {
// get current piece
}
}
像这样的东西。试着找到自己的解决方法。这个不完美。
我试图创建象棋游戏,所以我为象棋工具创建抽象类(皇后,国王,车...)我还创建了king工具来检查我的代码: 并创建game_board类: 问题是,当我尝试向矩阵添加对象时,它的show me错误:1 IntelliSense:不允许抽象类类型“King”的对象:纯虚函数“chess_tool::legal_movement”没有覆盖器 ....
fastapi 能做网页棋牌类游戏吗? 如象棋,五子棋,掼蛋等类型的后端。 几百人在线。 与django相比优势如何? 如果不合适。做这类网页游戏用什么语言好? go node.js ?谢谢
我正在学习Javascript,并作为一个项目作业在其中制作象棋游戏。我已经为Rook,Pawn,Knight和Bishop的移动编码了逻辑。现在我被女王运动困住了。一个女王的走位基本上都涉及到毕晓普和鲁克的走位逻辑。 我想做的是,当皇后被移动时,检查源磁贴的文件是否与目标磁贴相同。如果相同,则调用Rook的代码移动逻辑,否则调用Bishop的代码移动逻辑。例如,如果皇后被放置在d4(源平铺),并
本文向大家介绍Java棋类游戏实践之单机版五子棋,包括了Java棋类游戏实践之单机版五子棋的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java实现的五子棋游戏代码,分享给大家供大家参考,具体代码如下 一、实践目标 1.掌握JavaGUI界面设计 2.掌握鼠标事件的监听(MouseListener,MouseMotionListener) 二、实践内容
我试图为一个棋盘游戏找到一个更好的启发式函数,我将在代码后指定其规则。我的评估功能是: 初始板持有绿色和红色令牌,如图所示。人工智能先移动,使用与你相反的颜色,攻击你的代币。在黑色单元上,令牌可以正交(左、右、上、下)或对角移动。如果是在白血球上,你只能正交移动。 当您将令牌移动到对手令牌旁边时,您将删除该方向上所有对手的令牌。例如,如果我将绿色令牌从 C4 移动到 C5,我将杀死 C-6 到 C
本文向大家介绍Javafx实现国际象棋游戏,包括了Javafx实现国际象棋游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Javafx实现国际象棋游戏的具体代码,供大家参考,具体内容如下 基本规则 棋子马设计“日”的移动方式 兵设计只能向前直走,每次只能走一格。但走第一步时,可以走一格或两格的移动方式 请为后设计横、直、斜都可以走,步数不受限制,但不能越子的移动方式。 车只能横向