QT之中国象棋(1)

因为一直喜欢下象棋,今天动手实践一下用QT实现中国象棋!先看下效果。。。。。

QT之中国象棋(1)_第1张图片

1.我采用c++实现的,有以下几个类:

棋盘类

#include 
#include 
#include "stone.h"
class Board : public QWidget
{
    Q_OBJECT
public:
    explicit Board(QWidget *parent = 0);
    virtual void paintEvent(QPaintEvent*);  //painter
    void drawStone(QPainter&painter,int id);  //画棋子棋盘
    QPoint center(int hang,int lie);//返回棋子像素坐标
    QPoint center(int id);
    Stone _s[32];
    int _r;  //棋子半径
signals:

public slots:
};

#endif // BOARD_H

棋子类:难点是要处理初始化不同id画不同的字

class Stone
{
public:
    Stone();
    enum TYPE{JIANG,CHE,MA,PAO,BING,SHI,XIANG};
    int hang;
    int lie;
    int id;
    bool _dead;
    bool _red;
    TYPE  _type;
    QString getText()
    {
        switch(this->_type)
        {
        case CHE:return "车";
        case MA: return "马";
         case PAO:return "炮";
         case BING:return "兵";
         case JIANG:return "将";
         case SHI:return "士";
        case XIANG: return "相";
         //default:return "错误!";
        }
    }

--操作类(走法)

你可能感兴趣的:(小项目)