“二吃一”棋类游戏设计思路 -- qt5实现

“二吃一”棋类游戏设计思路


设计语言 :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,呈现起始页

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值