扫雷课程设计报告
大二时要用
湖南文理学院课程设计报告
课程名称: 计算机课程扫地雷设计 院 系: 电气与信息工程学院 专业班级: 通信09102班 学生姓名: 孔启浩 指导教师: 完成时间: 2010.9.27 报告成绩:
大二时要用
扫地雷游戏设计
综述
在计算机逐步渗入社会生活各个层面的今天,计算机已经成为人们日常生活的一分,越来越多的人使用计算机办公、娱乐等等。
扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。我利用Turbo C 编写了与它功能相仿的扫雷游戏,寓学于乐。
一、 应用环境
1.1 硬件环境
一台完整的电脑,包括键盘、鼠标,最小硬盘空间1GHz 1.1 386,486,586及兼容机.640K基本内存; 2.1 1M以上扩充内存,10M以上的显示内存.
2.2 软件环境
开发环境:本系统的设计采用的是TC语言开发 Windows 操作系统,Turbo C 2.0汉化版
二、 程序的作用及设计目的
2.1 程序功能
程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按
大二时要用
任意键结束程序。单击屏幕上的笑脸可以重新开始游戏。所有地雷标出后胜利,当鼠标左键单击到地雷时失败。
2.2 程序设计目的
1.培养综合运用所学知识独立完成课题的能力。 2.更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 3.提高对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
4.培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
5.培养从资料文献、科学实验中获得知识的能力,提高从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
6.对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
三、 程序分析和设计
3.1 游戏规则
设计10×10 格区域,单击鼠标后,该格显示数字,则表示它周围8 个空格内含有的地雷数,周围没有地雷的显示空白,则不能再单击了。如果是地雷,则游戏结束。如果判断是地雷,可以单击鼠标右键标出,显示红旗,要取消红旗标志则再单击鼠标右键,当所有地雷都标出,每个空格都处理过,了则胜利结束。
3.2 游戏界面
游戏初始界面如图5-1 所示 , 游戏中的界面如图5-2 所示。
大二时要用
图5-1 初始状态 图5-2 游戏中
3.3 设计思路
扫雷程序主要用了一个10 行10 列的二维数组表示,数组的每一个元素是结构体类型,结构体中的num 成员代表格内当前处于什么状态,值为1 表示有雷,值为0 表示已经变成空白格或者显示过数字,roundnum 成员统计每个格子周围有多少地雷,flag 变量主要是鼠标右键测试的标志,如果flag 为1 则表示格子显示红旗,这样鼠标左键点在这个格子中将无效。
算法的重点是一开始统计好每个格子周围有多少地雷,然后当鼠标左键点在没地雷的格子上时进行两种判断,如果格子周围没地,雷就先在原来的格子位置显示空白格,然后用递归的方法同样判断周围的8 个格子;如果格子周围有地雷,就在该格子上显示具体的雷数。
在递归判断8 个格子时,如果格子上有雷或者格子已经显示过雷数或者空白格,以及格子上有红旗标志的话,就不再对格子进行任何判断。
大二时要用
具体的函数流程如图5-3 所示
1 main()主函数
定义使用到的常数、全局变量、函数原型说明。然后初始化图形系统,调用游戏控制函数,游戏只接受鼠标操,作按任意键结束游戏,关闭图形系统,程序结束。
2 Control()游戏控制函数
调用函数GameBegin()显示游戏初始界面,调用GamePlay()为具体游戏操作过程,该函数返回有两种可能:一种是正在玩中,提前结束游戏;一种是玩完,要么失败,要么胜利。如果是前者,则重新开始游戏,如果是后者,则判断是否单击了笑脸,是则重新开始, 否则结束程序。
3 GameBegin()画初始界面
这个函数完成初始界面的设计以及随机生成地雷数。初始界面的主要工作是确定图的位置和方格显示的位置。外边框的左上角坐标为(190 ,60),右下角坐标为(390, 290),显示笑脸和地雷数的区域为(190, 60)~( 390, 90),每个方格的宽度和高度均为16。 读者可以参照修改区域的大小。 4 DrawSmile()画笑脸
利用画椭圆函数fillellipse()和bar()画笑脸,设置好填充模式。 5 DrawEmpty()两种格子的显示
函数的参数为四个,确定格子的坐标i 和j 、模式和颜色。格子有两种:一种是可以单击的格子;一种是已经显示空白的格子, 比前一种格子略小一
大二时要用
些, 通过参数模式和颜色来控制。 6 DrawRedflag()显示红旗
用单击鼠标右键表示起地雷,起雷后显示一个小红旗。 7 GamePlay()游戏过程
游戏过程主要是对鼠标按键的处理,具体算法如下: 1 统计每个格子周围有多少地雷。 2 如果没有按键盘则循环执行; (1)如果单击了鼠标左键则判断: 如果鼠标单击了笑脸则游戏重新开始。
如果单击了方格,判断该格子里有红旗,则按键无效。如果单击的格子没有显示过数字或空白,则判断;如果是地雷,游戏结束,显示地雷分布;如果不是地雷,则统计该格子周围(8 个方向)的地雷数,如果周围地雷数为0, 调用递归函数ShowWhite()处理周围格子的情况,显示周围地雷数或空白。如果单击的格子周围地雷数不为0, 则显示周围地雷数,将处理过的格子作标记。如果所有格子处理完毕,游戏胜利,显示胜利信息。
(2) 如果单击了鼠标右键,该格子没有红旗,则显示红旗。如果有红旗,再击右键,则红旗消失。
(3) 重复步骤(2) 直到按键结束程序。 8 MineStatistics()统计地雷
统计每个格子周围的雷数,分别考虑格子处于四个角、四条边以及中间某个位置的情况。周围指上、下、左、右、左上、左下、右上、右下。注意程序中使用的是多个if 语句,而没有使用或运算连接组成复合表达式,例如:
大二时要用
if(Mine[0][1].num==1) nNUM++;
if(Mine[1][0].num==1) nNUM++;
没有写成if(Mine[0][1].num==1|| Mine[1][0].num==1)是考虑到C 语言的逻辑表达式的短路问题,逻辑或只要前面的表达式为真,后面就不必判断了,这样可能造成少计地雷数。 9 ShowWhite()显示无雷区的空白格
当单击了某个格子,该格子周围地雷数为0 时,应该继续判断它周围8 个方向的格子的周围地雷数是否为0 ,将这些格子都用空白显示。所以这也是一个递归问题,将其构造为递归函数。一个递归函数有两个要素,一个是入口参数,且是降规模的,另一个为出口参数。本函数的入口参数为格子的坐标,表示处理哪个格子,出口参数是该格子有红旗或 者已经显示过数字或空白格子。具体算法如下:
(1) 如果当前格子有红旗或 …… 此处隐藏:7658字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




