资源简介
QT 扫雷程序源码,QT Create 5.11编写,防系统扫雷程序,高,中,低级。

代码片段和文件信息
#include
#include
#include “game_model.h“
GameModel::GameModel()
: mRow(kRow)
mCol(kCol)
totalMineNumber(kMineCount)
timerSeconds(kTime)
gameState(PLAYING)
{
// 在构造函数里面不做具体初始化,因为构造函数的调用时间不确定
}
GameModel::~GameModel()
{
}
void GameModel::createGame(int row int col int mineCount GameLevel level)
{
// 先清空已经有的游戏地图
gameMap.clear();
// 设置成员变量
mRow = row;
mCol = col;
totalMineNumber = mineCount;
curMineNumber = mineCount;
gameState = PLAYING;
gameLevel = level;
timerSeconds = 0;
// 初始化雷方块
for(int i = 0; i < mRow; i++)
{
//添加每行的block
std::vector lineBlocks;
for(int j = 0; j < mCol; j++)
{
MineBlock mineBlock;
mineBlock.curState = UN_DIG; // 默认都是未挖掘
mineBlock.valueFlag = 0; // 默认都是0
lineBlocks.push_back(mineBlock);
}
gameMap.push_back(lineBlocks);
}
// 随机布雷
srand((unsigned int)time(0));
int k = totalMineNumber;
while(k > 0)
{
// 埋雷并防止重叠
int pRow = rand() % mRow;
int pCol = rand() % mCol;
if(gameMap[pRow][pCol].valueFlag != -1)
{
gameMap[pRow][pCol].valueFlag = -1;
k--; // 如果原来就有雷重新循环
}
}
// 计算雷周围的方块数字
for(int i = 0; i < mRow; i++)
{
for(int j = 0; j < mCol; j++)
{
// 周围八个方块(排除自己,在地图范围内)的数字根据雷的数目叠加
// y为行偏移量,x为列偏移量
// 前提条件是本方块不是雷
if(gameMap[i][j].valueFlag != -1)
{
for(int y = -1; y <= 1; y++)
{
for(int x = -1; x <= 1; x++)
{
if(i + y >= 0
&& i + y < mRow
&& j + x >= 0
&& j + x < mCol
&& gameMap[i + y][j + x].valueFlag == -1
&& !(x == 0 && y == 0))
{
// 方块数字加1
gameMap[i][j].valueFlag++;
}
}
}
}
}
}
}
void GameModel::restartGame()
{
createGame(mRow mCol totalMineNumber gameLevel);
}
void GameModel::digMine(int m int n)
{
// 正常方块且没有被翻开过,标记为已挖
if(gameMap[m][n].valueFlag > 0
&& gameMap[m][n].curState == UN_DIG)
{
gameMap[m][n].curState = DIGGED;
}
// 遇到空白块(数字0)就递归挖雷,如果踩雷就爆掉游戏结束
if(gameMap[m][n].valueFlag == 0
&& gameMap[m][n].curState == UN_DIG)
{
gameMap[m][n].curState = DIGGED;
for(int y = -1; y <= 1; y++)
{
for(int x = -1; x <= 1; x++)
{
if(m + y >= 0
&& m + y < mRow
&& n + x >= 0
&& n + x < mCol
&& !(x == 0 && y == 0))
{
digMine(m + y n + x);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-07-11 10:49 QtMineSweep-master\
文件 453 2016-07-11 10:49 QtMineSweep-master\QtMineSweep.pro
文件 23882 2016-07-11 10:49 QtMineSweep-master\QtMineSweep.pro.user
文件 568 2016-07-11 10:49 QtMineSweep-master\README.md
文件 5402 2016-07-11 10:49 QtMineSweep-master\game_model.cpp
文件 1663 2016-07-11 10:49 QtMineSweep-master\game_model.h
文件 182 2016-07-11 10:49 QtMineSweep-master\main.cpp
文件 8657 2016-07-11 10:49 QtMineSweep-master\main_game_window.cpp
文件 954 2016-07-11 10:49 QtMineSweep-master\main_game_window.h
文件 1747 2016-07-11 10:49 QtMineSweep-master\maingamewindow.ui
目录 0 2016-07-11 10:49 QtMineSweep-master\pic\
文件 8997 2016-07-11 10:49 QtMineSweep-master\pic\1.PNG
文件 10341 2016-07-11 10:49 QtMineSweep-master\pic\2.PNG
文件 11912 2016-07-11 10:49 QtMineSweep-master\pic\3.PNG
文件 11727 2016-07-11 10:49 QtMineSweep-master\pic\4.PNG
文件 8342 2016-07-11 10:49 QtMineSweep-master\pic\5.PNG
文件 24510 2016-07-11 10:49 QtMineSweep-master\pic\game.gif
目录 0 2016-07-11 10:49 QtMineSweep-master\res\
文件 15654 2016-07-11 10:49 QtMineSweep-master\res\blocks.bmp
文件 6966 2016-07-11 10:49 QtMineSweep-master\res\faces.bmp
文件 32054 2016-07-11 10:49 QtMineSweep-master\res\fr
文件 16854 2016-07-11 10:49 QtMineSweep-master\res\timenumber.bmp
文件 203 2016-07-11 10:49 QtMineSweep-master\resource.qrc
- 上一篇:sln转换为dsw
- 下一篇:canvas行走的小人
相关资源
- mgn-mqt82.exe
- Trojan-Qt5-Windows-0.0.4.rar
- 酒店管理系统基于Qt Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- linux扫雷游戏代码
- 扫雷(MVC架构)
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- Mini6410 Qt4和Qtopia编程开发指南
评论
共有 条评论