【Qt象棋游戏】03_象棋棋子摆放

01 - 加载棋子UI资源

  添加制作好的棋子UI图片到项目的资源文件,这样做的好处是生成.exe可执行文件或交叉编译移植系统,不需要把棋子UI资源再拉取到对应文件夹。添加流程是:右击项目工程 - 添加新文件 - Qt - Qt Resource File - 文件命名 - Open inEditor - 添加 - 添加前缀 - 添加 - 添加文件
  具体操作参考:[Qt如何添加资源文件]
添加棋子资源文件后工程

02 - 添加棋子属性类

  想要棋盘实现棋子放置,需要先添加棋子属性类,这个棋子属性类提供了棋子id、棋子颜色、棋子类型、棋子是否已死和棋子所在棋盘的坐标,在棋盘上摆放好棋子之后,也代表了各个棋子坐标、id、颜色、类型等固定,后面根据这个坐标来进行象棋规则执行。
  添加棋子属性类:chess.cpp 和 chess.h,首先chess.h实现成员接口:

#ifndef CHESS_H
#define CHESS_H

#include <QWidget>

class Chess : public QWidget
{
   
    Q_OBJECT

public:
    // 枚举的 车=0 马=1 炮=2 兵=3 将=4 士=5 相=6
    enum   TYPE{
    CHE, MA, PAO, BING, JIANG, SHI, XIANG };

public:
    explicit Chess(QWidget *parent = 0);

    void initChess(const int id);   // 初始化棋子
    QString getChessType();         // 得到棋子类型

public:
    int     row;        //棋子所处的行
    int     col;        //棋子所处的列
    int     chessID;    //棋子的ID
    bool    isDead;     //棋子是否已死
    bool    isRed;      //棋子是否为红子
    TYPE    chessType;  //棋子类型

};

#endif // CHESS_H

  接着在chess.cpp实现成员接口具体方法:

/**
 *
 *  @brief : 初始化棋子属性信息
 *  @param : id : 需要初始化棋子ID
 *  @return: 无
 *
 **/
void Chess::initChess(const int id)
{
   
    if(id<0 || id>31){
   
        return;
    } else {
   
        chessID = id;
        isDead  = false;
    }

    if(id < 16){
   
        isRed = true;
    } else {
   
        isRed = false;
    }
        
    switch(id) {
   
        case 0:  {
    row = 0; col = 9; chessType = CHE;   } break; //red_che
        case 1:  {
    row = 1; col = 9; chessType = MA;    } break; //red_ma
        case 2:  {
    row = 2; col = 9; chessType = XIANG; } break; //red_xaing
        case 3:  {
    row = 3; col = 9; chessType = SHI;   } break; //red_shi
        case 4:  {
    row = 4; col = 9; chessType = JIANG; } break; //red_jiang
        case 5:  {
    row = 5; col = 9; chessType = SHI;</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值