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;</