您好,欢迎访问三七文档
辽宁工业大学C语言程序设计课程设计(论文)题目:扫地雷游戏院(系):专业班级:学号:学生姓名:指导教师:教师职称:起止时间:2009.12.14至2009.12.26课程设计(报告)任务及评语院(系):教研室:学号学生姓名专业班级程序设计(报告)题目扫地雷游戏程序设计(报告)任务程序设计的任务与要求:(1)掌握C语言编程的基础知识。(2)较熟练地编写C语言应用程序。(3)了解C语言的常用标准函数、编程技巧、异常处理。(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩:指导教师签字:2009年12月31日辽宁工业大学课程设计说明书(论文)目录第1章课程设计的目的与要求.................................................................................................11.1课程设计目的.................................................................................................................11.2课程设计的实验环境.....................................................................................................11.3课程设计的预备知识.....................................................................................................11.4课程设计要求.................................................................................................................1第2章课程设计内容.................................................................................................................22.1程序功能介绍..................................................................................................................22.2程序整体设计说明..........................................................................................................22.2.1设计思路..............................................................................................................22.2.2数据结构设计及用法说明..................................................................................32.2.3程序结构..............................................................................................................42.2.4各模块的功能及程序说明..................................................................................42.2.5程序结果..............................................................................................................52.3程序源代码及注释..........................................................................................................5第3章课程设计总结.................................................................................................................14参考资料......................................................................................................................................15辽宁工业大学课程设计说明书(论文)1第1章课程设计的目的与要求1.1课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。本课程设计的目的和任务:1.巩固和加深学生对C语言课程的基本知识的理解和掌握2.掌握C语言编程和程序调试的基本技能3.利用C语言进行基本的软件设计4.掌握书写程序设计说明文档的能力5.提高运用C语言解决实际问题的能力1.2课程设计的实验环境硬件要求能运行Windows2000/XP操作系统的微机系统。C语言程序设计及相应的开发环境。1.3课程设计的预备知识熟悉C语言及C语言开发工具。1.4课程设计要求1.分析课程设计题目的要求2.写出详细设计说明3.编写程序代码,调试程序使其能正确运行4.设计完成的软件要便于操作和使用5.设计完成后提交课程设计报告辽宁工业大学课程设计说明书(论文)2第2章课程设计内容2.1程序功能介绍扫地雷是一个广泛游戏,扫雷的游戏规则:扫雷就是要把所有非地雷的格子揭开即胜利;踩到地雷格子就算失败。当鼠标点击到棋盘范围外时,视为无效,无响应。游戏主区域由很多个方格组成。使用鼠标左键随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷;如果点开的格子为空白格,即其周围有0颗雷,则其周围格子自动打开;如果其周围还有空白格,则会引发连锁反应;在你认为有雷的格子上,点击右键即可标记雷;如果一个已打开格子周围所有的雷已经正确标出,则可以在此格上同时点击鼠标左右键打开其周围剩余的无雷格。扫雷可以充分锻炼你的逻辑思维能力、抽象思维能力、想象力、判断力、反应速度。2.2程序整体设计说明2.2.1设计思路首先我们在雷区上随机地放上雷,没有雷的地方被点击后就会显示一个数字表示它周围有几个雷,这是怎么实现的呢?我们可以把整个雷区看成一个二维数组a[i,j],如雷区:11121314151617182122232425262728313233343536373841424344454647485152535455565758我要知道a[34]周围有几个雷,就只有去检测a[23],a[24],a[25]a[33],a[35]a[43],a[44],a[45]辽宁工业大学课程设计说明书(论文)3这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]将被展开,一直波及到不可确定的雷区。这也是实现的关键。我们可以把数组的元素设定为一个类对象,它们所属的类设定这样的一个事件:在被展开时,检查周围的雷数是否与周围标示出来的雷数相等,如果相等则展开周围未标示的雷区。这样新的雷区展开又触发这个事件,就这样递归下去,一直蔓延到不可展开的雷区。相信在了解以上两个要点后,把雷区这个类编写完全(如添加是否有雷标记,是否展开标记,周围雷数等,双击,左右单击的鼠标事件等),实现扫雷程序应是十分简单的一件事。2.2.2数据结构设计及用法说明voidClose(void)图形关闭voidControl(void)游戏开始,重新,关闭voidDrawEmpty(inti,intj,intmode,intcolor)两种空格子的显示voidDrawRedflag(inti,intj)显示红旗voidDrawSmile(void)画笑脸voidGameBegain(void)游戏开始画面voidGameOver(void)游戏结束画面voidGamePlay(void)游戏过程voidGameWin(void)显示胜利voidInit(void)图形开始intLeftPress(void)鼠标左键按下intMineStatistics(inti,intj)统计每个格子周围的雷数voidMouseGetXY(void)得到当前位置辽宁工业大学课程设计说明书(论文)4voidMouseOff(void)鼠标光标隐藏voidMouseOn(void)鼠标光标显示voidMouseSetXY(intx,inty)设置当前位置intRightPress(void)鼠标右键按下intShowWhite(inti,intj)显示无雷区的空白部分2.2.3程序结构图2.1扫地雷游戏流程图2.2.4各模块的功能及程序说明(1)voidControl(void):该模块是控制程序的框架,决定是否初始化游戏画面并执行游戏过程,以及是否重新开始游戏或退出。(2)voidGameBegain(void):该模块用以初始化游戏画面,调用画图模块、画格子模块等,完成显示笑脸图标、描绘方格棋盘、初始化鼠标位置等任务。(3)voidGamePlay(void):该模块完成游戏的主过程,调用递归显示算法,标示红旗,判断失败等任务。(4)intMineStatistics(inti,intj):以单元格的坐标为参数,返回单元格周围的雷的数目。辽宁工业大学课程设计说明书(论文)5(5)intShowWhite(inti,intj):参数是所点击方格的坐标,如果点击的方格周围没有雷,则调用该模块。它会显示周围雷的数目,如果周围仍没有则递归调用,直到周围不再有空白格。2.2.5程序结果游戏初期初始化图像如图2.2所示:图2.2游戏初期初始化图像2.3程序源代码及注释#includegraphics.h#includestdlib.h#includedos.h#defineLEFTPRESS0xff01#defineLEFTCLICK0xff10#defineLEFTDRAG0xff19#defineMOUSEMOVE0xff08intnum[10][10];/*范围*/intp[10][10];/*统计雷的数组*/intloop;/*重新来的标志*/intagain=0;/*是否重来的变量*/intscorenum;/*一开始统计有几个雷*/c
本文标题:C语言设计论文
链接地址:https://www.777doc.com/doc-6183379 .html