因为一直喜欢下象棋,今天动手实践一下用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 "错误!";
}
}
--操作类(走法)