《扫雷游戏程序设计课程设计报告.docx》由会员分享,可在线阅读,更多相关《扫雷游戏程序设计课程设计报告.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、扫雷游戏程序设计课程设计报告 课 程 设 计 扫雷游戏程序设计 2022 年 11 月 5 日 设计题目 学 号专业班级 学生姓名 指导教师 合肥工业大学课程设计任务书 一. 设计任务 (1)鼠标左击排雷,右击插小旗,打问号; (2)方格里面的数字表示方格周围的雷数; (3)能够显示未标记雷数和游戏用时; (4)雷区上面的小脸可以变化,显示微笑,惊讶,痛苦,胜利。在任何情况下单击小脸可以重新开始游戏; (5)可进行游戏难度的设定:包括预定义的难度级别(雷区行数,列数和雷数),和自行定义雷区行数,列数和雷数的功能; (6)排行榜功能,扫雷成功时候,根据游戏用时更新排行榜。 二. 具体设计 (一)
2、、设计思路 扫雷游戏是很经典也很有趣的一款游戏,这次的游戏程序设计要求设计出功能与原游戏相近的一款游戏,首先定义变量和类要画出游戏方格以及位图,设计游戏等级,等级越高方格越多雷数也越多;然后设置随机布雷以保证每次重新开始游戏都有不同的雷区地图;另外定义鼠标左击扫雷,左击标记周围埋雷情况,右击奇数次排雷偶数次取消上次排雷,以及扫雷第一次左击不能扫到雷。 (二)、设计表示: 1、鼠标左击排雷,右击插小旗,打问号; 2、方格里面的数字表示方格周围的雷数; 3、能够显示未标记雷数和游戏用时; 4、雷区上面的小脸可以变化,显示微笑,惊讶,痛苦,胜利。在任何情况下单击小脸可以重新开始游戏; 5、可进行游戏
3、难度的设定:包括预定义的难度级别(雷区行数,列数和雷数); 6、任何时候开始游戏第一次点击不会扫到雷。 由于时间等原因未完成功能: 排行榜和自行定义雷区行数,列数和雷数功能。 (四)、详细设计 1、添加位图 前十二幅是在雷区的,后四幅是按钮。为了便于加载,必须各自保证其连续性。 分别表示游戏进行的状态、结果胜利或触雷。 2、预设等级方格数雷数变化 void CMywqq20222074View:OnEasy() /初级 m_RowCount=10;/行数10 m_ColCount=10;/列数10 leinum=10; realnum=leinum; SetTimer(1,50,NULL);
4、/ TODO: Add your command handler code here second=0;/计时 secondstart=0;/1时开始计时/ num=0; leftnum=leinum;/剩余雷数 jieshu=0;/jieshu=1时停止 int aa=0; /初始化0 for(int i=0;i=0&c=0& &dBitBlt(a*15+10,b*15+50,160,16 0,&Dc,0,0,SRCCOPY); if(leiab.weitu=2) Dc.SelectObject(m_Bitmap9); pDC-BitBlt(a*15+10,b*15+50,160,16 0,
5、&Dc,0,0,SRCCOPY); if(leiab.weitu=3) Dc.SelectObject(m_Bitmap10); pDC-BitBlt(a*15+10,b*15+50,160,16 0,&Dc,0,0,SRCCOPY); /结束 (五)、调试及测试 经运行测试之后,程序出现的问题有: 1、第一次打开游戏时有时会出现不能计时的情况 2、胜利的表情不能正常显示 (六)、使用说明 A、鼠标左击排雷,右击插小旗,打问号; B、方格里面的数字表示方格周围的雷数; C、在任何情况下单击小脸可以重新开始游戏; D、可进行游戏难度的设定:包括预定义的难度级别(雷区行数,列数和雷数),和自行定义
6、雷区行数,列数和雷数的功能; E、扫雷成功时候,游戏用时更新排行榜 (七)、运行实例 鼠标左击排雷,可翻开连片空格,方格周围 数字表示周围埋雷数目,右键单击一次插小 红旗,双击显示问号表示雷数情况未知,同 时显示剩余雷数以及游戏用时 可从预设难度等级中选择游戏难度,游戏方格数和雷数都有相应增加 初级 中级 高级 触雷时现出痛苦的表情,游戏结束 将雷全部排出,胜利的呐喊! (八)、设计小结 这个短短几天的C+课程设计虽然为期不长,却让我们从实践中学到了更多的C+编程知识,一开始看到示例中让人眼花缭乱的程序代码让人很有放弃的冲动,可是最后还是坚持下来将代码读完并自己琢磨出一套代码出来,在这中间也遇
7、到不少的困难,一开始 不知道位图是怎么做的,那些看起来可爱的表情做起来却并不简单,还要在代码里将这些表情的二维坐标对应起来,过程细致而繁杂,最终在与同学讨论之后成功做出,大家还一起开玩笑涂鸦自定义表情,轻松的话语冲淡了写代码时的烦躁。还有在设定难度时要重新画方格,右键单击时出现不同的状态,第一次点击的时候不能扫到雷等等难关,都被坚持不懈的毅力和耐力一一克服。直到最后看到各种功能在自己手下实现,这时的成就感和喜悦是之前单独实现一个个小功能所不能比的,不由更加感叹程序编程的奇妙,让我对程序员有了新的认识,也下定决心努力向他们看齐! 附录:源程序 / wqq20222074View.cpp : im
8、plementation of the CMywqq20222074View class / #include stdafx.h #include wqq20222074.h #include wqq20222074Doc.h #include wqq20222074View.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_; #endif / / / CMywqq20222074View IMPLEMENT_DYNCREATE(CMywqq20222074V iew, C
9、View) BEGIN_MESSAGE_MAP(CMywqq20222074View, CView) /AFX_MSG_MAP(CMywqq20222074View ) ON_WM_TIMER() ON_WM_LBUTTONDOWN() ON_WM_CREATE() ON_COMMAND(ID_START, OnStart) ON_WM_LBUTTONUP() ON_WM_RBUTTONDOWN() ON_COMMAND(ID_EASY, OnEasy) ON_COMMAND(ID_MIDDLE, OnMiddle) ON_COMMAND(ID_HARD, OnHard) /AFX_MSG_M
10、AP / Standard printing commands ON_COMMAND(ID_, CView:On) ON_COMMAND(ID_, CView:On) ON_COMMAND(ID_, CView:On) END_MESSAGE_MAP() / / / CMywqq20222074View construction/destruction CMywqq20222074View:CMywqq20222074View() / TODO: add construction code here for(int ii=0;ii16;ii+) m_Bitmapii.LoadBitmap(IDB_BITMAP14+ii ); for(int jj=0;jj4;jj+)