《C语言推箱子源代码推箱子代码完善》由会员分享,可在线阅读,更多相关《C语言推箱子源代码推箱子代码完善(10页珍藏版)》请在人人文库网上搜索。

1、include #include #include typedef struct MAP/地图int wall502;/墙int box92;/箱子int des92;/终点int overlap92;/箱子与终点的重叠位置int all,now;/总箱子个数,到位箱子个数int x,y;/起点 MAP,*map;/全局变量/int U=1,D=2,L=3,R=4; /定义按键状态/int jump;int ofx=10,ofy=9; /定义xy偏移量int player2;/玩家位置int nextp2,nextb2;/玩家下一步位置,箱子下一步位置MAP Pass5;/关卡数组map Gr。

2、oup,p;/关卡数组指针,当前关卡指针int level;/关卡等级int status;/玩家状态int boxc92,overlapc92;/箱子状态栈,重叠箱子状态栈int nowbox;/当前到位箱子个数int reset;/是否重玩/声明全部函数/void Pos(int x,int y)/设置光标位置COORD pos;HANDLE hOutput;pos.X=x;pos.Y=y;hOutput=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(hOutput,pos);system(color 3B);void w。

3、elcometogame()/开始界面system(title 2017程序设计之推箱子);Pos(28,3);printf(欢迎来到推箱子!);Pos(50,24);printf( 软件1603 刘刈 n);Pos(27,9);printf(用.控制人物的移动。);Pos(27,10);printf(按空格键重新开始此局。);Pos(27,11);printf(按ESC结束游戏。n);Pos(0,22);system(pause);if(GetAsyncKeyState(VK_ESCAPE)system(cls);Pos(34,14);printf(欢迎下次再玩。);Pos(25,20);p。

4、rintf(请按任意键退出。);getch();exit(0);system(cls);void inputmap(int a2)/创建地图数据int i,k;p-x=a00;p-y=a01;/玩家坐标p-all=a10;p-now=a11;/箱子状态for(k=0,i=2; inow; i+,k+) /输入重叠箱子信息p-overlapk0=ai0;p-overlapk1=ai1;for(k=0; inow+p-all; i+,k+) /输入终点信息p-desk0=ai0;p-desk1=ai1;for(k=0; inow+2*p-all; i+,k+) /输入箱子信息p-boxk0=ai0。

5、;p-boxk1=ai1;for(k=0; ai0!=666; i+,k+) /输入墙的信息p-wallk0=ai0;p-wallk1=ai1;void initgame()/初始化游戏/00,01是玩家起始位置,10,11是箱子个数和到位个数,/之后是重叠箱子位置,终点位置,箱子位置,墙位置int a0502= 4,4,4,0,1,4,3,1,4,6,6,3,3,3,3,4,4,5,5,3,0,3,0,4,0,5,1,3,1,5,2,0,2,1,2,2,2,3,2,5,3,0,3,5,3,6,3,7,4,0,4,1,4,2,4,7,5,2,5,4,5,5,5,6,5,7,6,2,6,4,7,。

6、2,7,3,7,4,666,666,a1502= 1,1,3,0,7,3,7,4,7,5,2,2,2,3,3,2,0,0,0,1,0,2,0,3,0,4,1,0,1,4,1,5,1,6,1,7,1,8,2,0,2,4,2,5,2,8,3,0,3,8,4,0,4,1,4,2,4,3,4,4,4,8,5,4,5,6,5,7,5,8,6,2,6,3,6,4,6,7,7,2,7,7,8,2,8,3,8,4,8,5,8,6,8,7,666,666,a2502= 2,3,4,0,2,4,2,5,3,4,3,5,2,2,4,3,6,4,7,3,0,2,0,3,0,4,0,5,1,0,1,1,1,2,1,5,。

7、1,6,2,0,2,6,3,0,3,2,3,6,4,0,4,2,4,4,4,5,4,6,5,0,5,2,5,6,6,0,6,6,7,0,7,1,7,6,8,1,8,4,8,5,8,6,9,1,9,2,9,3,9,4,666,666,a3502= 1,2,5,1,3,6,1,5,1,6,2,6,3,6,4,6,2,2,2,3,2,5,3,4,3,6,0,1,0,2,0,3,0,4,0,5,0,6,0,7,1,0,1,1,1,3,1,4,1,7,2,0,2,7,3,0,3,7,4,0,4,1,4,2,4,3,4,7,5,3,5,4,5,5,5,6,5,7,666,666;Group=Pass;p=。

8、Group+0;inputmap(a0);p=Group+1;inputmap(a1);p=Group+2;inputmap(a2);p=Group+3;inputmap(a3);void printfoverlap(int b92)/打印重叠箱子位置int i;for(i=0; iwall00+ofx),p-wall01+ofy);printf();for(i=1; p-walli0!=0 | p-walli1!=0; i+) /打印墙Pos(2*(p-walli0+ofx),p-walli1+ofy);printf();for(i=0; p-desi0!=0 | p-desi1!=0; i。

9、+) /打印终点Pos(2*(p-desi0+ofx),p-desi1+ofy);printf();for(i=0; p-boxi0!=0 | p-boxi1!=0; i+) /打印箱子Pos(2*(p-boxi0+ofx),p-boxi1+ofy);printf();printfoverlap(p-overlap);/打印重叠箱子位置Pos(2*(p-x+ofx),p-y+ofy);/打印玩家位置printf();Pos(79,29);void copybox(int copy92,int b92)/复制箱子信息int i;for(i=0; iwalli0!=0|p-walli1!=0; i。

10、+) /判断玩家下一步是否与墙重合if(p-walli0=nextp0&p-walli1=nextp1)con=0;/重合使con为0break;if(con=1)/1下一步没有墙for(i=0,con=2; boxci0!=0|boxci1!=0; i+) /判断下一步是否有箱子if(boxci0=nextp0&boxci1=nextp1)con=3;/下一步有箱子使con为3j=i;/保存要移动的箱子break;if(con=3)/3下一步有箱子trans(nextb,nextp);/更新盒子下一步for(i=1,con=4; p-walli0!=0|p-walli1!=0; i+) /判。

