基于控制台的C推箱子.docx

上传人:b****8 文档编号:11272578 上传时间:2023-02-26 格式:DOCX 页数:20 大小:17.65KB
下载 相关 举报
基于控制台的C推箱子.docx_第1页
第1页 / 共20页
基于控制台的C推箱子.docx_第2页
第2页 / 共20页
基于控制台的C推箱子.docx_第3页
第3页 / 共20页
基于控制台的C推箱子.docx_第4页
第4页 / 共20页
基于控制台的C推箱子.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于控制台的C推箱子.docx

《基于控制台的C推箱子.docx》由会员分享,可在线阅读,更多相关《基于控制台的C推箱子.docx(20页珍藏版)》请在冰豆网上搜索。

基于控制台的C推箱子.docx

基于控制台的C推箱子

C++实现推箱子游戏:

主函数部分:

#include"Map.h"

#include"Push.h"

#include

#include

#include

usingnamespacestd;

voidGame();

intmain()

{

Game();

return0;

}

voidGame()

{

intlevel=0;

MapmyMap;

PushmyPush;

boolflag=false;

while(true)

{

if(!

flag)

{

cout<<"\t**********经典推箱子**********\t\n\n"

"\t\t1.开始游戏\t\t\n"

"\t\t2.退出游戏\t\t\n"

"\n========================================\n";

charstart=getch();

system("cls");

if(start!

='1')

{

cout<<"游戏结束!

\n";

break;

}

}

myMap.setLevel(level%7+1);

myMap.downloadMap();

myMap.findPerson();

myMap.printMap(level%7+1);

myPush.getPos(myMap);

while(true)

{

charplay=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.toTop(myMap);break;

case'S':

case's':

myPush.toBottom(myMap);

}

myMap.printMap(level%7+1);

if(myMap.is_win())

{

cout<<"恭喜你过了第"<

\n";

cout<<"1.进行下一关\n"

"2.返回主菜单\n";

charnext=getch();

system("cls");

if(next=='1')

flag=true;

level++;

break;

}

}

}

}

推箱子方法类:

头文件

#ifndefPush_H_

#definePush_H_

#include"Map.h"

classPush

{

private:

intposX;

intposY;

public:

Push();

voidgetPos(Map&myMap);

voidtoLeft(Map&myMap);//向左推

voidtoRight(Map&myMap);//向右推

voidtoTop(Map&myMap);//向上推

voidtoBottom(Map&myMap);//向下推

};

#endif

CPP文件:

#include"Push.h"

Push:

:

Push()

{

}

voidPush:

:

getPos(Map&myMap)

{

//myMap=Map();

posX=myMap.getPersonX();

posY=myMap.getPersonY();

}

voidPush:

:

toLeft(Map&myMap)

{

intpresentPos,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);

}

elseif(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);

}

elseif(lastPos==4)

{

posY--;

myMap.setUnit(posX,posY+1,0);

myMap.setUnit(posX,posY,2);

myMap.setUnit(posX,posY-1,7);

}

}

elseif(nextPos==4)

{

posY--;

myMap.setUnit(posX,posY+1,0);

myMap.setUnit(posX,posY,6);

}

elseif(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);

}

}

}

elseif(presentPos==6)

{

nextPos=myMap.getUnit(posX,posY-1);

if(nextPos==0)

{

posY--;

myMap.setUnit(posX,posY+1,4);

myMap.setUnit(posX,posY,2);

}

elseif(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);

}

}

}

}

voidPush:

:

toRight(Map&myMap)

{

intpresentPos,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);

}

elseif(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);

}

elseif(lastPos==4)

{

posY++;

myMap.setUnit(posX,posY-1,0);

myMap.setUnit(posX,posY,2);

myMap.setUnit(posX,posY+1,7);

}

}

elseif(nextPos==4)

{

posY++;

myMap.setUnit(posX,posY-1,0);

myMap.setUnit(posX,posY,6);

}

elseif(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);

}

}

}

elseif(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,posY+1,3);

}

}

}

}

voidPush:

:

toTop(Map&myMap)

