资源描述:
《C语言推箱子游戏》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言推箱子游戏.txt永远像孩子一样好奇,像年轻人一样改变,像中年人一样耐心,像老年人一样睿智。我的腰闪了,惹祸的不是青春,而是压力。。。。。。当女人不再痴缠,不再耍赖,不再喜怒无常,也就不再爱了。#include"stdio.h"#include"bios.h"#defineLEFT75#defineRIGHT77#defineUPPER72#defineDOWN80#defineESC27structBoxss{intx,y;};unionkeyboard{unsignedintiKeyInfo;charchKeyBit[
2、2];};intfnGetKey(void)/*定义读取键盘码的函数*/{unionkeyboarduniKey1;/*定义读取键盘码的共用体变量*/while(bioskey(1)==0);/*检测用户是否按键*/uniKey1.iKeyInfo=bioskey(0);/*读取按键信息*/return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);/*返回ASCII码或扩充码*/}voidmain(){intiKey,x=11,y=6,tx=11
3、,ty=6;/*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/structBoxssBox[4];/*定义箱子数量*/intchMap[10][10]={/*用二维数组定义地图*/{0,0,0,0,0,0,0,0,0,0},/*0表示墙1表示路2表示目标*/{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
4、,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},};inti,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+
5、+){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)/*如果所有箱子都就位输出"YOUWIN!"退出*/{clrscr();printf("YouWin!");break;}for(i=0;i<4;i++)/*在起始(或移
6、动后)的坐标输出箱子*/{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)/*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/x--;if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)x++;if(iKey==UPPE
7、R&&chMap[y-1-5][x-10]!=0)y--;if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)y++;/*输入ESC退出并输出"YOULOST"*/if(iKey==ESC){clrscr();printf("YouLost");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
8、].y-5][Box[i].x-10]==0)/*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/{Box[i].x-=(x-tx);Box[i].y-=(y-ty);x=tx;y=ty;}break;}clrscr();}getch(