|
楼主,刚刚我把你的地图也加进去了,改几个数据就行了,不过不知道怎么把这些关卡连起来做个完整的游戏TAT
#include <stdio.h>
#include <stdlib.h>
char move(p)
char p;
{
char z;
if(p=='S')z=' ';
else z='*';
return (z);
}
char now(p)
char p;
{
char z;
if(p=='*'||p=='@')z='$';
else z='S';
return (z);
}
char box(p)
char p;
{
char z;
if(p==' ')z='O';
else z='@';
return (z);
}
main()
{
char a[15][15]={" ### ",
" #*# ",
"####O######",
"#* OS O *#",
"#####O#####",
" # # ",
" #*# ",
" ### ",
};
int i,x,y;
char ch;
for(i=0;i<=7;i++)
puts(a[i]);
x=3;y=5;
while(a[1][4]!='@'||a[3][1]!='@'||a[3][9]!='@'||a[6][5]!='@')
{
ch=getch();
switch(ch)
{
case'w':if(a[x-1][y]!='#')
{if(a[x-1][y]==' '||a[x-1][y]=='*')
{a[x][y]=move(a[x][y]);x--;a[x][y]=now(a[x][y]);}
else if(a[x-2][y]!='#'&&a[x-2][y]!='O'&&a[x-2][y]!='@')
{a[x][y]=move(a[x][y]);x--;a[x][y]=now(a[x][y]);x--;a[x][y]=box(a[x][y]);x++;}
}break;
case's':if(a[x+1][y]!='#')
{if(a[x+1][y]==' '||a[x+1][y]=='*')
{a[x][y]=move(a[x][y]);x++;a[x][y]=now(a[x][y]);}
else if(a[x+2][y]!='#'&&a[x+2][y]!='O'&&a[x+2][y]!='@')
{a[x][y]=move(a[x][y]);x++;a[x][y]=now(a[x][y]);x++;a[x][y]=box(a[x][y]);x--;}
}break;
case'a':if(a[x][y-1]!='#')
{if(a[x][y-1]==' '||a[x][y-1]=='*')
{a[x][y]=move(a[x][y]);y--;a[x][y]=now(a[x][y]);}
else if(a[x][y-2]!='#'&&a[x][y-2]!='O'&&a[x][y-2]!='@')
{a[x][y]=move(a[x][y]);y--;a[x][y]=now(a[x][y]);y--;a[x][y]=box(a[x][y]);y++;}
}break;
case'd':if(a[x][y+1]!='#')
{if(a[x][y+1]==' '||a[x][y+1]=='*')
{a[x][y]=move(a[x][y]);y++;a[x][y]=now(a[x][y]);}
else if(a[x][y+2]!='#'&&a[x][y+2]!='O'&&a[x][y+2]!='@')
{a[x][y]=move(a[x][y]);y++;a[x][y]=now(a[x][y]);y++;a[x][y]=box(a[x][y]);y--;}
}break;
}
system("cls");
for(i=0;i<=6;i++)
puts(a[i]);
}
system("cls");
printf("you win!");
system("pause");
}
|
|