11、断箱子下一步是否与墙重合if(p-walli0=nextb0&p-walli1=nextb1)con=5;/箱子下一步与墙重合使con为5break;if(con=4)/4箱子下一步没有墙for(i=0,con=6; boxci0!=0|boxci1!=0; i+) /判断箱子下一步是否有其他箱子if(boxci0=nextb0&boxci1=nextb1)con=7;/箱子下一步有其他箱子使con为7break;if(con=6)/6箱子下一步没有墙并且也没有其他箱子Pos(2*(nextb0+ofx),nextb1+ofy);printf();Pos(2*(nextp0+ofx),next。

12、p1+ofy);printf();Pos(2*(player0+ofx),player1+ofy);printf( );for(i=0; p-desi0!=0|p-desi1!=0; i+) /当前玩家位置是否有终点标记if(p-desi0=player0&p-desi1=player1)Pos(2*(player0+ofx),player1+ofy);printf();break;for(i=0; p-desi0!=0|p-desi1; i+) /判断要移动的箱子是否在终点上if(p-desi0=boxcj0&p-desi1=boxcj1)nowbox-;/当前到位的箱子数减一for(k=0。

13、; kdesi0&overlapck1=p-desi1)overlapck0=0;overlapck1=0;break;break;for(i=0; p-desi0!=0|p-desi1; i+) /判断下一个箱子是否在终点上if(p-desi0=nextb0&p-desi1=nextb1)nowbox+;/当前到位的箱子数减加一for(k=0; kdesi0;overlapck1=p-desi1;break;break;printfoverlap(overlapc);Pos(79,29);boxcj0=nextb0;boxcj1=nextb1;player0=nextp0;player1=n。

14、extp1;else if(con=2)/2下一步没有墙没有箱子Pos(2*(nextp0+ofx),nextp1+ofy);printf();Pos(2*(player0+ofx),player1+ofy);printf( );for(i=0; p-desi0!=0|p-desi1!=0; i+) /当前玩家位置是否有终点标记if(p-desi0=player0&p-desi1=player1)Pos(2*(player0+ofx),player1+ofy);printf();break;Pos(79,29);player0=nextp0;player1=nextp1;status=0;vo。

15、id gamecircle()/控制游戏,根据当前按键保存玩家状态copybox(boxc,p-box);copybox(overlapc,p-overlap);player0=p-x;player1=p-y;nowbox=p-now;/还原游戏初始状态while(1)Sleep(80);if(GetAsyncKeyState(VK_ESCAPE)system(cls);Pos(34,14);printf(欢迎下次再玩。);Sleep(800);exit(0);if(GetAsyncKeyState(VK_SPACE)reset=1;break;else if(GetAsyncKeyState。

16、(VK_UP)status=U;else if(GetAsyncKeyState(VK_DOWN)status=D;else if(GetAsyncKeyState(VK_LEFT)status=L;else if(GetAsyncKeyState(VK_RIGHT)status=R;if(nowbox=p-all)/完成此局break;move();void startgame()/开始游戏while(1)system(cls);Pos(25,5);printf(第%d关,level+1);Pos(40,20);printf(按空格键重新开始此关游戏。);Pos(40,21);printf(。

17、按ESC键结束游戏。);loadmap();getch(); /防止第一次按键对游戏的影响gamecircle();if(reset=0)/reset为0不重玩break;else if(reset=1)/reset为1重玩reset=0;/ if(jump=0)/ break;/ else if(jump=1)/ jump=0;Sleep(300);int main()system(mode con cols=80 lines=25); /控制台宽度80,高度25welcometogame(); /欢迎界面initgame(); /初始化地图信息,创建关卡地图for(level=0; level4; level+) /开始游戏p=Group+level;startgame();system(cls);Pos(32,14);printf(您已通关!n);Pos(0,20);system(pause。

推箱子c语言代码有注释,C语言推箱子源代码推箱子代码完善相关推荐

  1. c语言归并排序代码详细注释,C语言实现归并排序算法

    C语言实现归并排序算法 归并排序是创建在归并操作上的一种有效的排序算法.下面小编为大家整理了C语言实现归并排序算法,希望能帮到大家! 归并排序(Merge sort)是创建在归并操作上的一种有效的排序 ...

  2. c语言归并排序代码详细注释,C语言实现排序算法之归并排序详解

    排序算法中的归并排序(Merge Sort)是利用"归并"技术来进行排序.归并是指将若干个已排序的子文件合并成一个有序的文件. 一.实现原理: 1.算法基本思路 设两个有序的子文件 ...

  3. 数组的c语言代码带注释,C语言之数组

    1.一维数组 特点:同一数组中的所有元素都属于同种数据类型,数组元素用数组名和相应的下标来确定. 方法:一个数组元素其实就是一个变量,可以称为带下标的变量 1.一维数组的定义和引用(只有一个下标) 1 ...

  4. c语言删掉注释,c语言删除注释

    /* * delete comment in C */ #include #define normal 0 void rcomment(int c); void in_comment(void); v ...

  5. c语言海伦公式编程注释,c语言 关于海伦公式 求助

    满意答案 是刚学C吧?好象对变量的作用域.命名以及命令的使用还要再加强一下. 三个函数中都有错误: 一,看你的程序,似乎是想把变量s作为一个全局变量,在各个函数中使用,可该变量并没有定义.(那个主函数 ...

  6. Keil | 解决Keil与VScode配合使用时,代码与注释位置不一样的问题。

    文章目录 一.前言 二.代码与注释位置不一样 三.解决方法 一.前言 Keil是一个代码体验非常差的代码编辑器,不过Keil作为一个代码编译器与代码调试工具是非常棒的.有一些嵌入式的老前辈使用Keil ...

  7. vi/vim粘贴代码和注释格式混乱的解决方法

    现象 在vim新建文件的时候,黏贴代码会自动缩进,导致格式非常混乱. 或是粘贴注释出现自动注释: vim复制代码包含注释时格式会乱掉 每次复制代码时,如果代码里有 // 这样的注释就容易让格式乱掉,通 ...

  8. 代码命名,代码里的命名规则:错误的和正确的对比 命名方法总结 “自我描述的源代码”用代码表达出你的思想,让其他人通过代码能明白你的意图。...

    http://www.aqee.net/express-names-in-code-bad-vs-clean/ 编程初学者总是把大量的时间用在学习编程语言,语法,技巧和编程工具的使用上.他们认为,如果 ...

  9. c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  10. Go语言中的注释类型和代码风格

    Go语言中的注释类型 Go的代码风格

最新文章

  1. java amr 转 mp3_JAVA 音频转换AMR 转MP3,OS,Linux cent os 7
  2. 移动机器人路径规划---深蓝学院培训学习记录
  3. eclipse android环境配置
  4. 深入理解 ajax_xhr 对象
  5. 是按压还是触摸_一文读懂,选联想还是华为?Matebook 14锐龙版和YOGA 14s、小新Pro13怎么选?...
  6. Fedora安装Docker
  7. AngularJS复习小结
  8. SylixOS PCI 驱动 分析--设备枚举
  9. 万人血书的前端开发自学资料(书籍+教程),它来了~
  10. 【经验分享】U盘软刷映泰TB250-BTC刷魔改BIOS上6789代CPU,另解决开机转一下后停止问题
  11. 中国邮路算法(中国邮递员问题)(详细)
  12. oracle 12 去掉 cdb,Oracle 12c CDB 和PDB 数据库的启动与关闭 说明
  13. 求一阶微分方程通解和特解
  14. 2021年黄石二中高考成绩查询,2020年黄石二中2020届高考总结
  15. 计算机网络的概述以及网络的组成
  16. inkscape工具箱:选择和变换工具(快捷键F1)
  17. 数学基础_若要使骰子(六个面)的每个数都出现至少一次,那么平均需要掷多少次骰子?
  18. Z39.50 图书信息检索
  19. 解决苹果电脑(Mac)无法写入移动硬盘的方法
  20. 手机共享电脑网络上网

热门文章

  1. 【工控入门】组态软件概念科普与基本构架描述
  2. YLMF OS 发布
  3. 序列平稳性和纯随机性检验
  4. kindle可以上网但是无法下载_两年深度使用经验告诉你:Kindle 这样用,绝对不吃灰...
  5. 程序员python开发简历范文_程序员简历就该这样写
  6. Java:Map转List (用stream实现)
  7. java实训致谢_Java教学实习报告(最终版).doc
  8. Python TKinter下拉日历控件
  9. DPDK Release 21.08
  10. 高德 设置marker zoom_ZOOM云会议下载安装-ZOOM云视频会议最新版v5.3.53292