迷宫游戏设计思路与功能体会及改进报告
学号:150809333
一、 内容:
1、 本游戏主要实现了人控制键盘方向键使小人(*)走出迷宫。
2、 具有的功能:
1)、在游戏菜单里人可以选择不同难度的游戏进行游戏;
2)、在游戏过程中,可以通过键盘方向键使小人移动,走出迷宫;
3)、在游戏过程中,当人碰到墙壁(#)的时候小人过不去;
4)、当人顺利完成游戏之后,输出“========you arewin!======”字样,30秒钟后自动返回
到游戏菜单;
5)、在游戏过程中,人可以通过按Esc键返回游戏菜单;也可以可以按0直接退出游戏;
6)、在游戏菜单里,按0键可以退出游戏。
3、具体应用:
1)、人主要同过键盘的1,2,3数字键来选择游戏难度;
2)、在游戏中通过Esc键来返回菜单;
3)、同过0键退出游戏。
二、 上机环境
操作系统:windows10
开发工具:C-Free
三、 各函数功能说明
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)
{
case4: printf("*");break;
case0: printf(" ");break;
case1: 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()函数进行消除小人路径
voidroadcake(int *i,int *j)
{
int temp;
temp=*i; /*进行值交换,即数组值为0和值为4进行交换
*i=*j;
*j=temp;
}
完成第一个控制之后进行清屏和画新的游戏状态图,若在游戏进行中要退出游戏,只需按0键,调用exit(0)函数结束;若要返回游戏菜单,按Esc键掉用menu()函数即可,重复以上步骤,直达游戏结束,此时掉用menu()函数自动返回菜单。
五、 总结
本次设计改进作业使我对于C语言有了更深的理解,不仅重新回顾了上学期所学的基础内容,还有了进一步的感悟,让我知道了,不管设计多么复杂的程序,“#include<stdio.h>”等基础内容都是必不可少的,int,for循环,printf等更是不可或缺,它们虽然基础,但是却为我们建立了一个良好的程序架构,简单与简单之间相互组合,循环之中套着循环,才能组成更为复杂的程序,同样也才能使得程序的功能更为完善,在这里由衷的感谢王成金老师带领我们走过了这半个学期的学习与生活,接下来就写出此次程序设计的源代码以及简单的改进报告。
六、 程序源代码
#include<stdio.h>