1. 程式人生 > >QT之中國象棋(1)

QT之中國象棋(1)

因為一直喜歡下象棋,今天動手實踐一下用QT實現中國象棋!先看下效果。。。。。

1.我採用c++實現的,有以下幾個類:

棋盤類

#include <QWidget>
#include <QPainter>
#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 "錯誤!";
        }
    }

--操作類(走法)