#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<string.h>
int i,x,y;//x,y为o点的位置坐标
char ch,n[27][52];//输入字符在ch中来控制o点的移动,原始空地图
void map1()//第一张地图
{
char m[27][52]=
{
"#o#################################################",
"# ### ## # ########### #",
"# # ###### # # # ## # ######### ##### #",
"####### # # # ## # # # #### # # # #",
"# # # # ## # # # # # # # ### ##### # ##### #",
"# # # # ## # ## # # ## ## # # # #",
"# # # ###### # ########## # ########## # ##### # #",
"# # # # # # # # # # # # #",
"# # ########## ### ######## # # # ####### # ##### #",
"# ## ### # # # # # # #",
"##### # ######### # #### # # ########### # #####",
"# # # # # ### # # # #",
"# ## # # #### ###### #### # ######### #### ######",
"# # # # ############### # # # # # ##",
"## ######## # ####### ## # # ## # # ##",
"## # # ##### ## ##### # # # # # # # ##",
"## # #### # ############## # # # ###### ###### # ##",
"## # #### # # # # # # # ##",
"# # ## # # # ############ ##### ## ######### ##",
"# ## ## ### # # #### # # # ### ## ##",
"# ## ## # # #### # # # ### # # ########",
"# # ######### # # # ####### # ## # #",
"## # # ### # # #### ######## #",
"## ############### # # ##### # ### ####### ### #",
"## # # ## # #",
"#################################################$#"
};
printf("the one \n");
Sleep(1000);
system("cls");
for(i=0;i<27;i++)
strcpy(n[i],m[i]);//将地图复制到原始空地图里
x=0;
y=1;//定义o点的原始坐标
}
void map2()//第二张地图
{
char m[27][52]=
{
"#o#################################################",
"# ### ## # ########### #",
"# # ###### # # # ## # ######### ##### #",
"####### # # # ## # # # #### # # # #",
"# # # # ## # # # # # # # ### ##### # ##### #",
"# # # # ## # ## # # ## ## # # # #",
"# # # ###### # ########## # ########## # ##### # #",
"# # # # # # # # # # # # #",
"# # ########## ### ######## # # # ####### # ##### #",
"# ## ### # # # # # # #",
"##### # ######### # #### # # ########### # #####",
"# # # # # ### # # # #",
"# ## # # #### ###### #### # ######### #### ######",
"# # # # ############### # # # # # ##",
"## ######## # ####### ## # # ## # # ##",
"## # # #####+## ##### # # # # # # # ##",
"## # #### # ############## # # # ###### ###### # ##",
"## # #### # # # # # # # # ##",
"# # ## # # # ############ ##### ## ######### ##",
"# ## ## ### # # #### # # # ### ## ##",
"# ## ## # # #### # # # ##### ##########",
"# # ######### # # # ####### #- ## #+ #",
"## # # ### # # ### ######## #",
"## ###############-# # ##### # ### ####### ### #",
"## # # ## # #",
"#################################################$#"
};
printf("the two \n");
printf("当你走到‘-’位置时,会瞬间移动到‘+’位置!\n");
Sleep(3000);
system("cls");
for(i=0;i<27;i++)
strcpy(n[i],m[i]);
x=0;
y=1;
}
void map3()//第三张地图
{
char m[27][52]=
{
"#o#################################################",
"# ### ## # ########### #",
"# # ###### # # # ## # ######### ##### #",
"####### # - # # ## # # # #### # # # #",
"# # # # ## # # # # # # # ### ##### # ##### #",
"# # # # ## # ## # # ## ## # # # #",
"# # # ###### # ########## # ########## # ##### # #",
"# # # # # # # # # # # # #",
"# # ########## ### ######## # # # ####### # ##### #",
"# ## ### # # # # # # #",
"##### # ######### # #### # # ########### # #####",
"# # # # # ### # # # #",
"# ## # # #### ###### #### # ######### #### ######",
"# # # # ############### # # # # # ##",
"## ######## # ####### ## # # ## # # ##",
"## # # ##### ## ##### # # # # # # # ##",
"## # #### # ############## # # # ###### ###### # ##",
"## # #### # # # # # # # ##",
"# # ## # # # ############ ##### ## ######### ##",
"# ## ## ### # # #### # # # ### ## ##",
"# ## ## # # #### # # # ### # # ########",
"# # ######### # # # ####### # ## # +#",
"## # # ### # # #### ######## #",
"## ############### # # ##### # ### ####### ### #",
"## # # ## # #",
"#################################################$#"
};
printf("the three \n");
printf("当你走到‘-’位置时,会瞬间移动到‘+’位置!\n");
Sleep(2000);
system("cls");
for(i=0;i<27;i++)
strcpy(n[i],m[i]);
x=0;
y=1;
}
void move()//通过'w','s','a','d'来控制o点的上下左右移动
{
ch=getch();//输入一个字符
if(ch=='a'&&n[x][y-1]!='#')
{
n[x][y]=' ';
y--;
n[x][y]='o';
}
if(ch=='d'&&n[x][y+1]!='#')
{
n[x][y]=' ';
y++;
n[x][y]='o';
}
if(ch=='w'&&n[x-1][y]!='#')
{
n[x][y]=' ';
x--;
n[x][y]='o';
}
if(ch=='s'&&n[x+1][y]!='#')
{
n[x][y]=' ';
x++;
n[x][y]='o';
}
}
void drawmap()//画出地图
{
for(i=0;i<27;i++)puts(n[i]);
}
void flicker(int x1,int y1,int x2,int y2)//瞬间移动
{
system("cls");
n[x1][y1]=' ';
x=x2;
y=y2;
n[x][y]='o';
drawmap();
}
int main()//主函数开始
{
printf("欢迎来到走迷宫小游戏!\n你需要控制o点走到$位置!\n");
Sleep(2000);
system("cls");
map1();//输出第一张地图
while(1)
{
drawmap();
move();
if(x==25&&y==49)break;
system("cls");
}
printf("you win!\n");
Sleep(1000);
system("cls");
map2();//输出第二张地图
while(1)
{
drawmap();
move();
if(x==23&&y==18)
flicker(23,18,15,17);
if(x==21&&y==34)//如果o点到达‘-’,这传送到‘+’点
flicker(21,34,21,42);
if(x==25&&y==49)break;
system("cls");
}
printf("you win!\n");
Sleep(1000);
system("cls");
map3();//输出第三张地图
while(1)
{
drawmap();
move();
if(x==3&&y==11)//如果o点到达‘-’,这传送到‘+’点
{system("cls");
n[x][y]=' ';
x=21;
y=49;
n[x][y]='o';
drawmap();
}
if(x==25&&y==49)break;
system("cls");
}
printf("you win!\n");
return 0;
}