c语言:
#include <stdio.h>//是键盘的右下角的上下左右键
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
int main()
{
char a[50][50]={"####################",//x=0
"# # # #",//x=1
"# ## # # #### ## ###",//x=2
"# # # # #### ## ###",//x=3
"##H# # # ## ###",//x=4
"######## #* ## ####",//x=5
"# ###*### ## #",//x=6
"### ### # ###",//x=7
"#### ## ## # ##",//x=8
"## O O # O ## ##",//x=9
"## # O # # ##",//x=10
"## ## ### ##",//x=11
"# #*### # ####",//x=12
"## ######## # # ####",//x=13
"## ##* # #",//x=14
"#### ##### ## #### #",//x=15
"#### # ## # #",//x=16
"#### ########### # #",//x=17
"#### ####### #",//x=18
"########O###########" //x=19
};//y=0123456789qwertyuiop
int i,x,y,p,q,b,v=0,v1=0;//x是x轴,y是y轴,p是终点x轴,q是终点y轴。
char ch;//每次输入
x=4; y=2; p=19; q=8;
for(i=0;i<=19;i++)
puts(a[i]);
while(x!=p||y!=q)
{
ch=getch();
if(ch==80)//下
{
if(a[x+1][y]!='#')
{
if(a[x+1][y]=='O' && a[x+2][y]!='#')
{
a[x+1][y]=' ';
a[x+2][y]='O';
system("cls");
for(i=0;i<=19;i++)//要再打印一次,因为continue语句直接跳回开头了。
puts(a[i]);
continue;
}
if(a[x+1][y]=='O' && a[x+2][y]=='#' || a[x+2][y]=='O' &&a[x+1][y]=='O' )
{
continue;
}
a[x][y]=' ';
x++;
a[x][y]='H';
}
}
if(ch==72)//上
{
if(a[x-1][y]!='#')
{
if(a[x-1][y]=='O' && a[x-2][y]!='#' && a[x-2][y]!='O')
{
a[x-1][y]=' ';
a[x-2][y]='O';
system("cls");
for(i=0;i<=19;i++)
puts(a[i]);
continue;
}
if(a[x-1][y]=='O' && a[x-2][y]=='#' || a[x-1][y]=='O' &&a[x-2][y]=='O' )
{
continue;
}
a[x][y]=' ';
x--;
a[x][y]='H';
}
}
if(ch==75)//左
{
if(a[x][y-1]!='#')
{
if(a[x][y-1]=='O' && a[x][y-2]!='#' && a[x][y-2]!='O')
{
a[x][y-1]=' ';
a[x][y-2]='O';
system("cls");
for(i=0;i<=19;i++)
puts(a[i]);
continue;
}
if(a[x][y-1]=='O' && a[x][y-2]=='#' || a[x][y-2]=='O' &&a[x][y-1]=='O' )
{
continue;
}
a[x][y]=' ';
y--;
a[x][y]='H';
}
}
if(ch==77)//右
{
if(a[x][y+1]!='#')
{
if(a[x][y+1]=='O' && a[x][y+2]!='#')
{
a[x][y+1]=' ';
a[x][y+2]='O';
system("cls");
for(i=0;i<=19;i++)
puts(a[i]);
continue;
}
if(a[x][y+1]=='O' && a[x][y+2]=='#' || a[x][y+2]=='O' &&a[x][y+1]=='O' )
{
continue;
}
a[x][y]=' ';
y++;
a[x][y]='H';
}
}
if(a[6][7] == 'O' && a[12][6] == 'O' && a[5][10] == 'O' && a[14][9] == 'O')
{
a[19][8] = ' ';
}
system("cls");
for(i=0;i<=19;i++)
puts(a[i]);
v++;
printf("%d步",v/2);
}
system("cls");
printf("你赢了!!点击任意键后进入下一关。\n");
system("pause");
char a2[50][50]={
"#########################",//x=0
"# # # ######",//x=1
"# ## # # #### ## ########",//x=2
"# # # # #### ## ########",//x=3
"##H# # # # ########",//x=4
"## ##### #* # #########",//x=5
"# ###*### # ######",//x=6
"### ### # ########",//x=7
"#### ## ## ### #######",//x=8
"## O O # O ## #######",//x=9
"## # # # # #######",//x=10
"## ## # # ### #######",//x=11
"# #*### O # #########",//x=12
"## ######## # # #########",//x=13
"## * ##* # ######",//x=14
"# ##### ####### ######",//x=15
"# # # ## # ######",//x=16
"# # #### ###### # ######",//x=17
"# O ###### ######",//x=18
"## # ##O################",//x=19
"### ##OO###############",//x=20
"#########O###############",//x=21
"########OO###############",//x=22
"########O################",//x=23
"########x################" //x=24
};//y=0123456789qwertyuiopasdfg
x=4; y=2; p=24; q=8;
for(i=0;i<=24;i++)
puts(a2[i]);
while(x!=p||y!=q)
{
ch=getch();
if(ch==80)//下
{
if(a2[x+1][y]!='#')
{
if(a2[x+1][y]=='O' && a2[x+2][y]!='#')
{
a2[x+1][y]=' ';
a2[x+2][y]='O';
system("cls");
for(i=0;i<=24;i++)//要再打印一次,因为continue语句直接跳回开头了。
puts(a2[i]);
continue;
}
if(a2[x+1][y]=='O' && a2[x+2][y]=='#' || a2[x+2][y]=='O' &&a2[x+1][y]=='O' )
{
continue;
}
a2[x][y]=' ';
x++;
a2[x][y]='H';
}
}
if(ch==72)//上
{
if(a2[x-1][y]!='#')
{
if(a2[x-1][y]=='O' && a2[x-2][y]!='#' && a2[x-2][y]!='O')
{
a2[x-1][y]=' ';
a2[x-2][y]='O';
system("cls");
for(i=0;i<=24;i++)
puts(a2[i]);
continue;
}
if(a2[x-1][y]=='O' && a2[x-2][y]=='#' || a2[x-1][y]=='O' &&a2[x-2][y]=='O' )
{
continue;
}
a2[x][y]=' ';
x--;
a2[x][y]='H';
}
}
if(ch==75)//左
{
if(a2[x][y-1]!='#')
{
if(a2[x][y-1]=='O' && a2[x][y-2]!='#' && a2[x][y-2]!='O')
{
a2[x][y-1]=' ';
a2[x][y-2]='O';
system("cls");
for(i=0;i<=24;i++)
puts(a2[i]);
continue;
}
if(a2[x][y-1]=='O' && a2[x][y-2]=='#' || a2[x][y-2]=='O' &&a2[x][y-1]=='O' )
{
continue;
}
a2[x][y]=' ';
y--;
a2[x][y]='H';
}
}
if(ch==77)//右
{
if(a2[x][y+1]!='#')
{
if(a2[x][y+1]=='O' && a2[x][y+2]!='#')
{
a2[x][y+1]=' ';
a2[x][y+2]='O';
system("cls");
for(i=0;i<=24;i++)
puts(a2[i]);
continue;
}
if(a2[x][y+1]=='O' && a2[x][y+2]=='#' || a2[x][y+2]=='O' &&a2[x][y+1]=='O' )
{
continue;
}
a2[x][y]=' ';
y++;
a2[x][y]='H';
}
}
system("cls");
for(i=0;i<=24;i++)
puts(a2[i]);
v1++;
printf("%d步",v1);
if(b==2)
{
continue;
}
if(a2[6][7] == 'O' && a2[12][6] == 'O' && a2[5][10] == 'O' && a2[14][9] == 'O')
{
a2[19][8] = ' ';
a2[20][8] = ' ';
a2[22][8] = ' ';
a2[23][8] = ' ';
b++;
}
if(a2[14][3]=='O')
{
a2[20][9] = ' ';
a2[21][9] = ' ';
a2[22][9] = ' ';
b++;
}
}
return 0;
printf("你赢了!!!")
system("pause");
}