C语言迷宫游戏
这篇文章是给学完并学懂了C语言的分支(选择和循环)结构和二维数组的朋友看的。
要做一个游戏或者程序先要想好有那些要求,以下是我认为一个迷宫必带的要求:
- 迷宫要先打印出来(要设置墙、空气、小球的起点),是墙就不能,是空气就可以走。
- 每次输入'w'、'a'、's'、'd'为上、左、下、右,并每次输入后,不用按回车或任意键继续就能输出,每次走一步(按键盘的键走)后,先清屏再输出现在迷宫以及小球现在在哪里。
- 要有起点和终点的X、Y轴,如果小球与终点的位置相同了,就提示胜利并退出游戏。
定义地图
首先我们要打印出地图,因为地图有长和宽的长度,所以我们要用二维数组来定义一个地图,代码如下:
char map[50][50]={
"######",//申请50*50的二维字符串当迷宫地图,但这里是6*6的地图
"#O # ",//'#'是墙(不可以走的地方)
"# ## #",//'O'是起点(可控制)
"# # #",//' '是空气(可以走的地方)
"## #",
"######",//横竖都是012345,012345(数组下标从0开始)
};
打印地图方法一
定义完二维数组,就要把它打印出来,代码如下:
int i,j;
for(i=0;i<6;i++)//i循环用来控制打印地图的行数
{
for(j=0;j<6;j++)//j循环用来控制打印地图的列数
{
printf("%c",map[i][j]);//打印每次i和j的行数和列数
}
printf("\n");//一行打印完毕需要换行
}
打印地图方法二
上面这段代码是通过双重循环打印出地图的每行每列。
如果学过puts函数来输出字符数组的朋友可以这样写,代码如下:
int i;
for(i=0;i<6;i++)//从0到5,共进行了6次循环,依次输出迷宫的第0至5行
puts(map[i]);//表示输出每一行的字符串
是不是简单了许多,不懂puts函数的朋友也没关系,你用第一种方法就行,对于puts函数你只需要知道:
- 使用 puts() 显示字符串时,系统会自动在其后添加一个换行符。
- 只有遇到 '\0' 也就是字符串结束标志符才会停止。
定义起点和终点位置
然后再定义起点和终点的X、Y轴位置(当然上面定义二维数组时已经看得出来了),代码如下:
int x,y,p,q;//x,y为小球(起点"O")初始位置竖横轴
//p,q为空白(终点" ")结束位置竖横轴
x=1;y=1;//x为竖轴初始位置为1,y为初始横轴位置为1
p=1;q=5;//p为竖轴结束位置为1,q为结束横轴位置为5
总结以上代码
目前为止,我们做了定义地图、打印地图、定义起点终点的X、Y轴,目前全部代码如下:
#include<stdio.h>//printf("");的头文件
#include<stdlib.h>//system("");的头文件
#include<Windows.h>//Sleep();的头文件
int m1ain(void)
{
char map[50][50]={
"######",//申请50*50的二维字符串当迷宫地图,但这里是6*6的地图
"#O # ",//'#'是墙(不可以走的地方)
"# ## #",//'O'是起点(可控制)
"# # #",//' '是空气(可以走的地方)
"## #",
"######",//横竖都是012345,012345(数组下标从0开始)
};
int i,x,y,p,q;//x,y为小球(起点"O")初始位置竖横轴
//p,q为空白(终点" ")结束位置竖横轴
int ch;//申请需要输入的字符(名称是ch),当移动(w,a,s,d)
x=1;y=1;p=1;q=5;//x为竖轴初始位置为1,y为初始横轴位置为1
//p为竖轴结束位置为1,q为结束横轴位置为5
for(i=0;i<6;i++)//从0到5,共进行了6次循环,依次输出迷宫的第0至5行
puts(map[i]);//表示输出每一行的字符串
Sleep(5000);//上面代码全部执行完毕后过五秒自动关闭程序
return 0;
}
现在我们就要想办法控制小球了,这里利用键盘上的'w''s''a''d'四个键来控制这个小球进行上、下、左、右移动,当然你如果喜欢,也可以用别的按键。
第一步:先来控制小球向下移动