最简单的c语言迷宫游戏实验报告

  • 格式:doc
  • 大小:353.00 KB
  • 文档页数:15

下载文档原格式

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

一、内容:

1、本游戏主要实现了人控制键盘方向键使小人(*)走出迷宫。

2、具有的功能:

1)、在游戏菜单里人可以选择不同难度的游戏进行游戏;

2)、在游戏过程中,可以通过键盘方向键使小人移动,走出迷宫;

3)、在游戏过程中,当人碰到墙壁(#)的时候小人过不去;

4)、当人顺利完成游戏之后,输出“========you are win!======”字样,30秒钟后自动返回到游戏菜单;

5)、在游戏过程中,人可以通过按Esc键返回游戏菜单;也可以可以按0直接退出游戏;

6)、在游戏菜单里,按0键可以退出游戏。

3、具体应用:

1)、人主要同过键盘的1,2,3数字键来选择游戏难度;

2)、在游戏中通过Esc键来返回菜单;

3)、同过0键退出游戏。

二、上机环境

操作系统:windows7

开发工具:VC6.0

三、函数调用关系图

四、各函数功能说明

main() 主函数;

menu() 游戏菜单;

roadcake() 消去小人路径;

introduce() 游戏介绍;

system(“cls”) 消屏函数;

exit(0) 退出游戏;

drawmg1() 画初级难度迷宫;

drawmg2() 画中级难度迷宫;

drawmg3() 画高级难度迷宫;

control1() 控制初级难度游戏;

control2() 控制中级难度游戏;

control3() 控制高级难度游戏;

五、算法流程图

首先定义三个全局数组mg1[20][20]、mg2[30][30]、mg3[30][30]用于画出迷宫的地图;1表示墙(#),0表示空地();

Introduce( )函数里如果按Enter键,则调用menu( )函数,从键盘中输入相应的提示数字,进入难度不同的游戏;游戏的执行在此只初级难度进行描述,其余的难

度与其类似;

选了1后调用system(”cls”)进行清屏;drawmg1()函数进行迷宫的地图的绘

制,for(i=0;i<20;i++)

{

printf("\t\t\t");

for(j=0;j<20;j++)

{

ch=mg1[i][j];

switch(ch)

{

case 4: printf("*");break;

case 0: printf(" ");break;

case 1: printf("#");break;

}

if(num++%20==0) /*每行只能输出20个字符*/

printf(”\n”);

}

}

之后调用控制函数control1()进行控制小人移动路径,在control1()函数里用do—while()语句进行循环,while(1)进行死循环,再定义四个整型a,b,m,n即:

for(n=0;n<30;n++)

for(m=0;m<30;m++)

if(mg3[n][m]==4)

{

a=n; /*为后面调用roadcake()实现消除小人路径进行初始赋值*/

b=m;break;

}

用switch()语句选择方向键,在调用roadcake()函数进行消除小人路径

void roadcake(int *i,int *j)

{

int temp;

temp=*i; /*进行值交换,即数组值为0和值为4进行交换

*i=*j;

*j=temp;

}

完成第一个控制之后进行清屏和画新的游戏状态图,若在游戏进行中要退出游戏,只需按0键,调用exit(0)函数结束;若要返回游戏菜单,按Esc键掉用menu ()函数即可,重复以上步骤,直达游戏结束,此时掉用menu()函数自动返回菜单。

六、程序运行效果图

开始执行程序:

按Enter键后:

选择2后进入中级难度游戏:

按键盘方向键进行游戏,当顺利结束后:

与游戏菜单相同,选择不同的级别进行游戏。

七、总结

本次课设在设计算法和运用语言在一定程度上遇到困难,同时有些以前不知道的函数和算法,在这次实习中通过查找资料学到了许多;觉得紧紧学好语言是不够

的,得要知道怎样运用,即算法很重要;

八、参考文献

李春葆曾平喻丹丹《c语言程序设计(第2版)》清华大学出版社2011 九、程序清单

#include

#include

#include

#include

void drawmg1(void);

/*定义画迷宫函数*/

void drawmg2(void);

void drawmg3(void);

void control1(void);

/*定义控制函数*/

void control2(void);

void control3(void);

void roadcake(int *i,int *j);

/*定义交换函数*/

void menu(void);

/*定义菜单函数*/

void introduce(void);

/*定义游戏介绍函数*/

int

mg1[20][20]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} ,

{4,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1},

{1,1,1,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0,1},

{1,1,1,0,0,1,1,1,0,0,1,1,1,1,0,0,1,0,0,1},

{1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,1,0,0,1},

{1,0,0,1,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1},

{1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,1},

{1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,1},

{1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,1},

{1,0,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1},

{1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,1},

{1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,1,1,1},

{1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1},

{1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1},

{1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,1,0,0,1},

{1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,1},

{1,0,0,1,1,1,1,1,0,1,1,1,1,0,0,0,0,0,1,1},

{1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1},

{1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,3},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, };

int

mg2[30][30]={{1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1},

{1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0, 1,1,0,0,1},

{1,0,1,1,1,1,0,1,1,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,0, 1,0,0,0,1},

{1,0,0,0,1,0,0,0,0,1,0,1,0,1,1,1,0,1,0,1,1,0,1,1,0, 1,0,1,0,1},

{1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,0,0,1,0,1,1,0,1,1,0, 1,0,1,0,1},

{1,0,1,0,1,0,1,0,0,1,0,0,0,0,1,1,0,0,1,0,0,0,1,1,0, 0,1,1,0,1},

{1,0,1,0,0,0,0,1,1,1,1,1,1,0,1,1,1,0,1,0,1,1,1,0,0, 1,1,0,0,1},

{1,0,1,1,1,1,0,0,0,0,1,1,0,0,1,0,0,0,1,0,1,0,0,0,1, 1,1,0,1,1},

{1,0,0,0,0,1,1,1,0,0,0,0,1,0,1,0,1,1,1,0,0,1,1,0,0, 0,0,0,0,1},

{1,1,1,1,0,1,0,0,0,1,1,0,1,0,1,0,0,0,0,1,0,0,1,1,1, 1,0,1,1,1},

{1,0,0,0,0,0,1,1,0,1,1,0,1,0,1,0,0,0,0,1,0,0,1,1,1, 1,0,1,1,1},