前言
本程序为啊哈C所教类容可达到的一种程度。
一、啊哈c是什么?
啊哈C是献给青少年,或感兴趣的朋友。
当一个技能可为你所用,便有了坚持的源头,这就是啊哈C
二、使用步骤
全部代码:
#include<stdio.h>
#include<Stdlib.h>
#include<windows.h>
int main()
{
int tc=3;
char hj;
while(tc==3)
{
int i;
for(i=1;i<=4;i++)
{
printf("\n");
}
for(i=1;i<=35;i++)
{
printf(" ");
}
puts("《 推 箱 子 》");
puts("\n");
puts(" 游戏简介:经典的推箱子游戏是一个来自日本的古老游戏,目的是训练人的逻辑思维。");
puts("在一个狭小的仓库中,要求把木箱从开始位置推到指定位置。仓库中有障碍物,稍不小心就回出现无法移动或者道路被堵的情况,而且箱子只能推·不能拉,需要巧妙地运用空间和通道,合理安排移动的次序和位置,才能顺利完成任务。");
for(i=1;i<=4;i++)
{
printf("\n");
}
puts(" 图形说明:“#”表示墙 “o”表示箱子 “S”表示人 “*”表示目的地 “@”表到达成功");
puts(" 操作说明:“w”人向上移动 “s”人向下运动 “a”人向左移动 “d”人向右移动");
puts("");
for(i=1;i<=20;i++)
{
printf(" ");
}
puts("关卡1 关卡2 关卡3 关卡4");
puts(" ");
puts("输入对应关卡数开始(退出按q) 关卡退出按k");
hj=getch();
system("cls");
if(hj=='1')
{
char txz[50][50]={ "##########",//[0]
"## ###",//[1]
"##o### #",//[2]
"# s o o #",//[3]
"# **# o ##",//[4]
"##**# ##",//[5]
"##########",//[6]
};
for (i=0;i<=8;i++)
{
puts(txz[i]);
}
char aj;
int x,y;
int a1,b1,a2,b2,a3,b3,a4,b4;
x=3;
y=2;
a1=2;
b1=2;
a2=3;
b2=4;
a3=3;
b3=7;
a4=4;
b4=6;
while(txz[4][2]!='@'||txz[4][3]!='@'||txz[5][2]!='@'||txz[5][3]!='@')
{
aj=getch();
if(aj=='k')
{
break;
}
system("cls");
if(aj=='w')
{
if(txz[x-1][y]!='#')
{
if(x-1==a1&&y==b1)
{
if(txz[a1-1][b1]!='#'&&txz[a1-1][b1]!='o'&&txz[a1-1][b1]!='@')
{
txz[a1][b1]=' ';
a1--;
txz[a1][b1]='o';
}
}
if(x-1==a2&&y==b2)
{
if(txz[a2-1][b2]!='#'&&txz[a2-1][b2]!='o'&&txz[a2-1][b2]!='@')
{
txz[a2][b2]=' ';
a2--;
txz[a2][b2]='o';
}
}
if(x-1==a3&&y==b3)
{
if(txz[a3-1][b3]!='#'&&txz[a3-1][b3]!='o'&&txz[a3-1][b3]!='@')
{
txz[a3][b3]=' ';
a3--;
txz[a3][b3]='o';
}
}
if(x-1==a4&&y==b4)
{
if(txz[a4-1][b4]!='#'&&txz[a4-1][b4]!='o'&&txz[a4-1][b4]!='@')
{
txz[a4][b4]=' ';
a4--;
txz[a4][b4]='o';
}
}
if(txz[x-1][y]!='o')
{
txz[x][y]=' ';
if(txz[x-1][y]=='@'&&txz[x-2][y]=='#')
{
x++;
}
if(txz[x-1][y]=='o'&&txz[x-2][y]=='@')
{
x++;
}
if(txz[x-1][y]=='@'&&txz[x-2][y]=='@')
{
x++;
}
x--;
txz[x][y]='s';
}
}
}
if(aj=='s')
{
if(txz[x+1][y]!='#')
{
if(x+1==a1&&y==b1)
{
if(txz[a1+1][b1]!='#'&&txz[a1+1][b1]!='o'&&txz[a1+1][b1]!='@')
{
txz[a1][b1]=' ';
a1++;
txz[a1][b1]='o';
}
}
if(x+1==a2&&y==b2)
{
if(txz[a2+1][b2]!='#'&&txz[a2+1][b2]!='o'&&txz[a2+1][b2]!='@')
{
txz[a2][b2]=' ';
a2++;
txz[a2][b2]='o';
}
}
if(x+1==a3&&y==b3)
{
if(txz[a3+1][b3]!='#'&&txz[a3+1][b3]!='o'&&txz[a3+1][b3]!='@')
{
txz[a3][b3]=' ';
a3++;
txz[a3][b3]='o';
}
}
if(x+1==a4&&y==b4)
{
if(txz[a4+1][b4]!='#'&&txz[a4+1][b4]!='o'&&txz[a4+1][b4]!='@')
{
txz[a4][b4]=' ';
a4++;
txz[a4][b4]='o';
}
}
if(txz[x+1][y]!='o')
{
txz[x][y]=' ';
if(txz[x+1][y]=='@'&&txz[x+2][y]=='#')
{
x--;
}
if(txz[x+1][y]=='o'&&txz[x+2][y]=='@')
{
x--;
}
if(txz[x+1][y]=='@'&&txz[x+2][y]=='@')
{
x--;
}
x++;
txz[x][y]='s';
}
}
}
if(aj=='a')
{
if(txz[x][y-1]!='#')
{
if(x==a1&&y-1==b1)
{
if(txz[a1][b1-1]!='#'&&txz[a1][b1-1]!='o'&&txz[a1][b1-1]!='@')
{
txz[a1][b1]==' ';
b1--;
txz[a1][b1]=='o';
}
}
if(x==a2&&y-1==b2)
{
if(txz[a2][b2-1]!='#'&&txz[a2][b2-1]!='o'&&txz[a2][b2-1]!='@')
{
txz[a2][b2]=' ';
b2--;
txz[a2][b2]='o';
}
}
if(x==a3&&y-1==b3)
{
if(txz[a3][b3-1]!='#'&&txz[a3][b3-1]!='o'&&txz[a3][b3-1]!='@')
{
txz[a3][b3]=' ';
b3--;
txz[a3][b3]='o';
}
}
if(x==a4&&y-1==b4)
{
if(txz[a4][b4-1]!='#'&&txz[a4][b4-1]!='o'&&txz[a4][b4-1]!='@')
{
txz[a4][b4]=' ';
b4--;
txz[a4][b4]='o';
}
}
if(txz[x][y-1]!='o')
{
txz[x][y]=' ';
if(txz[x][y-1]=='@'&&txz[x][y-2]=='#')
{
y++;
}
if(txz[x][y-1]=='o'&&txz[x][y-2]=='@')
{
y++;
}
if(txz[x][y-1]=='@'&&txz[x][y-2]=='@')
{
y++;
}
y--;
txz[x][y]='s';
}
}
}
if(aj=='d')
{
if(txz[x][y+1]!='#')
{
if(x==a1&&y+1==b1)
{
if(txz[a1][b1+1]!='#'&&txz[a1][b1+1]!='o'&&txz[a1][b1+1]!='@')
{
txz[a1][b1]=' ';
b1++;
txz[a1][b1]='o';
}
}
if(x==a2&&y+1==b2)
{
if(txz[a2][b2+1]!='#'&&txz[a2][b2+1]!='o'&&txz[a2][b2+1]!='@')
{
txz[a2][b2]=' ';
b2++;
txz[a2][b2]='o';
}
}
if(x==a3&&y+1==b3)
{
if(txz[a3][b3+1]!='#'&&txz[a3][b3+1]!='o'&&txz[a3][b3+1]!='@')
{
txz[a3][b3]=' ';
b3++;
txz[a3][b3]='o';
}
}
if(x==a4&&y+1==b4)
{
if(txz[a4][b4+1]!='#'&&txz[a4][b4+1]!='o'&&txz[a4][b4+1]!='@')
{
txz[a4][b4]=' ';
b4++;
txz[a4][b4]='o';
}
}
if(txz[x][y+1]!='o')
{
txz[x][y]=' ';
if(txz[x][y+1]=='@'&&txz[x][y+2]=='#')
{
y--;
}
if(txz[x][y+1]=='o'&&txz[x][y+2]=='@')
{
y--;
}
if(txz[x][y+1]=='@'&&txz[x][y+2]=='@')
{
y--;
}
y++;
txz[x][y]='s';
}
}
}
if(txz[4][2]=='o')
{
txz[4][2]='@';
}
else
{
if(txz[4][2]==' ')
{
txz[4][2]='*';
}
}
if(txz[4][3]=='o')
{
txz[4][3]='@';
}
else
{
if(txz[4][3]==' ')
{
txz[4][3]='*';
}
}
if(txz[5][2]=='o')
{
txz[5][2]='@';
}
else
{
if(txz[5][2]==' ')
{
txz[5][2]='*';
}
}
if(txz[5][3]=='o')
{
txz[5][3]='@';
}
else
{
if(txz[5][3]==' ')
{
txz[5][3]='*';
}
}
for (i=0;i<=8;i++)
{
puts(txz[i]);
}
}
system("cls");
if(aj!='k')
{
char xmc[20][100]={" ## ## ##",
" ## ############ ## ##",
" ### ##",
" # ## ######### ##",
" ########### # # #############",
" # ############## # #############",
" # # # # # ##",
" # # ####### # # ##",
" # # # # # # ##",
" # # # # # # # ##",
" # # # ####### # # ##",
" # # # # # ##",
" # # ## # # ## ##",
" # # ## # ### ##",
" # # ##",
" ############################## ############################# ",
};
for (i=0;i<=19;i++)
{
puts(xmc[i]);
}
Sleep(5000);
system("cls");
}
}
if(hj=='2')
{
char txz[50][50]={ " ###",//[0]
" #*#",//[1]
" # #",//[2]
"####o######",//[3]
"#* os o *#",//[4]
"#####o#####",//[5]
" # #",//[6]
" #*#",//[7]
" ###",//[8]
};
for (i=0;i<=8;i++)
{
puts(txz[i]);
}
char aj;
int x,y;
int a1,b1,a2,b2,a3,b3,a4,b4;
x=4;
y=5;
a1=3;
b1=4;
a2=4;
b2=4;
a3=4;
b3=7;
a4=5;
b4=5;
while(txz[1][4]!='@'||txz[4][1]!='@'||txz[4][9]!='@'||txz[7][5]!='@')
{
aj=getch();
if(aj=='k')
{
break;
}
system("cls");
if(aj=='w')
{
if(txz[x-1][y]!='#')
{
if(x-1==a1&&y==b1)
{
if(txz[a1-1][b1]!='#'&&txz[a1-1][b1]!='o'&&txz[a1-1][b1]!='@')
{
txz[a1][b1]=' ';
a1--;
txz[a1][b1]='o';
}
}
if(x-1==a2&&y==b2)
{
if(txz[a2-1][b2]!='#'&&txz[a2-1][b2]!='o'&&txz[a2-1][b2]!='@')
{
txz[a2][b2]=' ';
a2--;
txz[a2][b2]='o';
}
}
if(x-1==a3&&y==b3)
{
if(txz[a3-1][b3]!='#'&&txz[a3-1][b3]!='o'&&txz[a3-1][b3]!='@')
{
txz[a3][b3]=' ';
a3--;
txz[a3][b3]='o';
}
}
if(x-1==a4&&y==b4)
{
if(txz[a4-1][b4]!='#'&&txz[a4-1][b4]!='o'&&txz[a4-1][b4]!='@')
{
txz[a4][b4]=' ';
a4--;
txz[a4][b4]='o';
}
}
if(txz[x-1][y]!='o')
{
txz[x][y]=' ';
if(txz[x-1][y]=='@'&&txz[x-2][y]=='#')
{
x++;
}
if(txz[x-1][y]=='o'&&txz[x-2][y]=='@')
{
x++;
}
if(txz[x-1][y]=='@'&&txz[x-2][y]=='@')
{
x++;
}
x--;
txz[x][y]='s';
}
}
}
if(aj=='s')
{
if(txz[x+1][y]!='#')
{
if(x+1==a1&&y==b1)
{
if(txz[a1+1][b1]!='#'&&txz[a1+1][b1]!='o'&&txz[a1+1][b1]!='@')
{
txz[a1][b1]=' ';
a1++;
txz[a1][b1]='o';
}
}
if(x+1==a2&&y==b2)
{
if(txz[a2+1][b2]!='#'&&txz[a2+1][b2]!='o'&&txz[a2+1][b2]!='@')
{
txz[a2][b2]=' ';
a2++;
txz[a2][b2]='o';
}
}
if(x+1==a3&&y==b3)
{
if(txz[a3+1][b3]!='#'&&txz[a3+1][b3]!='o'&&txz[a3+1][b3]!='@')
{
txz[a3][b3]=' ';
a3++;
txz[a3][b3]='o';
}
}
if(x+1==a4&&y==b4)
{
if(txz[a4+1][b4]!='#'&&txz[a4+1][b4]!='o'&&txz[a4+1][b4]!='@')
{
txz[a4][b4]=' ';
a4++;
txz[a4][b4]='o';
}
}
if(txz[x+1][y]!='o')
{
txz[x][y]=' ';
if(txz[x+1][y]=='@'&&txz[x+2][y]=='#')
{
x--;
}
if(txz[x+1][y]=='o'&&txz[x+2][y]=='@')
{
x--;
}
if(txz[x+1][y]=='@'&&txz[x+2][y]=='@')
{
x--;
}
x++;
txz[x][y]='s';
}
}
}
if(aj=='a')
{
if(txz[x][y-1]!='#')
{
if(x==a1&&y-1==b1)
{
if(txz[a1][b1-1]!='#'&&txz[a1][b1-1]!='o'&&txz[a1][b1-1]!='@')
{
txz[a1][b1]==' ';
b1--;
txz[a1][b1]=='o';
}
}
if(x==a2&&y-1==b2)
{
if(txz[a2][b2-1]!='#'&&txz[a2][b2-1]!='o'&&txz[a2][b2-1]!='@')
{
txz[a2][b2]=' ';
b2--;
txz[a2][b2]='o';
}
}
if(x==a3&&y-1==b3)
{
if(txz[a3][b3-1]!='#'&&txz[a3][b3-1]!='o'&&txz[a3][b3-1]!='@')
{
txz[a3][b3]=' ';
b3--;
txz[a3][b3]='o';
}
}
if(x==a4&&y-1==b4)
{
if(txz[a4][b4-1]!='#'&&txz[a4][b4-1]!='o'&&txz[a4][b4-1]!='@')
{
txz[a4][b4]=' ';
b4--;
txz[a4][b4]='o';
}
}
if(txz[x][y-1]!='o')
{
txz[x][y]=' ';
if(txz[x][y-1]=='@'&&txz[x][y-2]=='#')
{
y++;
}
if(txz[x][y-1]=='o'&&txz[x][y-2]=='@')
{
y++;
}
if(txz[x][y-1]=='@'&&txz[x][y-2]=='@')
{
y++;
}
y--;
txz[x][y]='s';
}
}
}
if(aj=='d')
{
if(txz[x][y+1]!='#')
{
if(x==a1&&y+1==b1)
{
if(txz[a1][b1+1]!='#'&&txz[a1][b1+1]!='o'&&txz[a1][b1+1]!='@')
{
txz[a1][b1]=' ';
b1++;
txz[a1][b1]='o';
}
}
if(x==a2&&y+1==b2)
{
if(txz[a2][b2+1]!='#'&&txz[a2][b2+1]!='o'&&txz[a2][b2+1]!='@')
{
txz[a2][b2]=' ';
b2++;
txz[a2][b2]='o';
}
}
if(x==a3&&y+1==b3)
{
if(txz[a3][b3+1]!='#'&&txz[a3][b3+1]!='o'&&txz[a3][b3+1]!='@')
{
txz[a3][b3]=' ';
b3++;
txz[a3][b3]='o';
}
}
if(x==a4&&y+1==b4)
{
if(txz[a4][b4+1]!='#'&&txz[a4][b4+1]!='o'&&txz[a4][b4+1]!='@')
{
txz[a4][b4]=' ';
b4++;
txz[a4][b4]='o';
}
}
if(txz[x][y+1]!='o')
{
txz[x][y]=' ';
if(txz[x][y+1]=='@'&&txz[x][y+2]=='#')
{
y--;
}
if(txz[x][y+1]=='o'&&txz[x][y+2]=='@')
{
y--;
}
if(txz[x][y+1]=='@'&&txz[x][y+2]=='@')
{
y--;
}
y++;
txz[x][y]='s';
}
}
}
if(txz[1][4]=='o')
{
txz[1][4]='@';
}
else
{
if(txz[1][4]==' ')
{
txz[1][4]='*';
}
}
if(txz[4][1]=='o')
{
txz[4][1]='@';
}
else
{
if(txz[4][1]==' ')
{
txz[4][1]='*';
}
}
if(txz[4][9]=='o')
{
txz[4][9]='@';
}
else
{
if(txz[4][9]==' ')
{
txz[4][9]='*';
}
}
if(txz[7][5]=='o')
{
txz[7][5]='@';
}
else
{
if(txz[7][5]==' ')
{
txz[7][5]='*';
}
}
for (i=0;i<=8;i++)
{
puts(txz[i]);
}
}
system("cls");
if(aj!='k')
{
char xmc[20][100]={" ## ## ##",
" ## ############ ## ##",
" ### ##",
" # ## ######### ##",
" ########### # # #############",
" # ############## # #############",
" # # # # # ##",
" # # ####### # # ##",
" # # # # # # ##",
" # # # # # # # ##",
" # # # ####### # # ##",
" # # # # # ##",
" # # ## # # ## ##",
" # # ## # ### ##",
" # # ##",
" ############################## ############################# ",
};
for (i=0;i<=19;i++)
{
puts(xmc[i]);
}
Sleep(5000);
system("cls");
}
}
if(hj=='3')
{
char mg[50][50]={"##############################",//0
"#o # ## # ### ####",//1
"# ###### # # # # # ### ####",//2
"# # ## # # ##### ## ##",//3
"# # ## ### # # ## ####",//4
"##### # # ##### ## ####",//5
"# # ##### # # # # # #",//6
"# # # ## # #### ## # # ####",//7
"# # # ## ## # # ####",//8
"# # # ####### ## ###### # ##",//9
"# # ## # ## ###### ### #",//10
"# ###### # ##### # # #",//11
"# # # ##### ### # ",//12
"# ######## ##### # ### ### # #",//13
"# # ## ## ### # #",//14
"##### # ## # ######## # #",//15
"# # ## ## ### # #",//16
"# # ### ###### ####### #",//17
"# # ### ## # #",//18
"##############################"
};//20行30列。
int i,x,y,d,b;
x=1;
y=1;
d=12;
b=29;
for(i=0;i<=19;i++)
{
puts(mg[i]);
}
char aj;
while(x!=d||y!=b)
{
aj=getch();
if(aj=='k')
{
break;
}
if(aj=='w')
{
if(mg[x-1][y]!='#')
{
mg[x][y]=' ';
x--;
mg[x][y]='o';
}
}
if(aj=='s')
{
if(mg[x+1][y]!='#')
{
mg[x][y]=' ';
x++;
mg[x][y]='o';
}
}
if(aj=='a')
{
if(mg[x][y-1]!='#')
{
mg[x][y]=' ';
y--;
mg[x][y]='o';
}
}
if(aj=='d')
{
if(mg[x][y+1]!='#')
{
mg[x][y]=' ';
y++;
mg[x][y]='o';
}
}
system("cls");
for(i=0;i<=19;i++)
{
puts(mg[i]);
}
}
system("cls");
if(aj!='k')
{
char xmc[20][100]={" ## ## ##",
" ## ############ ## ##",
" ### ##",
" # ## ######### ##",
" ########### # # #############",
" # ############## # #############",
" # # # # # ##",
" # # ####### # # ##",
" # # # # # # ##",
" # # # # # # # ##",
" # # # ####### # # ##",
" # # # # # ##",
" # # ## # # ## ##",
" # # ## # ### ##",
" # # ##",
" ############################## ############################# ",
};
for (i=0;i<=19;i++)
{
puts(xmc[i]);
}
Sleep(4000);
system("cls");
}
}
if(hj=='4')
{
printf("你在期待什么,知道有多烦吗?太累人了");
Sleep(4000);
system("cls");
}
if(hj=='q')
{
tc--;
}
}
return 0;
}
总结
学习的路看不到尽头,以上的代码可以非常简短。但要超越啊哈C。