利用c++寫一個(gè)簡(jiǎn)單的推箱子小游戲
效果圖

相信各位都肯定完整這種推箱子的小游戲。游戲玩法很簡(jiǎn)單,那就是一個(gè)人把所有的箱子推動(dòng)到對(duì)應(yīng)的位置那就可以贏了。
那么我們接下來看看這個(gè)推箱子的游戲改怎么寫
char map[10][10]=
{
{'#','#','#','#','#','#','#','#','#','#'},
{'#','#','#','#',' ',' ','!',' ',' ','#'},
{'#',' ',' ',' ',' ','o',' ',' ',' ','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#','#',' ','#','#','#',' ','#','#','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
{'#','#',' ','#',' ','#','#','#','#','#'},
{'#','#',' ',' ',' ',' ',' ','x','#','#'},
{'#','#','#','#','#','#','#','#','#','#'}
};
void DrawMap(){
for(int i=0;i<=9;i++){
for(int j=0;j<=9;j++){
cout<<map[i][j];
}
cout<<endl;
}
}
首先先畫出地圖,這里面的#是墻壁,x是終點(diǎn),o是推動(dòng)的箱子,然后!是人,空的字符就是通道。別看界面比較簡(jiǎn)陋,我們學(xué)的是算法,只要思想學(xué)會(huì)了,隨便移植到哪個(gè)有界面的程序都是可以的。
int r,l; //人的下標(biāo)
for(int i=0;i<=9;i++){
for(int j=0;j<=9;j++){
if(map[i][j]=='!'){
r=i; //r,l相當(dāng)于地圖的寬度和長(zhǎng)度
l=j;
}
}
}
在一開始我們需要遍歷,并且獲取人的坐標(biāo)。
cout<<"please enter w(up) s(down) a(left) b(right)"<<endl;
char ch;
cin>>ch;
if(ch=='w'||ch=='W'){
if(map[r-1][l]==' '){ //若往上走沒有障礙物
map[r][l]==' ';
map[r-1][l]='!'; //走上去
}
if(map[r-1][l]=='o'){ //若上面有箱子
if(map[r-2][l]==' '||map[r-2][l]=='x'){ //因?yàn)橐浦渥幼?,所以要確保上面的上面還可以走或者到達(dá)終點(diǎn)
map[r-2][l]='o';
map[r-1][l]='!';
map[r][l]=' ';
}
}
}
if(ch=='s'||ch=='S'){
if(map[r+1][l]==' '){
map[r][l]=' ';
map[r+1][l]='!';
}
if(map[r+1][l]=='o'){
if(map[r+2][l]==' '||map[r+2][l]=='x'){
map[r+2][l]='o';
map[r+1][l]='!';
map[r][l]=' ';
}
}
}
if(ch=='a'||ch=='A'){
if(map[r][l-1]=' '){
map[r][l]=' ';
map[r][l-1]='!';
}
if(map[r][l-1]=='o'){
if(map[r][l-2]==' '||map[r][l-2]=='x'){
map[r][l-2]='o';
map[r][l-1]='!';
map[r][l]=' ';
}
}
}
if(ch=='d'||ch=='D'){
if(map[r][l+1]==' '){
map[r][l+1]='!';
map[r][l]=' ';
}
if(map[r][l+1]=='o'){
if(map[r][l+2]==' '||map[r][l+2]=='x'){
map[r][l+2]='o';
map[r][l+1]='!';
map[r][l]=' ';
}
}
}
這里就是進(jìn)行wsad的上下左右操作。然后操作時(shí)候需要判空,判斷人是否可以走動(dòng)。如果是墻壁就不能走動(dòng)。如果是箱子,那還有判斷箱子的前一格是否可以走動(dòng),可以的話就直接推箱子了。
總的來說這種游戲并不算太難。如果是多個(gè)關(guān)卡的話,可以選擇加一個(gè)關(guān)卡地圖配置文件。然后讓游戲策劃進(jìn)行配置。設(shè)計(jì)游戲的地圖才是這游戲的難點(diǎn)所在。
總結(jié)
到此這篇關(guān)于利用c++寫一個(gè)簡(jiǎn)單的推箱子小游戲的文章就介紹到這了,更多相關(guān)c++寫推箱子小游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解C語言中的符號(hào)常量、變量與算術(shù)表達(dá)式
這篇文章主要介紹了C語言中的符號(hào)常量、變量與算術(shù)表達(dá)式,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-11-11
VS2019配置OpenCV時(shí)找不到Microsoft.Cpp.x64.user的解決方法
這篇文章主要介紹了VS2019配置OpenCV時(shí)找不到Microsoft.Cpp.x64.user的解決方法,需要的朋友可以參考下2020-02-02
C++實(shí)現(xiàn)LeetCode(106.由中序和后序遍歷建立二叉樹)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(106.由中序和后序遍歷建立二叉樹),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

