自己写的一个推箱子代码,方法可能不太好,很好的方式肯定是有的,分享一下吧!
嘻嘻额吉 2019-11-02 04:41:56 #include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(){
char a[50][50]={" ### ",
" #*# ",
" # # ",
"####o######",
"#* os o *#",
"#####o#####",
" # # ",
" #*# ",
" ### ",
};
int i,x,y;
char ch;
x=4;y=5;
for(i=0;i<=8;i++)
puts(a[i]);
while(1){
ch=getchar();
if(ch=='s'){
if(a[x+1][y]!='#'&&a[x+1][y]=='o'&&a[x+2][y]!='#'&&a[x+2][y]!='o'){
a[x][y]=' ';
a[x+2][y]='o';
x++;
a[x][y]='s';
}else{
if(a[x+1][y]!='#'&&a[x+1][y]!='o'){
a[x][y]=' ';
x++;
a[x][y]='s';
}
}
}
if(ch=='w'){
if(a[x-1][y]!='#'&&a[x-1][y]=='o'&&a[x-2][y]!='#'&&a[x-2][y]!='o'){
a[x][y]=' ';
a[x-2][y]='o';
x--;
a[x][y]='s';
}else{
if(a[x-1][y]!='#'&&a[x-1][y]!='o'){
a[x][y]=' ';
x--;
a[x][y]='s';
}
}
}
if(ch=='a'){
if(a[x][y-1]!='#'&&a[x][y-1]=='o'&&a[x][y-2]!='#'&&a[x][y-2]!='o'){
a[x][y]=' ';
a[x][y-2]='o';
y--;
a[x][y]='s';
}else{
if(a[x][y-1]!='#'&&a[x][y-1]!='o'){
a[x][y]=' ';
y--;
a[x][y]='s';
}
}
}
if(ch=='d'){
if(a[x][y+1]!='#'&&a[x][y+1]=='o'&&a[x][y+2]!='#'&&a[x][y+2]!='o'){
a[x][y]=' ';
a[x][y+2]='o';
y++;
a[x][y]='s';
}else{
if(a[x][y+1]!='#'&&a[x][y+1]!='o'){
a[x][y]=' ';
y++;
a[x][y]='s';
}
}
}
if(a[4][1]!='o'&&a[4][1]!='s')
a[4][1]='*';
if(a[1][4]!='o'&&a[1][4]!='s')
a[1][4]='*';
if(a[4][9]!='o'&&a[4][9]!='s')
a[4][9]='*';
if(a[7][5]!='o'&&a[7][5]!='s')
a[7][5]='*';
system("cls");
for(i=0;i<=8;i++)
puts(a[i]);
if(a[4][1]=='o'&&a[1][4]=='o'&&a[4][9]=='o'&&a[7][5]=='o')
break;
}
system("cls");
printf("You win!");
Sleep(5000);
return 0;
}