版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c+ 实现推箱子游戏: 主函数部分:#include "map.h"#include "push.h"#include <stdio.h>#include <iostream>#include <conio.h> using namespacestd;void game();int main()game();return 0;void game()int level = 0;map mymap;push mypush;bool flag = false while ( true )if (!flag)cout <
2、<"t*经典推箱子 *tnn""tt1.开始游戏 ttn""tt2. 退出游戏 ttn" "n=n"char start = getch();system( "cls");if (start !='1' )(cout <<"游戏结束! nbreak;mymap.setlevel(level%7+1);mymap.downloadmap();mymap.findperson();mymap.printmap(level%7+1);mypush.getpo
3、s(mymap);while ( true )char play = getch();system( "cls" );if (play= 'q' )flag = false ;break;switch (play)case 'a' : case 'a' :mypush.toleft(mymap); break;case 'd' : case 'd' :mypush.toright(mymap); break;case 'w' : case 'w' :mypush.
4、totop(mymap); break;case 's' : case 's' :mypush.tobottom(mymap);mymap.printmap(level%7+1);if (mymap.is_win()关! n" ;cout << "恭喜你过了第" << level%7+1 <<cout << "1. 进行下一关n""2. 返回主菜单n" ;char next = getch();system( "cls" );
5、if (next = '1' )flag = true ;level+;break;推箱子方法类:头文件#ifndef push_h_#define push_h_#include "map.hclass pushprivate :int posx;int posy;public :push();void getpos(map & mymap);void toleft(map & mymap); / 向左推void toright(map & mymap); / 向右推void totop(map & mymap); / 向上推void
6、 tobottom(map & mymap); / 向下推;#endifcpp 文件:#include "push.h"push:push()void push:getpos(map & mymap) /mymap = map();posx = mymap.getpersonx();posy = mymap.getpersony();void push:toleft(map & mymap)int presentpos, nextpos, lastpos;presentpos = mymap.getunit(posx, posy);if ( pres
7、entpos = 2)nextpos = mymap.getunit(posx, posy-1);if (nextpos = 0)posy-;mymap.setunit(posx, posy+1, 0);mymap.setunit(posx, posy, 2); else if (nextpos = 3)lastpos = mymap.getunit(posx,posy-2);if (lastpos = 0)posy-;mymap.setunit(posx, posy+1, 0);mymap.setunit(posx, posy, 2);mymap.setunit(posx, posy-1,
8、3);else if (lastpos = 4)posy-;mymap.setunit(posx, posy+1, 0);mymap.setunit(posx, posy, 2);mymap.setunit(posx, posy-1, 7);mymap.setunit(posx, posy+1, 7);elseif (nextpos = 4)posy-;mymap.setunit(posx, posy, #);else if (nextpos = 7)lastpos = mymap.getunit(posx, posy-2);if (lastpos = 0)posy-;mymap.setuni
9、t(posx, posy+1, 0);mymap.setunit(posx, posy, 6);mymap.setunit(posx, posy-1, 3);else if (presentpos = 6)nextpos = mymap.getunit(posx, posy-1);if (nextpos = 0)posy-;else if (nextpos = 3)lastpos = mymap.getunit(posx, posy-2);if (lastpos = 0)posy-;mymap.setunit(posx, posy+1, 4);mymap.setunit(posx, posy,
10、 2);mymap.setunit(posx, posy-1, 3);void push:toright(map & mymap)int presentpos, nextpos, lastpos;presentpos = mymap.getunit(posx, posy);if (presentpos = 2)nextpos = mymap.getunit(posx, posy+1);if (nextpos = 0)posy+;mymap.setunit(posx, posy-1,0);mymap.setunit(posx, posy,2);else if (nextpos = 3)l
11、astpos = mymap.getunit(posx, posy+2);if (lastpos = 0)posy+;mymap.setunit(posx, posy-1,0);mymap.setunit(posx, posy,2);mymap.setunit(posx, posy+1,3);else if (lastpos = 4)posy+;mymap.setunit(posx, posy-1,0);mymap.setunit(posx, posy+1,7);else if (nextpos = 4) posy+;mymap.setunit(posx, posy-1,0);mymap.se
12、tunit(posx, posy,6);else if (nextpos = 7)lastpos = mymap.getunit(posx, posy+2);if (lastpos = 0)posy+;mymap.setunit(posx, posy-1,0);mymap.setunit(posx, posy,6);mymap.setunit(posx, posy+1,3);else if (presentpos = 6)nextpos = mymap.getunit(posx, posy+1);if (nextpos = 0) posy+;mymap.setunit(posx, posy-1
13、,4);mymap.setunit(posx, posy,2);if (nextpos = 3)lastpos = mymap.getunit(posx,posy+2);if (lastpos = 0) posy+;mymap.setunit(posx, posy-1,4);mymap.setunit(posx, posy,2);mymap.setunit(posx, posy+1,3);void push:totop(map & mymap)int presentpos, nextpos, lastpos;presentpos = mymap.getunit(posx, posy);
14、if (presentpos = 2)nextpos = mymap.getunit(posx-1, posy);if (nextpos = 0)posx-;mymap.setunit(posx+1, posy, 0);mymap.setunit(posx, posy, 2);else if (nextpos = 3)lastpos = mymap.getunit(posx-2, posy);if (lastpos = 0)posx-;mymap.setunit(posx+1, posy, 0);mymap.setunit(posx, posy, 2);mymap.setunit(posx-1
15、, posy, 3);else if (lastpos = 4)posx-;mymap.setunit(posx+1, posy, 0);mymap.setunit(posx, posy, 2);mymap.setunit(posx-1, posy, 7);else if (nextpos = 4) posx-;mymap.setunit(posx+1, posy, 0);mymap.setunit(posx, posy, 6);else if (nextpos = 7)lastpos = mymap.getunit(posx-2,posy);if (lastpos = 0)posx-;mym
16、ap.setunit(posx+1, posy, 0);mymap.setunit(posx, posy, 6);mymap.setunit(posx-1, posy, 3);else if (presentpos = 6)nextpos = mymap.getunit(posx-1, posy);if (nextpos = 0)posx-;mymap.setunit(posx+1, posy, 4);mymap.setunit(posx, posy, 2);if (nextpos = 3)lastpos = mymap.getunit(posx-2, posy);if (lastpos =
17、0) posx-;mymap.setunit(posx+1, posy, 4);mymap.setunit(posx, posy, 2);mymap.setunit(posx-1, posy, 3);void push:tobottom(map & mymap)int presentpos, nextpos, lastpos;presentpos = mymap.getunit(posx, posy);if (presentpos = 2)posx+;mymap.setunit(posx-1, posy, 0);mymap.setunit(posx, posy,2);else if (
18、nextpos = 3)lastpos = mymap.getunit(posx+2, posy);if (lastpos = 0)posx+;mymap.setunit(posx-1, posy, 0);mymap.setunit(posx, posy,2);mymap.setunit(posx+1, posy,3);else if (lastpos = 4)posx+;mymap.setunit(posx-1, posy, 0);mymap.setunit(posx, posy,2);mymap.setunit(posx+1, posy,7);else if (nextpos = 4)po
19、sx+;mymap.setunit(posx-1, posy, 0);mymap.setunit(posx, posy,6);else if (nextpos = 7)lastpos = mymap.getunit(posx+2, posy);if (lastpos = 0)posx+;mymap.setunit(posx-1, posy, 0);mymap.setunit(posx, posy,6);mymap.setunit(posx+1, posy,3);else if (presentpos = 6)nextpos = mymap.getunit(posx+1, posy);if (n
20、extpos = 0)posx+;mymap.setunit(posx-1, posy, 4);mymap.setunit(posx, posy,2);if (nextpos = 3)lastpos = mymap.getunit(posx+2, posy);if (lastpos = 0)posx+;mymap.setunit(posx-1, posy, 4);mymap.setunit(posx, posy,2);mymap.setunit(posx+1, posy,3);地图类:#ifndef map_h_#define map_h_const int size = 10;class m
21、apprivate :int mapsizesize;int personx;int persony;int level;public :map();int getpersonx();int getpersony();int getlevel();/ 得到关卡void setlevel( int l);/ 设置关卡int getunit( int x, int y); / 得到单元值void setunit( int x, int y , int val); / 设置单元值void downloadmap(); / 载入地图void findperson(); / 得到人物的位置void pr
22、intmap( int level); / 打印地图bool is_win(); / 判段是否过关;#endifcp我件#include "map.h"#include <iostream>#include <cstdio>#include <fstream>#include <cstring>using namespacestd;/extern const int size;map:map()void map:downloadmap()char name20 = "map"char str10;itoa(
23、level,str,10);strcat(name,str);strcat(name, ".txt" );ifstream mapfile;mapfile.open(name);if (!mapfile.is_open()cout <<"无法打开地图文件! n" ;for ( int i = 0; i < size; i+)for ( int j = 0; j < size; j+)mapfile >> mapij;mapfile.close();findperson();void map:findperson()(for (int i = 0; i < size; i+)for (int j = 0; j < size; j+)if (mapij=2)(personx = i;persony
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上海市复旦大学智能医学研究院招聘周欣课题组行政助理岗位备考题库及参考答案详解一套
- 2025年中国邮政储蓄银行苏州市分行信用卡直销团队招聘备考题库及参考答案详解一套
- 2025年威海市检察机关公开招聘聘用制书记员31人备考题库带答案详解
- 2025年北京协和医院基本外科合同制科研助理招聘备考题库及答案详解1套
- 2026年医院组织结构调整合同
- 2026年采空区合同
- 2025国家公务员国家税务总局孝昌县税务局面试试题及答案
- 2025年钦州市灵山生态环境局关于向社会公开招聘工作人员的备考题库及答案详解1套
- 2025年张家港市南丰镇人民医院自主招聘编外合同制卫技人员备考题库及答案详解一套
- 长沙县卫生健康局所属基层医疗卫生机构2025年12月公开招聘编外工作人员备考题库含答案详解
- 2025天津大学管理岗位集中招聘15人笔试备考重点题库及答案解析
- 2026年人教版(2024)初中美术七年级上册期末综合测试卷及答案(四套)
- 供应饭菜应急预案(3篇)
- 2026年辽宁理工职业大学单招职业适应性测试题库及参考答案详解
- 接地线课件教学课件
- 2025西部科学城重庆高新区招聘急需紧缺人才35人考试笔试模拟试题及答案解析
- 2026广东东莞市公安局招聘普通聘员162人笔试考试参考试题及答案解析
- 《马原》期末复习资料
- 管理信息系统(同济大学)知到智慧树章节测试课后答案2024年秋同济大学
- 甄嬛传(滴血认亲台词1)
- 马海涛中国税制习题与答案
评论
0/150
提交评论