《基于控制台的C++推箱子.》由会员分享,可在线阅读,更多相关《基于控制台的C++推箱子.(26页珍藏版)》请在金锄头文库上搜索。
1、C+实现推箱子游戏:主函数部分:#includeMap.h#includePush.h#include#include#includeusing namespace std;void Game();int main()Game();return 0;void Game()int level = 0;Map myMap;Push myPush;bool flag = false; while(true) if(!flag) cout t*经典推箱子*tnn tt1.开始游戏ttn tt2.退出游戏ttn n=n; char start = getch(); system(cls); if(sta
2、rt != 1) cout 游戏结束!n; break; myMap.setLevel(level%7+1); myMap.downloadMap(); myMap.findPerson(); myMap.printMap(level%7+1); myPush.getPos(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: myPu
3、sh.toRight(myMap); break; case W:case w: myPush.toTop(myMap); break; case S:case s: myPush.toBottom(myMap); myMap.printMap(level%7+1); if(myMap.is_win() cout 恭喜你过了第 level%7+1 关!n; cout 1.进行下一关n 2.返回主菜单n; char next = getch(); system(cls); if(next = 1) flag = true; level+; break; 推箱子方法类:头文件#ifndef Pus
4、h_H_#define Push_H_#includeMap.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 toBottom(Map & myMap);/向下推;#endifCPP文件:#includePush.hPush:Push()void Push:getPos(Map & myMap)/myMap =
5、 Map();posX = myMap.getPersonX();posY = myMap.getPersonY();void Push:toLeft(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);el
6、se 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, 3);else if(lastPos = 4)posY-;myMap.setUnit(posX, posY+1, 0);myMap.setUnit(posX, posY, 2);myMap.setUnit(posX, posY-1, 7);else if(nextPos
7、= 4)posY-;myMap.setUnit(posX, posY+1, 0);myMap.setUnit(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)
8、;if(nextPos = 0) posY-; myMap.setUnit(posX, posY+1, 4); myMap.setUnit(posX, posY, 2);else 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:toRight(Map & myMap) int presen
9、tPos, 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) lastPos = myMap.getUnit(posX, posY+2); if(lastPos = 0) posY+; myMap.setUni
10、t(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,2); myMap.setUnit(posX, posY+1,7); else if(nextPos = 4) posY+; myMap.setUnit(posX, posY-1,0); myMap.setUnit(posX, posY,6); else if(nextPo
11、s = 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,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, po