C程序课程设计报告扫雷

上传人:m**** 文档编号:469318131 上传时间:2023-03-15 格式:DOC 页数:17 大小:67.01KB
返回 下载 相关 举报
C程序课程设计报告扫雷_第1页
第1页 / 共17页
C程序课程设计报告扫雷_第2页
第2页 / 共17页
C程序课程设计报告扫雷_第3页
第3页 / 共17页
C程序课程设计报告扫雷_第4页
第4页 / 共17页
C程序课程设计报告扫雷_第5页
第5页 / 共17页
点击查看更多>>
资源描述

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

1、 C程序设计 扫雷游戏 姓名: 孔维亮学号:070711009指导老师:付渊 200875 一、设计题目:扫雷游戏二、设计目的1使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。2培养学生综合运用所学知识独立完成课题的能力。3培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。4提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。5培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。6对学生掌握知识的深度、运用理论去处理问题的能力、实

2、验能力、课程设计能力、书面及口头表达能力进行考核。三、设计要求1汪洋和孔维亮组成设计小组。小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。2查阅相关资料,自学具体课题中涉及到的新知识。 3采用结构化、模块化程序设计方法,功能要完善,界面要美观。4按要求写出课程设计报告,并于设计结束后1周内提交。 一 概述1) 掌握数组指针的概念及其应用2) 培养团结合作精神2. 课程设计的要求要求我们有扎实的C语言知识,以及良好的编程习惯,能够熟练的应用循环,有毅力,还要求我们有较强的合作精神,善于总结。同时还要求我们自学C语言作图部分知识。在必要时还要上网查相关资料。3

3、. 课程设计的主要设计思想扫雷游戏主要用了一个10行10列的二维数组,刚开始利用random随机布雷。每一个程序最主要的是算法。扫雷游戏算法的重点是一开始统计好每个格子周围有多少雷,当鼠标左键点在格子上时做出判断,如果周围8个格子有雷则显示出雷数,如果没有雷则显示空白格(在四个角的格子显示周围3个格子,其它边缘的格子显示周围5个的状态),我们在主函数中用两个for语句来判断周围雷数。我们还加了鼠标处理函数。如果格子上有雷则调用函FailExitGame(),显示“Fail!”,游戏结束。若所有的雷都标出,且所有的格子都处理过,则调用函数ExitGame(),显示“OK,Good!”,游戏结束。

4、游戏结束后,按任意键出去。二 总体方案设计封面是由图形和动态文字,伴随声音接替出现。程序用了一个10行10列的二维数组表示扫雷界面。在游戏中要随机步雷,游戏开始前要统计好每个格子周围的雷数,游戏开始后可以点击鼠标玩游戏,游戏结束后,按任意键结束跳出游戏界面。整体框图主函数封面随机布雷函数扫雷算法函数取鼠标函数图形和声音函数判断是否胜利三 详细设计程序流程以下是主函数中的一些主要的。1. 主函数2. 主要定义常用到的常量,全局变量,有关的函数原形说明。然后随机布雷,统计好每个格子周围的雷数,画扫雷游戏界面,游戏接受鼠标操作,按任意键结束游戏,关闭图形系统,程序结束。BYTE MouseState

5、() /*等待接受鼠标命令函数*/ union REGS regs; regs.x.ax = 3; int86(MOUSE, ®s, ®s); /*鼠标端口*/ return(regs.x.bx); void MouseShow() /*鼠标显示函数*/ union REGS regs; regs.x.ax = 1; int86(MOUSE, ®s, ®s);void MouseHide() /*鼠标隐藏函数*/ union REGS regs; regs.x.ax = 2; int86(MOUSE, ®s, ®s);BOOL InitMouse() /*取

6、鼠标端口函数*/ union REGS regs; regs.x.ax = 0; int86(MOUSE, ®s, ®s); 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

7、Scr(int x,int y) /*返回雷区地址入口*/ return peekb(0xb800,y*160+x*2);void CursorHide() /*光标隐藏*/ _AH=3; geninterrupt(0x10); CursorMode=_CX; _AH=1; _CH=32; geninterrupt(0x10);void CursorShow() /*光标显示*/ _AH=1; _CX=CursorMode; geninterrupt(0x10);四、源程序如下:# include # include # include # include # include # includ

8、e # define BYTE unsigned char# define BOOL BYTE# define WORD unsigned int# define DWORD unsigned long# define TRUE 1# define FALSE !TRUE# define MOUSE 0x33 # define LBUTTON 1# define RBUTTON 2# define SX 35# define SY 7# define MINE 9 /*在有雷的地方定义为MINE*/BOOL InitMouse(); /*初始化鼠标*/BYTE Scr(int,int); /*

9、屏幕显示坐标函数*/BYTE MouseState(); /*等待接受鼠标命令*/void Edge(int,int); void TurnBack(int,int);void MouseShow(); /*鼠标显示函数*/void MouseHide(); /*鼠标隐藏函数*/void CursorShow(); /*光标显示函数*/void CursorHide(); /*光标隐藏函数*/void SetRange(int,int,int,int); void GetXY(int*,int*);void SetXY(int,int);void WaitMouse(); void WaitK

10、ey();void Prt(int,int,BYTE,BYTE); /*雷区的图形和颜色*/void Locate(BYTE,BYTE); void FailExitGame(); /*游戏失败*/void ExitGame(); /*游戏胜利*/ struct Snow int x;int y;int speed; snow100;int snownum=0;int size;int change=10;void *save1,*save2;void Copy();void DrawSnow();void Pr();void load();void welcome1();void welco

11、me2();void welcome3();void control();void star();BOOL Turn1010;BYTE Mine1010;BYTE Mark102;WORD CursorMode;int x,y;void main() int i; int Total=0; BYTE Button; BOOL QUIT=FALSE; time_t lt; /*定义时间变量*/ star(); /*调用游戏前景动画函数*/ if (!InitMouse() printf(Mouse not installed!); /*对鼠标端口进行判断*/ getch(); clrscr();

12、 /*清屏*/ CursorHide(); randomize(); /*定义取随机数*/ Locate(36,20); /*定义屏幕坐标*/ printf(Mines:%d ,0); /* Mines表示做标记的次数*/ lt = time(NULL); Locate(15,4); /*定义屏幕坐标*/ printf(The Calendar Time now is %sn, ctime(& lt); for (y=0;y10;y+) for (x=0;x10;x+) Mineyx=NULL; Turnyx=FALSE; for (i=0;i10;i+) /*随机产生地雷坐标*/ x=random(10); y=random(10); while (Mineyx) x=ran

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

当前位置:首页 > 资格认证/考试 > 自考

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