01 - 象棋规则
经过两篇前面棋盘和棋子绘制,象棋框架基本成型,紧接着要实现象棋走棋规则,让象棋游戏真正能“动起来”。
象棋规则中:马走日,象走田;,车走直,炮隔一, 士走斜,将不出田;,兵去不还。这是象棋棋子行走规则的基本规则,下面看看详细分析象棋移动步骤。
02 - 棋子移动规则
根据象棋规则制定棋子移动规则,简而言之就是通过代码判断选中棋子能不能移动?如果能移动,那么该棋子就把它所在QLabel绘画到目标坐标,否则不能绘画,这就是移动棋子的基本思路,具体实现方法在后面讲解。现在先看下有哪些相关方法。
//----------- 判断各种类型棋子能不能移动 ------------//
bool canMove( int moveID, int killID, int x, int y);
bool canMoveSHI( int moveID, int killID, int x, int y);
bool canMoveBING( int moveID, int killID, int x, int y);
bool canMoveXIANG(int moveID, int killID, int x, int y);
bool canMoveMA( int moveID, int killID, int x, int y);
bool canMoveCHE( int moveID, int killID, int x, int y);
bool canMovePAO( int moveID, int killID, int x, int y);
bool canMoveJIANG(int moveID, int killID, int x, int y);
void getPicName(); // 获取棋子图片名字
bool existChess(int x, int y); // 判断坐标上有没有棋子
int getChessID(int x, int y); // 获取棋子的ID
void showDeadChess(int chessID); // 显示阵亡棋子数目