怎样设计推箱子游戏

 
下载地址

#include"stdio.h"#include"bios.h"#define LEFT 75#define RIGHT 77#define UPPER 72#define DOWN 80#define ESC 27struct 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]);  /*返回ASCII码或扩充码*/}void main(){int iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/struct Boxss Box[4];                /*定义箱子数量*/int chMap[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,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)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/      {      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)      /*按读取的按键信息改变坐标如果改变的坐标和墙(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++;                                    /*输入ESC退出并输出"YOU LOST"*/  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();}

Baby瘦瘦瘦app下载-Baby瘦瘦瘦app是一款减肥瘦身应用,Baby瘦瘦瘦app为用户提供大量健身资料,让用户可以通过软件学习科学的减肥瘦身方法,同时还有瘦身食谱帮助用户健康瘦身,您可以免费下载安卓手机Baby瘦瘦瘦。
2017-03-03
,五年免费质保的双通道P4主板只要660元!
2004-10-08
咱县司机app是一款非常便捷的打车软件,司机可以直接通过这个平台来接收对应的订单哦,和乘客之间的互动也更加的方便,也不用担心自己接不到单了,赚钱更多乐趣,出行更便捷。
2021-06-25
云合格证官方下载-云合格证app是一款无人机驾驶员合格证电子证照软件,云合格证app可以查询自己的无人机飞行记录,云合格证app是民用无人机驾驶员合格证,您可以免费下载安卓手机云合格证。
2021-01-01
暗黑3焚炉这把神器掉落率极其的低,但变态的属性一直是玩家们梦寐以求的。暗黑3焚炉属性怎么样?暗黑3焚炉哪里出呢?就让小编来告诉大家吧!,暗黑3焚炉属性怎么样 暗黑3焚炉哪里出
2015-05-07
共享衣橱app下载-共享衣橱app是一个极富创新的会员制高端时尚体验平台,使用共享衣橱app帮你完美解决“衣橱里永远少一件衣服”的世纪难题。每天上新的共享衣橱app是你轻松掌握最in网红社交达人穿衣搭配的小心机神器,您可以免费下载安卓手机共享衣橱。
2020-04-15
家网app下载-家网app是一款家装服务应用,家网app为用户提供一个家装购物平台,让用户可以通过软件轻松采购需要的家装产品,体验便捷的一站式家装服务,您可以免费下载安卓手机家网。
2016-09-21
主宰无双灵路激战怎么玩?灵路激战是历练玩法中的一个玩法,打完boss之后可以获得很多奖励。那灵路激战要怎么玩呢?下面跟小编一起来看看主宰无双灵路激战玩法攻略吧!,主宰无双灵路激战怎么玩 主宰无双灵路激战玩法攻略
2017-04-29
悦动有礼app下载-悦动有礼app是一款每天都有无线收益等你来领的走路赚钱平台。悦动有礼app能够直接将你每天的走路步数转换为收益。而且每天登录悦动有礼app还能获得惊喜红包福利哦,您可以免费下载安卓手机悦动有礼。
2020-06-05
酒可以说是大多数人生活必不可少的一部分,聚餐、应酬、送礼、谈生意等都会喝酒,很多场合都会有酒水的存在。那么酒水商城软件有哪些呢?今天小编给大家整理一份全面的酒水商城软件大全,酒水种类齐全,正品保真,朋友可以根据自己的需求下载使用。
2023-11-17