学习QT已经有几天了,做一个阶段性的小项目来熟练QT的使用,刚好学到绘图这一章,就一步步做一个暗棋游戏。
首先了解一下暗棋游戏基本知识:
每方共32个,分为红黑双组,各16个,双方轮流执行:
红棋子:兵5个、炮2个、车2个、马2个、相2个、仕2个、帅1个共16个棋子。
黑棋子:卒5个、炮2个、车2个、马2个、象2个、士2个、将1个共16个棋子。
首先进行棋盘的绘制,棋盘共32个格子。共9根竖线,5根横线。
效果:
代码如下:
//.h文件
#ifndef BOARD_H
#define BOARD_H
#include <QMainWindow>
#include <QPainter>
class Board : public QMainWindow
{
Q_OBJECT
public:
Board(QWidget *parent = 0);
~Board();
void paintEvent(QPaintEvent *);
};
#endif // BOARD_H
//cpp文件
#include "board.h"
Board::Board(QWidget *parent)
: QMainWindow(parent)
{
}
Board::~Board()
{
}
void Board::paintEvent(QPaintEvent *)
{
QPainter painter(this);
int firstpoint=40; //设置第一点边距
int chesssize=120; //设置棋子大小
//固定窗口大小
this->setMaximumSize(2*firstpoint+8*chesssize,2*firstpoint+4*chesssize); //设置窗口大小
this->setMinimumSize(2*firstpoint+8*chesssize,2*firstpoint+4*chesssize); //设置窗口大小
//绘制棋盘
for(int i=0;i<5;i++) //画5条横线
{
painter.drawLine(QPoint(firstpoint,firstpoint+i*chesssize)
,QPoint(firstpoint+chesssize*8,firstpoint+chesssize*i));
}
for(int i=0;i<9;i++) //画9条竖线
{
painter.drawLine(QPoint(firstpoint+chesssize*i,firstpoint)
,QPoint(firstpoint+i*chesssize,firstpoint+chesssize*4));
}
}