C语言程序设计课程设计论文扫地雷游戏

上传人:cn****1 文档编号:564684737 上传时间:2023-10-18 格式:DOC 页数:31 大小:96.50KB
返回 下载 相关 举报
C语言程序设计课程设计论文扫地雷游戏_第1页
第1页 / 共31页
C语言程序设计课程设计论文扫地雷游戏_第2页
第2页 / 共31页
C语言程序设计课程设计论文扫地雷游戏_第3页
第3页 / 共31页
C语言程序设计课程设计论文扫地雷游戏_第4页
第4页 / 共31页
C语言程序设计课程设计论文扫地雷游戏_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《C语言程序设计课程设计论文扫地雷游戏》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计论文扫地雷游戏(31页珍藏版)》请在金锄头文库上搜索。

1、辽 宁 工 业 大 学 C语言程序设计 课程设计(论文)题目: 扫地雷游戏 院(系): 软件学院 专业班级: 电子商务091班 学 号: 学生姓名: 指导教师: 教师职称: 助 教 起止时间:2009.12.14至2009.12.26 课程设计(报告)任务及评语院(系):软件学院 教研室:软件教研窒学 号学生姓名专业班级电子商务091班程序设计(报告)题目C语言课程设计-扫地雷游戏程序设计(报告)任务程序设计的任务与要求:(1)掌握C语言编程的基础知识。(2)较熟练地编写C语言应用程序。(3)了解C语言的常用标准函数、编程技巧、异常处理。(5)联系已学过的内容,巩固所学的理论,增强独立工作能力

