您好,登錄后才能下訂單哦!
這篇文章主要介紹如何利用c++實(shí)現(xiàn)推箱子小游戲,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
效果圖
相信各位都肯定完整這種推箱子的小游戲。游戲玩法很簡單,那就是一個(gè)人把所有的箱子推動(dòng)到對應(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)的箱子,然后!是人,空的字符就是通道。別看界面比較簡陋,我們學(xué)的是算法,只要思想學(xué)會了,隨便移植到哪個(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)于地圖的寬度和長度 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)所在。
以上是“如何利用c++實(shí)現(xiàn)推箱子小游戲”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。