打地鼠游戏的设计与实现

在生活节奏不断加快的现代社会,轻松的益智游戏对缓解生活压力调节情绪具有重要意义,而打地鼠这一款游戏正好符合大众的心理。为了迎合众多用户的需求,开发了这款叫做打地鼠的小游戏,并且这款小游戏适合社会各阶层的人士,此外,它还有很强的娱乐性和交互性。

尽管现在市面上存在的游戏版本很多,可是打地鼠的市场还是很大的,原因就在于它能引人入深,爱不释手。随着游戏速度的逐渐加快,其刺激性也更强。可以说,游戏的优势不仅在于简单易行,而且在于他能很快顺利的运行。对于那些在外忙忙碌碌的人们,想让他们花费大量的时间在大型游戏上显然是不可能的,可是小游戏却能刚好迎合他们的需求。

本设计以C++为基础,通过Qt来设计实现,首先简单介绍了开发工具,然后从需求分析,总体设计,详细设计与实现等方面介绍了打地鼠游戏的设计与实现过程,最后给出了打地鼠的运行与测试情况。

1.绪论

1.1 背景

随着信息技术的飞速发展,5G时代已经到来。游戏也迎来了新的发展,现在电脑手机的功能已不仅仅是简单的工作、交际了,工作之余的娱乐享受也相当的重要。众多的用户都认为小型的休闲游戏是最受欢迎的。因为小型游戏非常方便,随时都可以玩。这些游戏可以缓解人们的工作压力,同时调动了人们的思维。我们开发的这款打地鼠小游戏,足以满足大多数用户的需求,并且与现在的手机规模相符合。

1.2 现状

现在越来越多的人注重精神层面的享受,游戏的出现让很多人喜欢上这一娱乐方式,游戏的娱乐可以带给人们轻松与欢笑,在电脑手机普遍后,这个现象更是明显。人们开始在网络上寻求娱乐方式,在空闲时间玩玩游戏打发时间,足不出户就可以与其他人交流。于是打地鼠这款游戏出现了,这款游戏简单操作简单,容易上手,毫不费力,对于时间少的人也是如此,玩玩小游戏,让生活变得轻松。

1.3 设计目标

本游戏需要满足以下几点要求:

(1) 打地鼠游戏界面设计

(2) 点击start、pause、stop按钮实现相应的功能。

(3) 实现地鼠随机出现并击中显示相应的分数。

(4) 实现游戏运行背景音乐

2.相关技术

此次项目中用到了C++、Qt。Qt是一个跨平台的C++应用程序开发框架,它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序。Qt使用标准的C++和特殊的代码生成扩展(称为元对象编译器Meta Object Compiler, moc)以及一些宏。

3、系统分析

3.1.可行性分析

打地鼠游戏是一款简单的大众游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,是一款家喻户晓的小游戏。

打地鼠的核心是通过定义地鼠按钮类,通过不同按钮进行控制游戏的进行,点击start按钮,随机产生地鼠,并且上下自由运动,锤子击中地鼠,地鼠迅速归洞,点击pause按钮,游戏暂停,界面保持暂停状态,点击start时地鼠继续运动,游戏继续进行,点击stop按钮,游戏结束,所有地鼠迅速归洞并且界面归为初始状态。

本次设计我将运用c++语言来完成。C++是一种面向对象的多范型语言,可以将面向对象的模型映射成为C++ 的结构。 C++面向对象的特性带来了全新的编程方法,这种方法是为应付复杂程度不断提高的现代编程任务而设计的。C++程序能够运行得很快,可直接操作系统资源,保持机器层次的实现细节。

3.2系统需求分析

3.2.1功能需求

本系统主要是完成打地鼠游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求:

(1)地鼠随机出现。

(2)击中地鼠显示相应分数。

(3)设置游戏倒计数,提醒玩家游戏结束。

3.2.2性能需求

本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。

3.2.3界面需求

