要制作迷宫小游戏,我们要利用二维数组搭建场景,制作一个简易的迷宫
#include#include #include #include //小游戏所需的所有头文件 int main() { char a[100][100] = {"######", "#o # ", "# ## #", "# # #", "## #", "######" };//迷宫出口为a[1][5] //我们需要输出这个迷宫。 for (i = 0; i < 6; i++) //通过数组的遍历,输出定义的迷宫; puts(a[i]); return 0; }
第一步迷宫制作完成后,我们就应该考虑如何让小球移动起来
为了游戏体验感
我们使用W,S,A,D来分别小球控制上下左右的移动
具体操作
在游戏中我们需要输入W,S,A,D中的一个,来控制小球的移动
以W为例我们来看看小球上移时程序该怎么运行
我们想让小球向上移动,基本条件是小球上方没有‘#’
然后小球才可以向上移动;
小球上移后行数X+1,列数Y不变
即小球下一个的位置在a[x+1][y]
这就是我们点击W后小球上移的程序原理
注:为了游戏的体验感,我们输入WSAD是使用getch()
各位如果有兴趣也可以试一下使用getchar和getche是什么效果(吐血小游戏)
ch = _getch();
if (ch == 'a')
{
if (a[x][y - 1] != '#')
{
a[x][y] = ' ';
y--;
a[x][y] = 'o';
}
}
其他的 S,A,D,也是类似的
S原理
ch = _getch();
if (ch == 's')
{
if (a[x + 1][y] != '#')
{
a[x][y] = ' ';
x++;
a[x][y] = 'o';
}
}
A原理
if (ch == 'a')
{
if (a[x][y - 1] != '#')
{
a[x][y] = ' ';
y--;
a[x][y] = 'o';
}
}
D原理
if (ch == 'd')
{
if (a[x][y + 1] != '#')
{
a[x][y] = ' ';
y++;
a[x][y] = 'o';
}
}
我们在利用WSAD移动时,不希望小球出现在原来的位置
我们需要在每一次输入WSAD时用system(“cls”)进行一次清零;
我们需要利用while循环是程序在未到达出口时持续运行
while (x != 1 || y != 5)
{
ch = _getch();
if (ch == 's')
{
if (a[x + 1][y] != '#')
{
a[x][y] = ' ';
x++;
a[x][y] = 'o';
}
}
if (ch == 'w')
{
if (a[x - 1][y] != '#')
{
a[x][y] = ' ';
x--;
a[x][y] = 'o';
}
}
if (ch == 'a')
{
if (a[x][y - 1] != '#')
{
a[x][y] = ' ';
y--;
a[x][y] = 'o';
}
}
if (ch == 'd')
{
if (a[x][y + 1] != '#')
{
a[x][y] = ' ';
y++;
a[x][y] = 'o';
}
}
这个小游戏的器官大致就是这样
以下就是整个小游戏的源码
#include#include #include #include int main() { char a[100][100] = { "######", "#o # ", "# ## #", "# # #", "## #", "######" }; int i, x = 1, y = 1;//p,q存储迷宫出口的位置 for (i = 0; i < 6; i++) puts(a[i]); char ch; while (x != 1 || y != 5) { ch = _getch(); if (ch == 's') { if (a[x + 1][y] != '#') { a[x][y] = ' '; x++; a[x][y] = 'o'; } } if (ch == 'w') { if (a[x - 1][y] != '#') { a[x][y] = ' '; x--; a[x][y] = 'o'; } } if (ch == 'a') { if (a[x][y - 1] != '#') { a[x][y] = ' '; y--; a[x][y] = 'o'; } } if (ch == 'd') { if (a[x][y + 1] != '#') { a[x][y] = ' '; y++; a[x][y] = 'o'; } } system("cls"); if(x==1&&y==5) printf("成功过关n"); for (i = 0; i < 6; i++) puts(a[i]); } return 0; }
这就是最后的运行结果,走出迷宫后会出现成功过关四个字
我们也可以对走过的步数进行计数;
定义一个count;每移动一次;count++
#include#include #include #include int main() { char a[1000][1000] = {"##########", "#o # # ", "# ## ## ##", "# # ##", "## ## ##", "##########" }; int i, x = 1, y = 1; int count=0; for (i = 0; i < 11; i++) puts(a[i]); char ch; while (x != 1|| y != 9) { ch = _getch(); count++; if (ch == 's') { if (a[x + 1][y] != '#') { a[x][y] = ' '; x++; a[x][y] = 'o'; } } if (ch == 'w') { if (a[x - 1][y] != '#') { a[x][y] = ' '; x--; a[x][y] = 'o'; } } if (ch == 'a') { if (a[x][y - 1] != '#') { a[x][y] = ' '; y--; a[x][y] = 'o'; } } if (ch == 'd') { if (a[x][y + 1] != '#') { a[x][y] = ' '; y++; a[x][y] = 'o'; } } system("cls"); if (x == 1 && y == 9) printf("成功过关n"); for (i = 0; i < 6; i++) puts(a[i]); } printf("你一共走了%d步", count); Sleep(5000); return 0; }
最后的结果中会出现你总共移动的步数
tips:
我们可以将迷宫改动的复杂一点,来提高游戏体验感;由你们自己改造迷宫
我们也可以对走的步数进行计数,以此来比较谁到达终点的效率高
好了,学会了就可以快乐游戏了;
升级版来了(增加了步数统计和登陆界面,游戏菜单等)
#include#include #include #include int main() { printf(" 小球球走迷宫小游戏 nn"); printf("______________________________________________________________________________________________________________________n"); printf(" 开始游戏 1nn"); printf(" 游戏音量 2nn"); printf(" 游戏设置 3nn"); printf(" 关闭游戏 4nn"); int k; scanf_s("%d",&k); system("cls"); if(k==1) { printf("使用adsw控制上下左右移动nnn"); char a[100][100] = { "######", "#o # ", "# ## #", "# # #", "## #", "######" }; int i, x = 1, y = 1;//p,q存储迷宫出口的位置 for (i = 0; i < 6; i++) puts(a[i]); char ch; int count=0; while (x != 1 || y != 5) { ch = _getch(); count++; if (ch == 's') { if (a[x + 1][y] != '#') { a[x][y] = ' '; x++; a[x][y] = 'o'; } } if (ch == 'w') { if (a[x - 1][y] != '#') { a[x][y] = ' '; x--; a[x][y] = 'o'; } } if (ch == 'a') { if (a[x][y - 1] != '#') { a[x][y] = ' '; y--; a[x][y] = 'o'; } } if (ch == 'd') { if (a[x][y + 1] != '#') { a[x][y] = ' '; y++; a[x][y] = 'o'; } } system("cls"); if(x==1&&y==5) printf("成功过关nnn"); for (i = 0; i < 6; i++) puts(a[i]); } printf("你一共走了%d步nn",count); } else if(k==4) printf("游戏结束nn"); else if(k==2) printf("打开qq音乐,放战歌,乌拉...nnn"); else if(k==3) printf("请联系作者,并告诉他你想要的游戏设置,访问CSDN——2654501228nnn"); system("pause"); return 0; }



