NG编程论坛_免费编程教程_零基础轻松学编程_做下一个技术大神!

 找回密码
 加入NG

扫一扫,访问微社区

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 691|回复: 8

[其他] 推箱子

[复制链接] [提交至百度]

  离线 

新浪微博达人勋


扫一扫,手机继续看本帖!
已在线1天18小时30分
发表于 2016-6-18 13:54:20 | 显示全部楼层 |阅读模式

立即注册NG,提升编程能力,成为下一个神!

您需要 登录 才可以下载或查看,没有帐号?加入NG 新浪微博登陆

x
本帖最后由 DevilJC 于 2016-6-18 14:07 编辑

推箱子

玩法介绍(必看!!!)

* 代表自己
# 代表墙壁
0 代表箱子
X 代表目的地







直接代码了(啦啦啦)

#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]);  /*返回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[j]==0)
       printf("#");
     if(chMap[j]==1)
       printf(" ");
     if(chMap[j]==2)
       printf("X");
      }
    }
  j=0;                                       /*判断是否所有箱子都在目标坐标上*/
for(i=0;i<4;i++)
   if(chMap[Box.y-5][Box.x-10]==2)
    j++;
  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/
      {
      clrscr();
     printf("You Win!");
      break;
      }
for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/
    {
   gotoxy(Box.x,Box.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("YouLost");
  break;
  }
for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/
   if(Box.x==x&&Box.y==y)
      {
     Box.x+=(x-tx);
     Box.y+=(y-ty);
   if(chMap[Box.y-5][Box.x-10]==0)  /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
      {
     Box.x-=(x-tx);
     Box.y-=(y-ty);
      x=tx;
      y=ty;
      }
      break;
      }
  clrscr();
  }
getch();
}
别打本白
因为。。
因为。。
只有一关
待 更新。。。。。



[NG]

 

                                                  

评分

参与人数 1金币 +1 银币 +20 收起 理由
千秋夕月 + 1 + 20

查看全部评分


楼主的其他热帖
[C编辑器] WIN-TC下载
[C编辑器] [工具]DEV—C++下载
[异次元语录] 剧情神马的不重要?
[Java编程论坛] jdk1.7下载
[PHP编辑器] ECLIPSE(32位)下载
[C/C++语言论坛] 推箱子




上一篇:C语言写入数据问题
下一篇:倒计时/定时关机程序
nextgod.com我是下一个神!
回复
【点击@我】

使用道具 举报

     

  离线 

新浪微博达人勋

已在线0天7小时0分
发表于 2016-6-19 13:57:37 | 显示全部楼层
支持,下载来看看
nextgod.com我是下一个神!
     

  离线 

新浪微博达人勋

已在线44天8小时50分
发表于 2016-6-18 13:56:52 | 显示全部楼层
几关?
nextgod.com我是下一个神!
     
头像被屏蔽

  离线 

新浪微博达人勋

已在线2天6小时30分
发表于 2016-7-2 12:57:46 | 显示全部楼层
顶!
nextgod.com我是下一个神!
     

  离线 

新浪微博达人勋

已在线5天22小时50分
发表于 2016-7-14 08:33:27 | 显示全部楼层
有没有文件包,下载看一下,借我参考一下
nextgod.com我是下一个神!
     

  离线 

新浪微博达人勋

已在线5天22小时50分
发表于 2016-7-14 08:36:48 | 显示全部楼层
这个程序有问题
nextgod.com我是下一个神!
     

  离线 

新浪微博达人勋

已在线5天22小时50分
发表于 2016-7-14 08:37:44 | 显示全部楼层
在第20行的时候会报错
nextgod.com我是下一个神!
     

  离线 

新浪微博达人勋

已在线35天7小时50分
发表于 2016-9-6 15:20:03 | 显示全部楼层
正需要,支持楼主大人了!
nextgod.com我是下一个神!
     

  离线 

新浪微博达人勋

已在线9天18小时10分
发表于 2016-9-7 11:57:06 | 显示全部楼层
好神奇诶。。。
nextgod.com我是下一个神!
     
您需要登录后才可以回帖 登录 | 加入NG 新浪微博登陆

本版积分规则

快速回复 返回列表 客服中心 搜索 官方QQ群

手机版|NG监狱|NG编程论坛 ( 豫ICP备15026783号-1 ) NG已运行| |

GMT+8, 2017-7-28 07:06 PM

Powered by Discuz!&NG编程论坛

© 2015-2017 NextGod

快速回复 返回顶部 返回列表