中易网

帮我搞个完整的C语言推箱子程序好吗

答案:2  悬赏:0  
解决时间 2021-01-23 10:34
帮我搞个完整的C语言推箱子程序好吗
最佳答案
#include"stdio.h"
#include"bios.h"
#define LEFT 75
#define RIGHT 77
#define UPPER 72
#define DOWN 80
#define ESC 27
struct Boxss
{
int x,y;
};
union keyboard
{
unsigned int iKeyInfo;
char chKeyBit[2];
};
int fnGetKey(void)
{
union keyboard uniKey1;
while(bioskey(1)==0);
uniKey1.iKeyInfo=bioskey(0);
return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);
}
void main()
{
int iKey,x=11,y=6,tx=11,ty=6;
struct Boxss Box[4];
int chMap[10][10]={
{0,0,0,0,0,0,0,0,0,0},
{0,1,0,0,0,0,1,1,1,0},
{0,1,0,2,0,0,1,0,1,0},
{0,1,0,1,0,0,1,0,1,0},
{0,1,1,1,0,0,1,0,1,0},
{0,1,0,0,0,0,1,0,1,0},
{0,1,1,1,1,1,1,0,1,0},
{0,1,0,1,0,0,0,0,2,0},
{0,2,0,1,1,1,1,2,0,0},
{0,0,0,0,0,0,0,0,0,0},
};
int i,j;
Box[0].x=13;
Box[1].x=11;
Box[2].x=14;
Box[3].x=18;
Box[0].y=8;
Box[1].y=7;
Box[2].y=13;
Box[3].y=7;
while(1)
{
for(i=0;i<10;i++)
{
gotoxy(10,5+i);
for(j=0;j<10;j++)
{
if(chMap[i][j]==0)
printf("#");
if(chMap[i][j]==1)
printf(" ");
if(chMap[i][j]==2)
printf("X");
}
}
j=0;
for(i=0;i<4;i++)
if(chMap[Box[i].y-5][Box[i].x-10]==2)
j++;
if(j==4)
{
clrscr();
printf("You Win!");
break;
}
for(i=0;i<4;i++)
{
gotoxy(Box[i].x,Box[i].y);
printf("0");
}
gotoxy(x,y);
printf("*\b");
tx=x;
ty=y;
iKey=fnGetKey();
if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)
x--;
if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
x++;
if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)
y--;
if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)
y++;
if(iKey==ESC)
{
clrscr();
printf("You Lost");
break;
}
for(i=0;i<4;i++)
if(Box[i].x==x&&Box[i].y==y)
{
Box[i].x+=(x-tx);
Box[i].y+=(y-ty);
if(chMap[Box[i].y-5][Box[i].x-10]==0)
{
Box[i].x-=(x-tx);
Box[i].y-=(y-ty);
x=tx;
y=ty;
}
break;
}
clrscr();
}
getch();
}
全部回答
# include "conio.h"
# include "graphics.h"
char map[12][19]={{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','#','#','#','#','#','#','#','#','#','#','#','.','.','.','.'},
{'.','.','.','.','#',' ',' ',' ',' ','#',' ',' ',' ',' ','#','.','.','.','.'},
{'.','.','.','.','#',' ',' ',' ',' ',' ',' ',' ',' ',' ','#','.','.','.','.'},
{'.','.','.','.','#',' ',' ',' ',' ',' ',' ',' ',' ',' ','#','.','.','.','.'},
{'.','.','.','.','#','#','#','#','#',' ','#','#','#','#','#','.','.','.','.'},
{'.','.','.','.','.','.','.','#',' ',' ',' ','#','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','#',' ',' ',' ','#','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','#',' ',' ',' ','#','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','#',' ',' ',' ','#','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','#','#','#','#','#','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'}
};
struct move_point
{
int x,y;
}man;
int num;
int step=0;
int xi=0,re=0;
void draw()
{
gotoxy(man.x,man.y);
printf("%c\b",2);
}
void clr()
{
gotoxy(man.x,man.y);
printf(" \b");
}
void drawmap()
{
int i,j;
gotoxy(0,0);
for(i=0;i<12;i++)
{for(j=0;j<19;j++)
printf("%c",map[i][j]);
printf("\n");
}
}
int BI(int x,int y)
{
if(map[y-1][x-1]=='#'||map[y-1][x-1]==15) return 1;
else return 0;
}
int XI_W(int x,int y)
{
if(map[y-1][x-1]==15&&BI(x,y-1)==0) {map[y-1][x-1]=' ';
map[y-2][x-1]=15;
xi=1;
gotoxy(x,y-1);
printf("%c",15);
return 0;
}
if(map[y-1][x-1]==' ') {xi=2;return 0;}
return 1;
}
int XI_A(int x,int y)
{
if(map[y-1][x-1]==15&&BI(x-1,y)==0) {map[y-1][x-1]=' ';
map[y-1][x-2]=15;
xi=1;
gotoxy(x-1,y);
printf("%c",15);
return 0;
}
if(map[y-1][x-1]==' ') {xi=2;return 0;}
return 1;
}
int XI_S(int x,int y)
{
if(map[y-1][x-1]==15&&BI(x,y+1)==0) {map[y-1][x-1]=' ';
map[y][x-1]=15;
xi=1;
gotoxy(x,y+1);
printf("%c",15);
return 0;
}
if(map[y-1][x-1]==' ') {xi=2;return 0;}
return 1;
}
int XI_D(int x,int y)
{
if(map[y-1][x-1]==15&&BI(x+1,y)==0) {map[y-1][x-1]=' ';
map[y-1][x]=15;
xi=1;
gotoxy(x+1,y);
printf("%c",15);
return 0;
}
if(map[y-1][x-1]==' ') {xi=2;return 0;}
return 1;
}
void draw_des()
{
num=6;
if(map[6][10]==' ') gotoxy(11,7),printf("+");else num--;
if(map[7][10]==' ') gotoxy(11,8),printf("+");else num--;
if(map[8][10]==' ') gotoxy(11,9),printf("+");else num--;
if(map[9][10]==' ') gotoxy(11,10),printf("+");else num--;
if(map[8][8]==' ')gotoxy(9,9),printf("+");else num--;
if(map[8][9]==' ')gotoxy(10,9),printf("+");else num--;
if(num==0) gotoxy(23,12),printf("You are very clever!"),getch(),exit(0);
}
void draw_step()
{
gotoxy(38,6);
printf("%d",step);
}
void draw_biaoge()
{
line(170,0,170,200);
line(0,200,340,200);
line(170,60,340,60);
line(340,0,340,200);
line(0,205,345,205);
line(345,0,345,205);
line(165,0,165,200);
line(260,60,260,160);
line(170,5,340,5);
line(170,160,340,160);
}
void FAN()
{
switch(re)
{case 1:clr();man.y++;draw();if(xi==1)
{map[man.y-3][man.x-1]=' ';
map[man.y-2][man.x-1]=15;
gotoxy(man.x,man.y-2);
printf(" ");
gotoxy(man.x,man.y-1);
printf("%c\b",15);
}
break;
case 2:clr();man.x++;draw();if(xi==1)
{map[man.y-1][man.x-3]=' ';
map[man.y-1][man.x-2]=15;
gotoxy(man.x-2,man.y);
printf(" ");
gotoxy(man.x-1,man.y);
printf("%c\b",15);
}
break;
case 3:clr();man.y--;draw();if(xi==1)
{map[man.y+1][man.x-1]=' ';
map[man.y][man.x-1]=15;
gotoxy(man.x,man.y+2);
printf(" ");
gotoxy(man.x,man.y+1);
printf("%c\b",15);
}
break;
case 4:clr();man.x--;draw();if(xi==1)
{map[man.y-1][man.x+1]=' ';
map[man.y-1][man.x]=15;
gotoxy(man.x+2,man.y);
printf(" ");
gotoxy(man.x+1,man.y);
printf("%c\b",15);
}
break;
}
re=0;
xi=0;
}
main()
{
int driver=DETECT,mode;
char ch;
man.x=12;
man.y=4;
map[3][6]=15;
map[3][7]=15;
map[3][8]=15;
map[3][9]=15;
map[3][10]=15;
map[3][12]=15;
clr();
registerbgidriver(EGAVGA_driver);
initgraph(&driver,&mode,"");
setbkcolor(GREEN);
drawmap();
draw_des();
draw_step();
draw();
draw_biaoge();
gotoxy(25,5);
printf("w:UP");
gotoxy(25,6);
printf("a:LEFT");
gotoxy(25,7);
printf("s:DOWN");
gotoxy(25,8);
printf("d:RIGHT");
gotoxy(25,9);
printf("r:QUIT");
gotoxy(25,10);
printf("f:REGRET");
gotoxy(35,5);
printf("step:");
gotoxy(27,3);
printf("BAN YUN GONG");
for(;;)
{
if(kbhit())
{
ch=getch();
if(ch=='r') break;
switch(ch)
{
case 'w':if(XI_W(man.x,man.y-1)==1) break;
clr();
step++;
man.y--;
re=1;
draw_des();
draw_step();
draw();
break;
case 'a':if(XI_A(man.x-1,man.y)==1) break;
clr();
step++;
man.x--;
re=2;
draw_des();
draw_step();
draw();
break;
case 's':if(XI_S(man.x,man.y+1)==1) break;
clr();
step++;
man.y++;
re=3;
draw_des();
draw_step();
draw();
break;
case 'd':if(XI_D(man.x+1,man.y)==1) break;
clr();
step++;
man.x++;
re=4;
draw_des();
draw_step();
draw();
break;
case 'f':if(re==0) break;
else FAN();break;
default:break;
}
}
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
受前世和攻在一起,但攻不喜欢他,最后攻落难,
怎样做杭州东坡肉最好吃
金色家园网 和同科集团有什么关系
蔡孝乾有后代吗
今天在自己家电视买了个全球播影视会员。可是
vfp中at()什么意思
只有天在上 更无山与齐 更是什么意思
我提的问题在哪找
雅阁美容养生会馆地址在哪,我要去那里办事
眼睛里有胎记怎么办?
r407c制冷剂到2020年以后能用吗?
在马来西亚 不同机场转机 该怎么办?
人民币是否将贬值
编程手动录入文字填满一张1.44m的软盘需要多
移动CMCC无线网络
推荐资讯
为什么我手机全民k歌不能唱歌啊求大神
平均要不要估算我不会呀
长安cx20的右刹车灯是哪根线,我想在刹车上接
东北农村房屋设计
身上皮肤干燥痒是怎么回事啊...
文明笔
用altium designer画元件PCB封装,SOT-23-8封
菜鸟驿站(予多视频测试专业点勿清退)地址在哪
从某个点切入 谈谈学习电子商务的感受 300至5
民间借贷,利息最高是多少才算合法呀?
优速快递(小江镇兴农街8号优速快递)怎么去啊
vb:怎样在取得SQLserver返回的执行结果?不
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?