“二吃一”棋类游戏设计思路
设计语言 :c++,qt库
设计文件汇总
- chess.h
- chessform.h
- help.h
- one.h
- chess.cpp
- chessform.cpp
- help.cpp
- main.cpp
- one.cpp
- chess.ui
- help.ui
- one.ui
- black.png
- white.png
- board.png
- help.png
- Minecraft.jpg
- one.jpg
设计思路
1 棋盘绘制
- chess.cpp
1.1 棋盘背景设置
void Chess::paintEvent(QPaintEvent *)
painter.drawPixmap()//导入背景图board, 棋盘底
1.2 棋格线绘制
void Chess::resizeEvent(QResizeEvent *event) //设置长宽
void Chess::paintEvent(QPaintEvent *)
QPen //绘制棋格线
根据页面的长宽设定起始坐标,格子宽度成比例进行绘制,形成4*4的棋盘
2 棋子控制
2.1 棋子设置
void Chess::InitChess() //初始化棋盘数据
根据坐标定位每个格子的位置,和旗子进行对应。
void Chess::paintEvent(QPaintEvent *)
QString chessFilename ; QPaint;
void Chess::mousePressEvent(QMouseEvent *event) //鼠标控制落子,鼠标右键获取的精确坐标除以格子宽度取整,一边归一化每个格子的坐标
void Chess::setChessStatus(void *p) //加载棋子数据 刷新
3 界面设置
- chessform.cpp
3.1 ui设计在ui文件中直接拖动控件,实现布局
3.2 在界面中显示棋盘在chessform中调用chess.h
void ChessForm::Init()
3.3绘制当前窗体背景
void paintEvent(QPaintEvent *) //MIinecraft.jpg
3.4拖动控件,设置双方3.3.1 void ChessForm::Init()
3.3.2 void RoleInit(const QString whiteFilename, const QString blackFilename)
3.3.3 人人对战
转到槽 void ChessForm::on_btn_pvp_clicked()
界面初始化
void setRole(Chess::ChessType currentRole);//设置谁先
Chess::ChessType currentRole
棋盘初始化
void setChessInit()//将Chess::InitChess()移植
int formchessData[4][4];
void setChessStatus //将窗体里的数据传到棋盘里面去
3.3.4 传送信号
在ChessForm::Init()中 connect(mychess, SIGNAL(SignalSendChessData(int, int), this, SLOT(doProcessChessData(int, int))
void ChessForm::doProcessChessData(int i, int j)
4 增加吃子规则
4.1 通过基于mousePressEvent的Chessform;;doProcessChessData
调用blackk函数
int blackk(int playerr, int x_1, int y_1, int x_2, int y_2)
int black( int player, int x_1, int y_1, int x_2, int y_2)
int move1;//移动
int near;//判断相邻
int delete_chess;
int check;
int import;//判断合法
5.规则实现
5.1 通过鼠标点击输入坐标给blackk函数,返回赢家
5.2 通过条件判断,与RoleInit产生联系,控制双方图片的显示,最后剩下的为赢家。
5.3 加入QTimer *myTimer,对双方进行计时,超过规定时间,判对方胜利。
6.多个页面的传递
6.1 绘制起始页面 one. cpp 起始页面为maindow形式,加入菜单栏(下拉显示作者,版本号,联系方式等信息),设置两个按钮,一个通向游戏界面,一个通向帮助界面。同时在游戏界面设置按钮,向起始页面发送信号,点击重新回到起始页面。void Initt()
void on_pushButton_clicked()
void doProcesschessformRequest()
void doProcessClinkhelp()
6.2 绘制帮助界面,帮助界面中用pixmap呈现游戏规则
void paintEvent(QPaintEvent *)
7.main函数
main函数中调用one.h,呈现起始页