【Qt象棋游戏】06_象棋游戏法则

01 - 象棋游戏规则

  实现上两章节的棋子走棋规则后,开始思考象棋游戏规则,比如轮到谁走,怎么判断谁赢等等。
  实现轮到谁走的思路是使用Qt的信号与槽,通过发送信号和接收信号的方式通知轮到哪方下棋,具体实现如下:

//chessarea.h里面添加判断信号
signals:
	   void redTrueGo(bool b);         // 轮到哪一方走信号

//在widget构造函数上实现信号与槽(),可以看到到谁下棋
connect(chessarea, SIGNAL(redTrueGo(bool)), red,   SLOT(showRun(bool)));
connect(chessarea, SIGNAL(redTrueGo(bool)), black, SLOT(showRun(bool)));

  判断游戏是否结束,可以判断双方的将是否被吃,谁放将被吃,则对方胜出,具体的实现在moveChess函数中。

/**
 *
 *  @brief : 移动一个棋子
 *
 *  @param : moveID : 移动棋子ID
 *           killID : 目标棋子ID (如果无棋子,默认-1)
 *           x      : x轴坐标
 *           y      : y轴坐标
 *
 *  @return: 无
 *
 **/
void ChessArea::moveChess(int moveID, int killID, int x, int y)
{
   
    // 判断是否结束游戏
    int selectBox = 0;

    if(killID != -1)
    {
   
        myChess[killID].isDead  = true;
        myChess[killID].row     = -1;
        myChess[killID].col     = -1;
        showDeadChess(myChess[killID]
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值