{

intpresentPos,nextPos,lastPos;

presentPos=myMap.getUnit(posX,posY);

if(presentPos==2)

{

nextPos=myMap.getUnit(posX-1,posY);

if(nextPos==0)

{

posX--;

myMap.setUnit(posX+1,posY,0);

myMap.setUnit(posX,posY,2);

}

elseif(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);

}

elseif(lastPos==4)

{

posX--;

myMap.setUnit(posX+1,posY,0);

myMap.setUnit(posX,posY,2);

myMap.setUnit(posX-1,posY,7);

}

}

elseif(nextPos==4)

{

posX--;

myMap.setUnit(posX+1,posY,0);

myMap.setUnit(posX,posY,6);

}

elseif(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);

}

}

}

elseif(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==0)

{

posX--;

myMap.setUnit(posX+1,posY,4);

myMap.setUnit(posX,posY,2);

myMap.setUnit(posX-1,posY,3);

}

}

}

}

voidPush:

:

toBottom(Map&myMap)

{

intpresentPos,nextPos,lastPos;

presentPos=myMap.getUnit(posX,posY);

if(presentPos==2)

{

nextPos=myMap.getUnit(posX+1,posY);

if(nextPos==0)

{

posX++;

myMap.setUnit(posX-1,posY,0);

myMap.setUnit(posX,posY,2);

}

elseif(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);

}

elseif(lastPos==4)

{

posX++;

myMap.setUnit(posX-1,posY,0);

myMap.setUnit(posX,posY,2);

myMap.setUnit(posX+1,posY,7);

}

}

elseif(nextPos==4)

{

posX++;

myMap.setUnit(posX-1,posY,0);

myMap.setUnit(posX,posY,6);

}

elseif(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);

}

}

}

elseif(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==0)

{

posX++;

myMap.setUnit(posX-1,posY,4);

myMap.setUnit(posX,posY,2);

myMap.setUnit(posX+1,posY,3);

}

}

}

}

地图类:

#ifndefMAP_H_

#defineMAP_H_

constintSIZE=10;

classMap

{

private:

intmap[SIZE][SIZE];

intpersonX;

intpersonY;

intlevel;

public:

Map();

intgetPersonX();

intgetPersonY();

intgetLevel();//得到关卡

voidsetLevel(intl);//设置关卡

intgetUnit(intx,inty);//得到单元值

voidsetUnit(intx,inty,intval);//设置单元值

voiddownloadMap();//载入地图

voidfindPerson();//得到人物的位置

voidprintMap(intlevel);//打印地图

boolis_win();//判段是否过关

};

#endif

CPP文件

#include"Map.h"

#include

#include

#include

#include

usingnamespacestd;

//externconstintSIZE;

Map:

:

Map()

{

}

voidMap:

:

downloadMap()

{

charname[20]={"map"};

charstr[10];

itoa(level,str,10);

strcat(name,str);

strcat(name,".txt");

ifstreammapFile;

mapFile.open(name);

if(!

mapFile.is_open())

{

cout<<"无法打开地图文件!

\n";

}

for(inti=0;i

{

for(intj=0;j

mapFile>>map[i][j];

}

mapFile.close();

findPerson();

}

voidMap:

:

findPerson()

{

for(inti=0;i

for(intj=0;j

if(map[i][j]==2)

{

personX=i;

personY=j;

return;

}

}

voidMap:

:

printMap(intlevel)

{

inti,j;

printf("=======第%d关======\n",level);

for(i=0;i

{

for(j=0;j

{

switch(map[i][j])

{

case0:

printf("");break;

case1:

printf("■");break;

case2:

case6:

printf("☆");break;

case3:

case7:

printf("●");break;

case4:

printf("○");

}

}

printf("\n");

}

if(!

is_win())

printf("==请按q键返回主菜单==\n");

}

intMap:

:

getPersonX()

{

returnpersonX;

}

intMap:

:

getPersonY()

{

returnpersonY;

}

intMap:

:

getLevel()

{

returnlevel;

}

voidMap:

:

setLevel(intl)

{

level=l;

}

intMap:

:

getUnit(intx,inty)

{

returnmap[x][y];

}

voidMap:

:

setUnit(intx,inty,intval)

{

map[x][y]=val;

}

boolMap:

:

is_win()

{

for(inti=0;i

for(intj=0;j

if(map[i][j]==3)

returnfalse;

returntrue;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1