2、。(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩: 指导教师签字: 2009 年 1 月 13 日目 录第1章 课程设计的目的与要求11.1 课程设计目的11.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章 课程设计内容22.1程序功能介绍22.2程序整体设计说明22.2

3、.1设计思路22.2.2数据结构设计及用法说明32.2.3程序结构(流程图)32.2.4各模块的功能及程序说明32.2.5程序结果62.3程序源代码及注释6第3章 课程设计总结17参考资料19第1章 课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言(C)课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1. 巩固和加深学生对C语言课程的基本知识的理解和掌握 2. 掌握C语言编程和程序调试的基本技能 3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力1.2 课

4、程设计的实验环境硬件要求能运行Windows 2000/XP操作系统的微机系统。C语言程序设计及相应的开发环境。1.3 课程设计的预备知识熟悉C语言及C语言开发工具。1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2章 课程设计内容2.1程序功能介绍自Windows系统推出以来,系统所带扫雷游戏深受人们喜爱,她是一个益智游戏,令人百玩不厌。本课题要求利用Turbo C编写与它功能相仿的扫雷游戏,寓学于乐。程序的功能要求随机生成地雷数,通过鼠标操作玩游戏,不接受键

5、盘,按任意键结束程序。单击屏幕上的笑脸可以重新开始游戏。所有地雷标出后胜利,当鼠标左键单击到地雷时失败。2.2程序整体设计说明2.2.1设计思路首先在雷区上随机地放上雷,没有雷的地方被点击 后就会显示一个数字表示它周围有几个雷,这是怎么实现的呢?我们可以把整个雷区看成一个二维数组ai,j,如雷区 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 28 31 32 33 34 35 36 37 38 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 58要知道a34周围有几个雷,就只有去检测 a23,a24,a25

6、a33, a35 a43,a44,a45这8个雷区是否放上了雷,仔细观察它们成在数学关系。抽象出来就是:ai,j的雷的个数就是由 ai-1,j-1,ai-1,j,ai-1,j+1 a i ,j-1, a i ,j+1 ai+1,j-1,ai+1,j,ai+1,j+1 (如果超出边界再加以判断)这样的8个雷区决定的。 扫雷程序还会自动展开已确定没有雷的雷区。如果a3,4周围雷数为1,a2,3已被标示为地雷,那么a24,a25,a33,a35,a43,a44,a45将被展开,一直波及到不可确定的雷区。这也是实现的关键。我们可以把数组的元素设定为一个类对象,它们所属的类设定这样的一个事件:在被展开时

7、,检查周围的雷数是否与周围标示出来的雷数相等,如果相等则展开周围未标示的雷区。这样新的雷区展开又触发这个事件,就这样递归下去,一直蔓延到不可展开的雷区。相信在了解以上两个要点后,把雷区这个类编写完全(如添加是否有雷标记,是否展开标记,周围雷数等,双击,左右单击的鼠标事件等),实现扫雷程序应是十分简单的一件事。扫雷的地图一般是一个矩形,所以,我用一个a*b的二维数组就完全可以表示整个地图。 有了地图以后地图里面的类容自然就有一部分是表示地雷啦,既然这样,那不如就这样/* * 20 标志该位置为地雷 * =10的数字表示已翻开的方块及周围的地雷数目 * */ 表示方法就出来了,逻辑也明朗起来了。

8、我要将某个块翻开,只要将他加上10 格是否为地雷就可以了。2.2.2数据结构设计及用法说明 扫雷的数据结构就是一个二维数组,数组的每个元素是个结构体。记录着每个雷区的状态,包括是否有雷, 是否打开,是否插了红旗,以及周围的雷数。当鼠标按下指定雷区,从雷区的各个信息中判断并做出相应的反应。 /*雷区的数据结构*/ struct char lei; /*lei=1有雷,lei=0无雷 */ .char close; /*close=1雷区未打开,close=0雷区以打开*/ .char hong; /*hong=1插了红旗,hong=0没有红旗*/ .char shu; /*周围的雷数*/ lei

9、3218; 在这说明一点,为了算法简洁,我们在程序中只使用数组lei1-max-11-max-1 还要说明的就是周围区域并不是没有用,只是把它们设置成无雷和全部打开。 这样做的目的是更好的统计周围的雷数和其他一些操作,这样设计即使是最边上的雷区 周围也是有8个雷区。算法就大大简化了。 2.2.3程序结构(流程图)如图2.1图2.12.2.4各模块的功能及程序说明1.主函数主要定义常用到的常量,全局变量,有关的函数原形说明。然后随机布雷,统计好每个格子周围的雷数,画扫雷游戏界面,游戏接受鼠标操作,按任意键结束游戏,关闭图形系统,程序结束。void main() int i; int Total=

10、0; BYTE Button; BOOL QUIT=FALSE; star(); /*调用游戏前景动画函数*/ if (!InitMouse() /*对鼠标端口进行判断*/ printf(Mouse not installed!); getch(); clrscr(); CursorHide(); randomize(); /*取随机数*/ Locate(36,20); printf(Mines:%d ,0); for (y=0;y10;y+) for (x=0;x10;x+) Mineyx=NULL; Turnyx=FALSE; /*随机产生地雷坐标*/ for (i=0;i10;i+) /

11、*用FOR循环取十颗地雷*/ x=random(10); /*随机产生一颗地雷 横 坐标*/ y=random(10); /*随机产生一颗地雷 纵 坐标*/ while (Mineyx) /*将随机产生的地雷坐标赋给数组*/ x=random(10); y=random(10); Mineyx=MINE; for (y=0;y10;y+) for (x=0;x=0) i+; /*雷区坐边界判断*/ if (Mineyx+1=MINE)&(x+1)=0) i+; /*雷区上边界判断*/ if (Miney+1x=MINE)&(y+1)=0)&(y-1)=0) i+; /*雷区左上角判断*/ if (Miney-1x+1=MINE)&(x+1)=0) i+; /*雷区右上角判断*/ if (Miney+1x+1=MINE)&(x+1)10)&(y+1)=0)&(y+1)10) i+; /*雷区左下角判断*/ Mineyx=i; Prt(x+SX,y+SY,1,15); /*雷区图形和颜色*/ 2失败判断函数void FailExitGame()

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号