游戏主界面模块:主要包括游戏图形区域界面、游戏开始按钮、暂停游戏按钮、关闭按钮、帮助按钮、显示分数、游戏结束倒计时。游戏的主界面力求美观,爽心悦目。

游戏控制模块:主要完成控制游戏的开始、暂停、退出等功能,这部分做到易懂、易操作而且准确率高,不易出错。

游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏分数的显示、地鼠按钮、游戏开始按钮、暂停游戏按钮、退出游戏按钮。这样才能给玩家一个良好的游戏氛围,从很大程度上决定了玩家对游戏的兴趣问题。

游戏控制模块是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。为了能够给玩家一个很好的游戏环境,这部分做到易懂、易操作。

4.总体设计

4.1 系统功能模块设计。

如图1。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mKz5XKI0-1687954900313)(file:///C:/Users/Morii/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)]

图1

本游戏将从页面需求(游戏名称、计分器、计时器、背景图、关闭按钮),地鼠按钮(鼠标移动事件,鼠标按下事件,鼠标放开事件,地鼠上下移动),鼠标动作按钮(当鼠标在地鼠按钮上移动和放开时,画个上扬的锤子,当鼠标在地鼠按钮上按下时,画个下落的锤子)以及分数显示(规定地鼠类型,分别给每只地鼠赋不同的分值,并记录总分在屏幕上显示)四个部分进行设计与实现。

5.系统详细设计与实现

5.1 开发环境的搭建

1、设备:windows10

2、支持软件:Qt

Qt是一个跨平台的C++应用程序开发框架,它提供给开发者建立图形用户界面所需的功能,对于开发打地鼠这款小游戏非常适合。

5.2 打地鼠的设计与实现

5.2.1 窗体设计。如图2:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UBP8gDnt-1687954900314)(file:///C:/Users/Morii/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif)]图2

5.2.2 Start按钮功能实现

//点击开始按钮 定时器开始 老鼠开始运动
void Widget::on_startBtn_clicked()
{//先判断游戏状态,进而进行操作//1.状态判断// 游戏运行过程中点 start按钮,啥都不干if(gameState == 1)return;//2.游戏暂停状态点 start按钮,做以下操作if(gameState == 2){//找到暂停的按钮,让其恢复运行(开启其定时器)//恢复其暂停状态为pauseState=falsefor(int i = 0; i < 8; i++){MyMouseBtn *mouseBtn = qobject_cast<MyMouseBtn *>(btnGroup->button(i));if(mouseBtn->getPauseState() == true){mouseBtn->startTimer();mouseBtn->setPauseState(false);}}//启动gameTimer定时器  继续随机产生老鼠gameTimer->start();}else if(gameState == 0){//3.游戏尚未开始情况(初始、上一局已结束) 操作//重新显示总分值ui->scoreLcd->display(totalScore);//开启gameTimer定时器gameTimer->start();}//修改游戏状态为运行gameState = 1;//开启倒计时定时器countTime->start();
}

5.2.3 Pause按钮功能实现

//点击暂停按钮 定时器暂时关闭 老鼠暂停运动
void Widget::on_pauseBtn_clicked()
{//游戏状态判断//  游戏已经暂停 或 游戏未开始,点击都无效if(gameState == 2 || gameState == 0)return;//游戏正在运行中,相关处理//1.暂停 gameTimer的定时器gameTimer->stop();//2.暂停正在活动的按钮的定时器,并修改其暂停标志for(int i = 0; i < 8; i++){MyMouseBtn *mouseBtn =qobject_cast<MyMouseBtn *>(btnGroup->button(i));if(mouseBtn->isActive()){//暂停其定时器mouseBtn->stopTimer();//另外再修改其暂停标志为 truemouseBtn->setPauseState(true);}}//3.修改游戏状态为 pasuegameState = 2;//5.关闭倒计时定时器countTime->stop();
}

5.2.4 Stop按钮功能实现

点击stop按钮,终止游戏,功能分析:

\1. 主窗体 关闭gameTimer定时器 每隔0.5s不会再 随机出老鼠

\2. 主窗体 总得分恢复默认值0

\3. 按钮组老鼠

具体实现:

//点击停止按钮 游戏结束

void Widget::on_stopBtn_clicked()

{

//判断游戏的状态

//如果游戏尚未开始,点击按钮无效

if(gameState == 0)

​ return;

//如果游戏正在运行或暂停 所做操作如下

//1.将总分值恢复为0

totalScore=0;

//2.关闭游戏gameTimer定时器

gameTimer->stop();

//3.游戏结束

for(int i = 0; i < 8; i++){

​ //提取所有按钮

​ MyMouseBtn *mouseBtn =

​ qobject_cast<MyMouseBtn *>(btnGroup->button(i));

​ //让所有老鼠回洞里

​ mouseBtn->gameOver();

​ //修改所有按钮的pauseState = false

​ mouseBtn->setPauseState(false);

}

//4.修改游戏状态

gameState = 0;

//5.关闭倒计时定时器 重置leftTime值

countTime->stop();

leftTime = 60;

//倒计时定时器显示零

ui->timeLcd->display(0);

}

5.2.5 分数显示实现

//绘制得分函数

void Widget::getAndDisplayScoreSlots(int s)

{

//qDebug() <<“分数为:” <<s;

//累加总分值

totalScore +=s;

//显示总分

ui->scoreLcd->display(totalScore);

}

6.系统测试

6.1测试方案与实例

(1)在Qt里面进行编译,编译无误后,接下来进行下一步测试。

(2)在所创建的窗口中测试start、pause、stop以及时间和分数显示这些功能是否与设计的匹配。

6.2测试结果及软件可靠性分析

(1)测试编译器显示无误,会出现如下界面。如图3。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dWUSNaYN-1687954900314)(file:///C:/Users/Morii/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif)]

​ 图3

(2)测试start按钮功能。如图4。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8mgdZsSD-1687954900315)(file:///C:/Users/Morii/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif)]

​ 图4

(3)测试pause。如图5。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-irKQNFx2-1687954900315)(file:///C:/Users/Morii/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif)]

​ 图5

(4)测试stop按钮功能。如图6。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mOzJR3E1-1687954900316)(file:///C:/Users/Morii/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif)]

​ 图6

(5)显示分数和倒计时。如图7。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sgmiRnD7-1687954900316)(file:///C:/Users/Morii/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif)]

​ 图7

转存中…(img-irKQNFx2-1687954900315)]

