该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#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[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.y-5].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.y-5].x-10]==0) /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/

{

Box[i].x-=(x-tx);

Box[i].y-=(y-ty);

x=tx;

y=ty;

}

break;

}

}

clrscr();

}

getch();

}

c语言推箱子源代码及注释,求大神 解析推箱子源代码 要详细相关推荐

  1. c语言中len的作用,C语言 int len( )  求大神解释

    C语言 int len( ) 求大神解释 sen3830058 LV12 2013-03-13 #include int len(char s[]){ int n=0; while(s[n]!='\0 ...

  2. c语言realloc函数中写啥,求大神解惑realloc函数,谢谢!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include void f(int * q,int i) { int j; for(j=0;j scanf("%d&quo ...

  3. c语言管理系统信息以文件保存,求大神给一份能用的c语言的学籍管理系统:且能进行文件保存...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #pragma comment(lib,"libmysql.lib") void showmenu ...

  4. c语言结构体多门成绩排序,c语言结构体按学号排序求大神帮忙改一下吧

    struct record { char code[LEN+1]; /* 学号 */ char name[LEN+1]; /* 姓名 */ int age; /* 年龄 */ char sex[3]; ...

  5. c语言改为汇编语言简单例题,求大神把汇编语言改成C语言

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ;==================================================== ;主程序 ;================= ...

  6. 怎么用c语言表示大整数的四则运算,用c语言编写大整数的四则运算,求大神

    用c语言编写大整数的四则运算,求大神 答案:3  信息版本:手机版 解决时间 2019-10-03 17:13 已解决 2019-10-03 01:32 用c语言编写大整数的四则运算,求大神 最佳答案 ...

  7. 请输入30名同学的c语言成绩,求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共有30名学...

    问题描述: 求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共有30名学 求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共 ...

  8. 赫夫曼编码c语言 排序部分,c语言构造哈夫曼树输出哈夫曼编码出错 ,跪求大神帮我找错...

    c语言构造哈夫曼树输出哈夫曼编码出错 ,跪求大神帮我找错0 youxun0952016.09.07浏览120次分享举报 #include #include #include typedef struc ...

  9. python12345输出54321_C语言编写程序 :输入一个正整数,将其逆序输出。例如,输入12345,输出54321. 跪求大神用循环语句...

    点击查看C语言编写程序 :输入一个正整数,将其逆序输出.例如,输入12345,输出54321. 跪求大神用循环语句具体信息 答:#include int main() { int num; scanf ...

最新文章

  1. 第 138 章 Spark
  2. 认识计算机系统反思,《认识计算机系统》教学反思
  3. Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源
  4. Java开发人员在编程中常见的雷!
  5. 在IFrame中查找IFRAME中的元素的方式
  6. 每日一题(易错):这条SQL语句,有什么作用?
  7. java 虚拟机类型的卸载_《深入理解Java虚拟机》:类加载和初始化(二)
  8. 一次ORACLE启动报错修复的记录
  9. 信号与系统考研复习例题详解_小语种日语日本文学复习考研资料加藤周一《日本文学史序说(上)》笔记和考研真题详解...
  10. java反射最佳实践_Java 反射最佳实践 – 码农网
  11. python的除法_python中的除法
  12. nacos 2.0 Scanner SubTypesScanner was not configured
  13. FILCO蓝牙CSR4.0驱动安装连接(解决蓝牙连接的终极管理方法,速度极快)
  14. 人工智能 AI 绘画发展史
  15. 美术集网校—入门学习水彩,刚需教程建议先码后看
  16. EditPlus正则表达式替换字符串详解
  17. 程序员节华为这么玩?就说好不好!
  18. excel表格行宽列高怎么设置_解决方案:Excel自动调整列宽和行宽什么是快捷键? [Excel设置行高度自适应]...
  19. 学术顶会再突破!计算平台 MaxCompute 论文入选国际顶会VLDB 2021
  20. 12.unity编程基础

热门文章

  1. Android 8.0 的部分坑及对应解决方法
  2. 基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案
  3. 程序员面试-并发大数据分布式
  4. png 微软ppt 透明度_花了8+小时,做了4页禅宗PPT定制!
  5. 外贸用ERP仓储系统有那些好处?
  6. jsjq面试笔记(下)
  7. java元类_元类 - 一心不乱 - 博客园
  8. ios 怎么判断字符串的字节数_iOS 计算字符串长度-boundingRectWithSize:
  9. 将python程序打包成可执行文件exe
  10. 手把手教你启动若依微服务项目