- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C程序课程的设计的报告_00002
C程序设计
扫雷游戏
一、设计题目:扫雷游戏
二、设计目的
1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。
2.培养学生综合运用所学知识独立完成课题的能力。
3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
三、设计要求
1.汪洋和孔维亮组成设计小组。小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。
2.查阅相关资料,自学具体课题中涉及到的新知识。
3.采用结构化、模块化程序设计方法,功能要完善,界面要美观。
4.按要求写出课程设计报告,并于设计结束后1周内提交。
一 概述
掌握数组指针的概念及其应用
培养团结合作精神
2. 课程设计的要求
要求我们有扎实的C语言知识,以及良好的编程习惯,能够熟练的应用循环,有毅力,还要求我们有较强的合作精神,善于总结。同时还要求我们自学C语言作图部分知识。在必要时还要上网查相关资料。
课程设计的主要设计思想
扫雷游戏主要用了一个10行10列的二维数组,刚开始利用random随机布雷。
每一个程序最主要的是算法。扫雷游戏算法的重点是一开始统计好每个格子周围有多少雷,当鼠标左键点在格子上时做出判断,如果周围8个格子有雷则显示出雷数,如果没有雷则显示空白格(在四个角的格子显示周围3个格子,其它边缘的格子显示周围5个的状态),我们在主函数中用两个for语句来判断周围雷数。我们还加了鼠标处理函数。
如果格子上有雷则调用函FailExitGame(),显示“Fail!”,游戏结束。若所有的雷都标出,且所有的格子都处理过,则调用函数ExitGame(),显示“OK,Good!”,游戏结束。游戏结束后,按任意键出去。
二 总体方案设计
封面是由图形和动态文字,伴随声音接替出现。程序用了一个10行10列的二维数组表示扫雷界面。在游戏中要随机步雷,游戏开始前要统计好每个格子周围的雷数,游戏开始后可以点击鼠标玩游戏,游戏结束后,按任意键结束跳出游戏界面。
整体框图
三 详细设计
程序流程
以下是主函数中的一些主要的。
主函数
主要定义常用到的常量,全局变量,有关的函数原形说明。然后随机布雷,统计好每个格子周围的雷数,画扫雷游戏界面,游戏接受鼠标操作,按任意键结束游戏,关闭图形系统,程序结束。
BYTE MouseState() /*等待接受鼠标命令函数*/
{
union REGS regs;
regs.x.ax = 3;
int86(MOUSE, regs, regs); /*鼠标端口*/
return(regs.x.bx);
}
void MouseShow() /*鼠标显示函数*/
{
union REGS regs;
regs.x.ax = 1;
int86(MOUSE, regs, regs);
}
void MouseHide() /*鼠标隐藏函数*/
{
union REGS regs;
regs.x.ax = 2;
int86(MOUSE, regs, regs);
}
BOOL InitMouse() /*取鼠标端口函数*/
{
union REGS regs;
regs.x.ax = 0;
int86(MOUSE, regs, regs);
return (regs.x.ax);
}
void WaitMouse()
{
int xx,yy;
while (MouseState())
{
GetXY(xx,yy);
if (xx!=x||yy!=y)
SetXY(x,y);
}
}
void Prt(int x,int y,BYTE ch,BYTE color) /*定义雷区地址入口*/
{
pokeb(0xb800,y*160+x*2,ch);
pokeb(0xb800,y*160+x*2+1,color);
}
BYTE Scr(in
文档评论(0)