从0开始的QT项目:扫雷

您所在的位置:网站首页 扫雷游戏教学计划怎么写 从0开始的QT项目:扫雷

从0开始的QT项目:扫雷

2024-07-16 00:29| 来源: 网络整理| 查看: 265

从0开始的QT项目:扫雷

文章目录 从0开始的QT项目:扫雷前言项目文件概览效果图主要功能及其实现生成随机地图设定几个参数变量初始化扫雷棋盘上的各种图片设置图片大小画图函数 鼠标事件主要部分——确定画布是否需要重绘,以及重绘时参数的改变dfs搜索空格子胜利条件判断 其他功能重新开始游戏重设地雷数量重设地图大小 其他说明在关闭主窗口的同时关闭子窗口设置窗口名称,图标,窗口大小 打包后的可运行文件

前言

本文所示项目使用QT开发,已经学过很久了,突然想起来想要整理一下,就做了一个“扫雷”的小游戏。由于开发时间比较短(只用了一天不到),做的也就比较粗糙。另外打包时还出了点问题,打包出来的exe文件总是不显示图片,就导致exe启动的游戏无法进行(在bin文件夹下是有的,但单独拿出来就没了),尝试了网上的许多方法,包括改绝对路径,加dll文件等,均未果。最后发现把jpg文件改成png文件就好了(有jpg的dll用jpg还是有问题)。

项目文件概览

在这里插入图片描述

效果图

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

主要功能及其实现 生成随机地图

主要包括生成随机地图并以数组的形式记录,和以贴图的形式在前端展示两个部分。

设定几个参数变量 int boom[10][10];//记录该点是否炸弹或数字 int flag[10][10];//记录该点有没有被亮出 int air[10][10];//保证dfs遍历不会循环 int sign[10][10];//插旗子 int cover[10][10];//保证炸弹不重复 SubWeight w1;//失败界面 successweight w2;//成功界面 int see;//是否为棋盘可见不可动状态 int mine_num;//地雷数 int map_long;//地图长 int map_wide;//地图宽 初始化

这里要注意不能让地雷重合起来,可以开一个数组记录该位置是否已有地雷存在。

void MainWindow::init(int number,int m_long,int m_wide) { w1.close(); w2.close(); mine_num=number; map_long=m_long; map_wide=m_wide; see=0; memset(boom,0,sizeof(boom)); memset(air,0,sizeof(air)); memset(sign,0,sizeof(sign)); srand(time(NULL)); memset(cover,0,sizeof(cover)); int x[10]; int y[10]; int num=0; while(numsetText("10"); mine_num=10; } } 重设地图大小 void MainWindow::on_pushButton_3_clicked() { QString qstr1=ui->lineEdit_2->text(); QString qstr2=ui->lineEdit_4->text(); bool ok1; bool ok2; int number1=qstr1.toInt(&ok1,10); int number2=qstr2.toInt(&ok2,10); if(ok1==1&&ok2==1&&number1>0&&number10&&number2mine_num) { map_long=number1; map_wide=number2; on_pushButton_clicked(); } else { QMessageBox::about(NULL, "提示", "错误,雷区数应大于地雷数"); ui->lineEdit_2->setText("10"); ui->lineEdit_4->setText("10"); map_long=10; map_wide=10; } } else { QMessageBox::about(NULL, "提示", "错误,请输入 1~10以内的正整数"); ui->lineEdit_2->setText("10"); ui->lineEdit_4->setText("10"); map_long=10; map_wide=10; } } 其他说明 在关闭主窗口的同时关闭子窗口

在子窗口的cpp中声明:

setAttribute(Qt::WA_QuitOnClose,false); 设置窗口名称,图标,窗口大小 setWindowTitle("扫雷"); setWindowIcon(QIcon("://image/logo.jpg")); this->setFixedSize(800,500); //设置窗体固定大小 打包后的可运行文件

链接: https://pan.baidu.com/s/1Hpyuyn_cUGuKuIG-GK027Q 提取码: huxt



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3