基于控制台的C推箱子_第1页
基于控制台的C推箱子_第2页
基于控制台的C推箱子_第3页
基于控制台的C推箱子_第4页
基于控制台的C推箱子_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论