C程序课程设计报告(扫雷游戏)

  • 格式:doc
  • 大小:86.50 KB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C程序设计

扫雷游戏

一、设计题目:扫雷游戏

二、设计目的

1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。

2.培养学生综合运用所学知识独立完成课题的能力。

3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。

4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基

本素质。

5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。

6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。

三、设计要求

1.汪洋和孔维亮组成设计小组。小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。

2.查阅相关资料,自学具体课题中涉及到的新知识。

3.采用结构化、模块化程序设计方法,功能要完善,界面要美观。

4.按要求写出课程设计报告,并于设计结束后1周内提交。

一概述

1)掌握数组指针的概念及其应用

2)培养团结合作精神

2. 课程设计的要求

要求我们有扎实的C语言知识,以及良好的编程习惯,能够熟练的应用循环,有毅力,还要求我们有较强的合作精神,善于总结。同时还要求我们自学C语言作图部分知识。在必要时还要上网查相关资料。

3.课程设计的主要设计思想

扫雷游戏主要用了一个10行10列的二维数组,刚开始利用random随机布雷。

每一个程序最主要的是算法。扫雷游戏算法的重点是一开始统计好每个格子周围有多少雷,当鼠标左键点在格子上时做出判断,如果周围8个格子有雷则显示出雷数,如果没有雷则显示空白格(在四个角的格子显示周围3个格子,其它边缘的格子显示周围5个的状态),我们在主函数中用两个for语句来判断周围雷数。我们还加了鼠标处理函数。

如果格子上有雷则调用函FailExitGame(),显示“Fail!”,游戏结束。若所有的雷都标出,且所有的格子都处理过,则调用函数ExitGame(),显示“OK,Good!”,游戏结束。游戏结束后,按任意键出去。

二总体方案设计

封面是由图形和动态文字,伴随声音接替出现。程序用了一个10行10列的二维数组表示扫雷界面。在游戏中要随机步雷,游戏开始前要统计好每个格子周围的雷数,游戏开始后可以点击鼠标玩游戏,游戏结束后,按任意键结束跳出游戏界面。

整体框图

三详细设计

程序流程

以下是主函数中的一些主要的。

1.主函数

2.主要定义常用到的常量,全局变量,有关的函数原形说明。然后随机布雷,统计好

每个格子周围的雷数,画扫雷游戏界面,游戏接受鼠标操作,按任意键结束游戏,关闭图形系统,程序结束。

BYTE MouseState() /*等待接受鼠标命令函数*/

{

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() /*取鼠标端口函数*/ {

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 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

# include

# 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); /*屏幕显示坐标函数*/

BYTE MouseState(); /*等待接受鼠标命令*/

void Edge(int,int);

void TurnBack(int,int);

void MouseShow(); /*鼠标显示函数*/