​ 图5

(4)测试stop按钮功能。如图6。[外链图片转存中…(img-mOzJR3E1-1687954900316)]

​ 图6

(5)显示分数和倒计时。如图7。[外链图片转存中…(img-sgmiRnD7-1687954900316)]

​ 图7

基于C++和QT打地鼠游戏的设计与实现#原创相关推荐

  1. 基于React的贪吃蛇游戏的设计与实现

    代码地址如下: http://www.demodashi.com/demo/11818.html 贪吃蛇小游戏(第二版) 一年半前层用react写过贪吃蛇小游戏https://github.com/c ...

  2. 基于HTML5的贪吃蛇游戏的设计与实现

    基于HTML5的贪吃蛇游戏的设计与实现 功能要求: 贪吃蛇游戏是一款经典的单机休闲游戏,玩家通过上下左右按键控制蛇头的移动方向使其向指定方向前进,并吃掉随机位置上产生食物来获得分数.每吃掉一次食物,贪 ...

  3. 基于Java的坦克大战游戏的设计与实现(论文+PPT+源码)

    幻灯片1 基于Java的坦克大战游戏的设计与实现 幻灯片2 CONTENTS 1 4 设计工具与相关技术 详细设计 2 5 系统分析 结论 3 总体设计 幻灯片3 PPT模板下载:http://www ...

  4. 基于Java的飞机大战游戏的设计与实现论文

    源码下载 http://www.byamd.xyz/hui-zong-1/ 摘 要 现如今,随着智能手机的兴起与普及,加上4G(the 4th Generation mobile communicat ...

  5. 基于Java的飞机大战游戏的设计与实现(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 基于Java的飞机大战游戏的设计与实现 摘   要 现如今,随着智能手机的兴起与普及,加上4G( ...

  6. 【java毕业设计】基于java+GUL的超级玛丽游戏GUL设计与实现(毕业论文+程序源码)——超级玛丽游戏

    基于java+GUL的超级玛丽游戏GUL设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+GUL的超级玛丽游戏GUL设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. 文章 ...

  7. 毕业设计-基于Unity的餐厅经营游戏的设计与开发(附源码、开题报告、论文、答辩PPT、演示视频,带数据库)

    基于Unity的餐厅经营游戏的设计与开发 下载链接: 点我下载资源 一.登陆(Unity2020.3.3f1c1版本) 开始界面 进入游戏后,在开始界面右下角是一个登陆按钮,当玩家点击开始按钮后,会进 ...

  8. 扫雷java程序算法设计_基于Java的Windows扫雷游戏的设计与实现毕业论文+任务书+翻译及原文+源码+辅导视频...

    基于Java的Windows扫雷游戏的设计与实现 摘 要 扫雷这款游戏有着很长的历史,从扫雷被开发出来到现在进行了无数次的优化,这款游戏变得越来越让人爱不释手了,简单的玩法在加上一个好看的游戏界面,每 ...

  9. 毕业设计 基于Java的飞机大战游戏的设计与实现

    文章目录 前言 一.项目设计 1. 模块设计 功能需求 游戏状态控制功能模块 游戏难度的调整模块 游戏界面绘画功能模块 玩家游戏控制功能模块 2. 实现效果 二.部分源码 项目源码 前言 今天学长向大 ...

最新文章

  1. 7个优秀的javascript资源
  2. 表达式_ya是不合法的c语言标识符,高级语言程序设计复习题.doc
  3. NET Core 3.0 AutoFac替换内置DI的新姿势
  4. Hadoop入门(二十三)Mapreduce的求数量最大程序
  5. python十个一行_python 如何将一系列数字十个一行输出
  6. Angular之双向数据绑定(上)
  7. FreeSpan 和 PrefixSpan 算法学习
  8. 在linux添加驱动程序,linux下静态/动态加载驱动的两种方式
  9. Eclipse简单字体设置
  10. 带圆圈的数字和markdown常用表达式记录
  11. 短视频制作难度大吗?怎么剪辑短视频?
  12. 设置新版谷歌浏览器自动启用flash
  13. 计算机c盘无法扩展,电脑c盘怎么扩大_C盘空间不足的扩大步骤-win7之家
  14. wex5 java_WeX5简介
  15. FFmpeg流拼接滤镜concat原理与使用注意事项
  16. 哲♂学【前排提醒非题解】
  17. 微信公众号 智能客服
  18. mqtt - github上的TT3工程编译
  19. 人大金仓命令行客户端工具KSQL系列1
  20. android源代码下载

热门文章

  1. Kintinuous
  2. 拼多多的成功告诉网站运营者,SEO优化不能轻易放弃
  3. 谁能真正明白月如内心深处?
  4. WireGuard 搭建Ubuntu云服务端,windows客户端内网通道
  5. html中占位隐藏,css样式占位和不占位隐藏元素的方法
  6. 面试-美味不用等(上海)
  7. 编译程序,翻译程序,解释程序,目标程序解释
  8. EDG夺冠,用爬虫+数据分析+自然语言处理(情感分析)+数据可视化分析3万条数据:粉丝都疯了(唯一原创)
  9. 线程和进程/阻塞和挂起以及那些sleep,wait()和notify()方法详解
  10. SVM学习(一)SVM模型训练与分类