C|c语言小游戏 迷宫小游戏(附源码)



第一步 要制作迷宫小游戏,我们要利用二维数组搭建场景,制作一个简易的迷宫

#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; }


【C|c语言小游戏 迷宫小游戏(附源码)】第一步迷宫制作完成后,我们就应该考虑如何让小球移动起来
为了游戏体验感
我们使用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; }

C|c语言小游戏 迷宫小游戏(附源码)
文章图片

C|c语言小游戏 迷宫小游戏(附源码)
文章图片

这就是最后的运行结果,走出迷宫后会出现成功过关四个字
我们也可以对走过的步数进行计数;
定义一个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; }


C|c语言小游戏 迷宫小游戏(附源码)
文章图片

最后的结果中会出现你总共移动的步数


tips:
我们可以将迷宫改动的复杂一点,来提高游戏体验感;由你们自己改造迷宫
我们也可以对走的步数进行计数,以此来比较谁到达终点的效率高
好了,学会了就可以快乐游戏了;

    推荐阅读