c语言游戏程序评语,C语言程序设计课程设计-扫地雷游戏

41528d3028836879cd698677c3999917.gifC语言程序设计课程设计-扫地雷游戏

辽 宁 工 业 大 学C 语言程序设计 课程设计(论文)题目: 扫地雷游戏 院(系): 软件学院 专业班级: 电子商务 091 班 学 号: 学生姓名: 指导教师: 教师职称: 助 教 起止时间:2009.12.14 至 2009.12.26 课程设计(报告)任务及评语院(系):软件学院 教研室:软件教研窒学 号 学生姓名 专业班级 电子商务 091 班程序设计(报告)题目C 语言课程设计-扫地雷游戏程序设计(报告)任务程序设计的任务与要求:(1)掌握 C 语言编程的基础知识。(2)较熟练地编写 C 语言应用程序。(3)了解 C 语言的常用标准函数、编程技巧、异常处理。(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩: 指导教师签字: 2009 年 1 月 13 日目 录第 1 章 课程设计的目的与要求 11.1 课程设计目的 11.2 课程设计的实验环境 11.3 课程设计的预备知识 11.4 课程设计要求 1第 2 章 课程设计内容 22.1 程序功能介绍 .22.2 程序整体设计说明 .22.2.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 课程设计的实验环境硬件要求能运行 Windows 2000/XP 操作系统的微机系统。C 语言程序设计及相应的开发环境。1.3 课程设计的预备知识熟悉 C 语言及 C 语言开发工具。1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第 2 章 课程设计内容2.1 程序功能介绍自 Windows 系统推出以来,系统所带扫雷游戏深受人们喜爱,她是一个益智游戏,令人百玩不厌。本课题要求利用 Turbo C 编写与它功能相仿的扫雷游戏,寓学于乐。程序的功能要求随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意键结束程序。单击屏幕上的笑脸可以重新开始游戏。所有地雷标出后胜利,当鼠标左键单击到地雷时失败。2.2 程序整体设计说明2.2.1 设计思路首先在雷区上随机地放上雷,没有雷的地方被点击 后就会显示一个数字表示它周围有几个雷,这是怎么实现的呢?我们可以把整个雷区看成一个二维数组 a[i,j],如雷区11 12 13 14 15 16 17 1821 22 23 24 25 26 27 2831 32 33 34 35 36 37 3841 42 43 44 45 46 47 4851 52 53 54 55 56 57 58要知道 a[34]周围有几个雷,就只有去检测a[23],a[24],a[25]a[33], a[35]a[43],a[44],a[45]这 8 个雷区是否放上了雷,仔细观察它们成在数学关系。抽象出来就是:a[i,j]的雷的个数就是由a[i-1,j-1],a[i-1,j],a[i-1,j+1]a[ i ,j-1], a[ i ,j+1]a[i+1,j-1],a[i+1,j],a[i+1,j+1] (如果超出边界再加以判断)这样的 8 个雷区决定的。 扫雷程序还会自动展开已确定没有雷的雷区。如果 a[3,4]周围雷数为 1,a[2,3]已被标示为地雷,那么 a[24],a[25],a[33],a[35],a[43],a[44],a[45]将被展开,一直波及到不可确定的雷区。这也是实现的关键。我们可以把数组的元素设定为一个类对象,它们所属的类设定这样的一个事件:在被展开时,检查周围的雷数是否与周围标示出来的雷数相等,如果相等则展开周围未标示的雷区。这样新的雷区展开又触发这个事件,就这样递归下去,一直蔓延到不可展开的雷区。相信在了解以上两个要点后,把雷区这个类编写完全(如添加是否有雷标记,是否展开标记,周围雷数等,双击,左右单击的鼠标事件等) ,实现扫雷程序应是十分简单的一件事。扫雷的地图一般是一个矩形,所以,我用一个 a*b 的二维数组就完全可以表示整个地图。 有了地图以后地图里面的类容自然就有一部分是表示地雷啦,既然这样,那不如就这样/** * 20 标志该位置为地雷 * =10 的数字表示已翻开的方块及周围的地雷数目 * */ 表示方法就出来了,逻辑也明朗起来了。 我要将某个块翻开,只要将他加上 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[32][18]; 在这说明一点,为了算法简洁,我们在程序中只使用数组 lei[1--max-1][1--max-1] 还要说明的就是周围区域并不是没有用,只是把它们设置成无雷和全部打开。 这样做的目的是更好的统计周围的雷数和其他一些操作,这样设计即使是最边上的雷区 周围也是有 8 个雷区。算法就大大简化了。 2.2.3 程序结构(流程图)如图 2.1图 2.12.2.4 各模块的功能及程序说明1.主函数主要定义常用到的常量,全局变量,有关的函数原形说明。然后随机布雷,统计好每个格子周围的雷数,画扫雷游戏界面,游戏接受鼠标操作,按任意键结束游戏,关闭图形系统,程序结束。void main(){ int i;int Total=0;BYTE Button;BOOL QUIT=FALSE;star(); /*调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值