自己学习C语言的时候,没事的时候想的代码,用的VC++6.0,原理粗鄙,就是用一些符号来表示推箱子里面的几个对象,整个图就是一个符号矩阵,代码里面有说明。
代码如下,面向结构的编程确实感觉很累赘。
里面只写了前六关,后面把操作写成了一个很大的函数。
喜欢的可以自己复制过去试一试。
#include "stdio.h"
#include "conio.h"
#include "malloc.h"
int r = 0;
void main()
{
void f(char **a,int,int,int c[2]);
int i,j;
int c[2];
char **Q;
char a1[8][8] = {" ### "," #0# "," # ####","###+ +0#",\
"#0 +a###","####+# "," #0# "," ### "};
char a2[9][9] = {"##### ","# # ","# + # ###","# +a# #0#",\
"###+###0#"," ## 0#"," # # #"," # ####"," ##### "};
char a3[7][10] = {" ####### "," # ###","##+### #","# a+ + #",\
"# 00# + ##","##00# # "," ######## "};
char a4[8][6] = {" #### ","## # ","# +# ","## ##",\
"##+a #","#0++ #","#00*0#","######"};
char a5[8][8] = {" ##### "," # a### "," # + # ","### # ##",\
"#0# # #","#0+ # #","#0 + # ","########"};
char a6[11][13] = {" ####### ","#### # ","# 0### # ","# # # ## ","# # + +#0 # ",\
"# # * # # ","# 0#+ + # # ","## # # ###"," # ###0 a#"," # ## #"," ############"};
printf("欢迎来到推箱子小游戏。\n\
操作须知:wasd为移动键,每按一次移动键若要按回车才能继续,则可以按一次shift键可以使按了移动键自动继续\n\
按r键为重新开始当前关卡\n\
符号:\n#:墙\na:人\n+:箱子\n0:箱子终点\n*:箱子进入终点\n@:人进入箱子终点\n\
按回车键进入游戏第一关\n");
getchar();
again1:
{
c[0] = 4;c[1] = 4;
printf("第一关\n");
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
printf ("%c",*(*(a1+i)+j));
}
printf("\n");
}
Q = (char **)malloc(sizeof(char)*8);
for(i = 0;i<8;i++)
{
Q[i] =(char *)malloc(sizeof(char)*8);
}
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
*(*(Q+i)+j) = a1[i][j];
}
}
f((char **)Q,8,8,c);
}
if(r)
{
goto again1;
}
printf("\n点击回车进入下一关");
getch();
again2:{
c[0] = 3;c[1] = 3;
printf("\n第二关:\n");
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
printf ("%c",*(*(a2+i)+j));
}
printf("\n");
}
Q = (char **)malloc(sizeof(char)*9);
for(i = 0;i<9;i++)
{
Q[i] =(char *)malloc(sizeof(char)*9);
}
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
*(*(Q+i)+j) = a2[i][j];
}
}
f((char **)Q,9,9,c);
}
if(r)
{
goto again2;
}
printf("\n点击回车进入下一关");
getch();
again3:
{
c[0] = 3;c[1] = 3;
printf("\n第三关:\n");
for(i=0;i<7;i++)
{
for(j=0;j<10;j++)
{
printf ("%c",*(*(a3+i)+j));
}
printf("\n");
}
Q = (char **)malloc(sizeof(char)*7);
for(i = 0;i<7;i++)
{
Q[i] =(char *)malloc(sizeof(char)*10);