最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用c++寫一個簡單的推箱子小游戲

 更新時間:2021年09月13日 15:08:59   作者:詩一樣的代碼  
推箱子想必是很多人童年時期的經(jīng)典游戲,我們依舊能記得抱個老人機娛樂的場景,下面這篇文章主要給大家介紹了關于如何利用c++寫一個簡單的推箱子小游戲的相關資料,需要的朋友可以參考下

效果圖

相信各位都肯定完整這種推箱子的小游戲。游戲玩法很簡單,那就是一個人把所有的箱子推動到對應的位置那就可以贏了。

那么我們接下來看看這個推箱子的游戲改怎么寫

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是終點,o是推動的箱子,然后!是人,空的字符就是通道。別看界面比較簡陋,我們學的是算法,只要思想學會了,隨便移植到哪個有界面的程序都是可以的。

                int r,l;              //人的下標 
		for(int i=0;i<=9;i++){
			for(int j=0;j<=9;j++){
				if(map[i][j]=='!'){
					r=i;          //r,l相當于地圖的寬度和長度 
					l=j;
				}
			} 
		}

在一開始我們需要遍歷,并且獲取人的坐標。

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'){    //因為要推著箱子走,所以要確保上面的上面還可以走或者到達終點 
					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]=' ';
			}
				
			}
			
		}

這里就是進行wsad的上下左右操作。然后操作時候需要判空,判斷人是否可以走動。如果是墻壁就不能走動。如果是箱子,那還有判斷箱子的前一格是否可以走動,可以的話就直接推箱子了。

總的來說這種游戲并不算太難。如果是多個關卡的話,可以選擇加一個關卡地圖配置文件。然后讓游戲策劃進行配置。設計游戲的地圖才是這游戲的難點所在。

總結

到此這篇關于利用c++寫一個簡單的推箱子小游戲的文章就介紹到這了,更多相關c++寫推箱子小游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C/C++中不同數(shù)據(jù)類型之間的轉換詳解

    C/C++中不同數(shù)據(jù)類型之間的轉換詳解

    這篇文章主要介紹了C/C++中不同數(shù)據(jù)類型之間的轉換詳解,數(shù)據(jù)類型轉換是計算機編程中常見的操作,用于將一個數(shù)據(jù)類型轉換為另一個數(shù)據(jù)類型,本文將對不同數(shù)據(jù)類型之間的轉換作出說明,需要的朋友可以參考下
    2023-10-10
  • C++實現(xiàn)職工工資管理系統(tǒng)

    C++實現(xiàn)職工工資管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單的職工工資管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • VS2019+Opencv4.0+Win10配置詳解

    VS2019+Opencv4.0+Win10配置詳解

    這篇文章主要介紹了VS2019+Opencv4.0+Win10配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • C++ 手把手教你實現(xiàn)可變長的數(shù)組實現(xiàn)

    C++ 手把手教你實現(xiàn)可變長的數(shù)組實現(xiàn)

    這篇文章主要介紹了C++ 手把手教你實現(xiàn)可變長的數(shù)組實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • c語言數(shù)據(jù)結構之并查集 總結

    c語言數(shù)據(jù)結構之并查集 總結

    一種用于管理分組的數(shù)據(jù)結構。它具備兩個操作:(1)查詢元素a和元素b是否為同一組 (2) 將元素a和b合并為同一組,需要的朋友可以參考下
    2018-08-08
  • Qt使用流處理XML文件的示例代碼

    Qt使用流處理XML文件的示例代碼

    XML(eXtensible?Markup?Language)是一種通用的文本格式,被廣泛運用于數(shù)據(jù)交換和數(shù)據(jù)存儲。本文主要來和大家聊聊如何使用?Qt?處理?XML?格式的文檔,需要的可以參考一下
    2023-02-02
  • C++雙向鏈表的增刪查改操作方法講解

    C++雙向鏈表的增刪查改操作方法講解

    相較單鏈表,雙向鏈表除了data與next域,還多了一個pre域用于表示每個節(jié)點的前一個元素。這樣做給雙向鏈表帶來了很多優(yōu)勢。本文主要介紹了雙向鏈表的實現(xiàn),需要的可以參考一下
    2023-03-03
  • C語言實現(xiàn)十六進制與二進制的相互轉換

    C語言實現(xiàn)十六進制與二進制的相互轉換

    這篇文章主要為大家詳細介紹了如何利用c語言實現(xiàn)將文件中十六進制數(shù)據(jù)與二進制數(shù)據(jù)相互轉換,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的可以學習一下
    2022-11-11
  • C語言double和float 實例分析

    C語言double和float 實例分析

    本文主要介紹了C語言中的浮點數(shù)(float,double),并通過實例代碼進行分析比較,希望能幫助學習相關知識的同學
    2016-07-07
  • C語言數(shù)據(jù)結構之 折半查找實例詳解

    C語言數(shù)據(jù)結構之 折半查找實例詳解

    這篇文章主要介紹了C語言數(shù)據(jù)結構之 折半查找實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06

最新評論

昭觉县| 九龙县| 阳新县| 开化县| 娱乐| 唐河县| 延寿县| 资溪县| 定边县| 甘德县| 义乌市| 富阳市| 邢台市| 伊吾县| 诸暨市| 邯郸市| 扶风县| 徐州市| 彰武县| 汾阳市| 平顶山市| 泾源县| 循化| 民乐县| 磐安县| 张掖市| 长岛县| 墨玉县| 永嘉县| 瑞丽市| 新龙县| 宁陵县| 新乐市| 达孜县| 锡林浩特市| 家居| 宁德市| 保康县| 临泽县| 灵丘县| 醴陵市|