999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Cocos2d的迷宮游戲的設計與實現

2016-08-24 01:47:29李愛軍
辦公自動化 2016年13期
關鍵詞:按鈕游戲

李愛軍

(蘇州職業大學計算機工程學院 蘇州 215104)

基于Cocos2d的迷宮游戲的設計與實現

李愛軍

(蘇州職業大學計算機工程學院蘇州215104)

本游戲用Xcode開發,并基于Cocos2d,開發過程中運用了流程控制、菜單、特效、精靈等技術開發。蘋果游戲開發模式雖然說看似封閉,但是從另一方面卻極大地激起開發者興趣。

迷宮手機游戲Cocos2d-X

一、引言

迷宮游戲設計目的是訓練人的思維能力,為了解決玩家在等公交車,放松休息,在咖啡廳等悠閑時間無聊的問題,既不占用工作時間,又可以給玩家帶來樂趣。游戲更是設計了眾多關卡,隨著關卡的增加,游戲難度會逐漸增加,讓玩家可以盡情享受游戲的樂趣。

二、需求分析

本游戲設計是單機類迷宮闖關小游戲,相比于電腦版的闖關類迷宮類小游戲,在操作方面更加的簡潔方便,畫面更加的明了。為了保證游戲的流暢性,游戲在計算步驟方面運用了不算太過于冗長的代碼,但同時有保證了游戲的樂趣性。在整個游戲中,實現以下功能。

1、進入游戲界面,出現游戲介紹和游戲開始的選項;

2、游戲進行時,可以選擇返回選項;

3、當迷宮人物路線選擇錯誤,人物可以自動回到起點;

4、玩家可以隨意游戲的關卡,不會被限制于固定關卡;

5、游戲關卡的排列,確保排列格式為蛇形排列;

6、腳印圖形的嵌入,當人物進入出口時,界面自動跳轉為游戲的關卡選擇界面;

7、設計每張圖形的路線,從第一關開始逐漸加大游戲的難度;

8、當游戲進入或者退出關卡時,切換界面的方式的選擇為切入;

9、當人物選擇路線的方向固定時,游戲自動控制人物走到方向選擇路口,優化游戲操作。

三、系統主要流程

如圖1。

四、系統主要模塊

主視圖初始化模塊:創建并添加游戲視圖,添加游戲關卡的選擇視圖,通關關卡視圖,返回界面選擇視圖。

迷宮初始化模塊:清空人物相應位置的信息,將地圖上面的人物位置移動到初始化位置。

迷宮關卡選擇模塊;選擇游戲的關卡,一共40關迷宮,玩家可以自由選擇迷宮的關卡,突顯游戲的高度自由。

游戲介紹模塊:游戲開始時,玩家可以通過游戲簡介加快對游戲的了解,以便玩家可以盡快的上手游戲。

判斷游戲通過模塊:玩家通過自己的計算步驟,并且走入終點,該模塊通過判斷玩家控制的人物是否到達終點來決定是否通過關卡。

返回關卡選擇模塊:當玩家未通過此關卡時,玩家可以選擇返回,返回到游戲關卡選擇界面,重新選擇游戲其他關卡進行游戲。

五、算法總體概況

A*(A-Star)算法是一種靜態路網中求解最短路徑最有效的直接搜索方法。估價值與實際值越接近,估價函數取得就越好。例如對于幾何路網來說,可以取兩節點間歐幾理德距離(直線距離)做為估價值,即:f=g(n)+sqrt((dx-nx)*(dx-nx)+(dy-ny)*(dy-ny));這樣估價函數f在g值一定的情況下,會或多或少的受估價值h的制約,節點距目標點近,h值小,f值相對就小,能保證最短路的搜索向終點的方向進行。

通過使用A*算法實現將人物移動到指定的位置,如果路徑不存在,則無法移動。因為這里A*尋路算法是有個概念的,就是有個路徑最短的計算方法:f=g+h,簡單的講就是這個節點到達目的節點的距離f等于這個節點周圍的一個節點到達這個節點的距離g值再加上周圍節點到達目的節點的距離h值。

六、A*尋路算法分析

尋路的第一步是簡化成容易控制的搜索區域。怎么處理要根據游戲來決定了。例如,我們可以將搜索區域劃分成像素點,但是這樣的劃分粒度對于我們這款基于方塊的游戲來說太高了。作為代替,我們使用方塊(一個正方形)作為尋路算法的單元。其他的形狀類型也是可能的(比如三角形或者六邊形),但是正方形是最簡單并且最適合我們需求的。

像那樣去劃分,我們的搜索區域可以簡單的用一個地圖大小的二維數組去表示。所以如果是25*25方塊大小的地圖,我們的搜索區域將會是一個有625個正方形的數組。如果我們把地圖劃分成像素點,搜索區域就是一個有640,000個正方形的數組了(一個方塊是32*32像素)。我們將會給每個方塊一個G+H和值。G是從開始點A到當前方塊的移動量。所以從開始點A到相鄰小方塊的移動量為1,該值會隨著離開始點越來越遠而增大。H是從當前方塊到目標點(我們把它稱為點B,代表骨頭!)的移動量估算值。這個常被稱為探視,因為我們不確定移動量是多少-僅僅是一個估算值。

G是從開始點A到達當前方塊的移動量。為了計算出G的值,我們需要從它的前繼(上一個方塊)獲取,然后加1。所以,每個方塊的G值代表了從點A到該方塊所形成路徑的總移動量。

H值是從當前方塊到終點的移動量估算值(在本游戲中是指方塊的數目)。移動量估算值離真實值越接近,最終的路徑會更加精確。如果估算值停止作用,很可能生成出來的路徑不會是最短的(但是它可能是接近的)。為了讓它更簡單,我們將使用“曼哈頓距離方法”(也叫“曼哈頓長”或者“城市街區距離”),它只是計算出距離點B,剩下的水平和垂直的方塊數量,略去了障礙物或者不同陸地類型的數量。

七、算法關鍵代碼實現

方法會返回一個數組,里面包含了地圖周圍的四個節點對象。依次取出地圖四周的節點對象,因為是通過點擊地圖后地圖和人才移動的,但是需要檢查地圖四個方向上是否有人,移動的方向即人面向的方向,如果有則判斷哪個節點對象的位置是人物按鈕。

-(void)moveNext:(NSButtonNode*)nextNode currentNode:(NSButtonNode*)currentNode

UIButton*oneButton=currentNode.mapButton;UIButton*nextButton=nextNode.button;

第一行意思把當前節點NSButtonNode對象的屬性上層按鈕賦給一個按鈕引用對象。第二行把下一個NSButtonN-ode對象節點的屬性下層按鈕也賦給一個按鈕引用對象。來判斷這兩個按鈕是否是存在的。

假如當前節點的上層按鈕屬性值是存在的而且下一個節點的下層按鈕屬性值也是存在的,則可以進行兩個節點的按鈕屬性值交換的操作以實現按鈕移動的效果。下一個按鈕的 frame值賦值給當前節點對象的上層按鈕的frame屬性是為了使得將oneButton移動到nextButton的位置時使其位置和大小保持一致。nextButton的tag值也賦給oneB-utton是因為tag值標識了按鈕所在的位置,可以通過獲取按鈕的tag值來判斷按鈕的位置在第幾行第幾列,根據這個行列值就可以到NSButtonNode節點對象數組中獲取擁有這個按鈕的NSButtonNode對象,因為按鈕的位置發生變化了所以我們也要更新它的tag值使其與新位置保存一致。設置這個按鈕在當前父視圖上前置顯示。

將當前節點的當前狀態值復制另存是為了賦給下一個節點的當前狀態值屬性,因為這個狀態值標識了一個節點對象它所控制的位置給人看到的按鈕是何種類型的。地圖按鈕或者是人物按鈕移動位置后就不在當前節點上面了,所以要它的屬性mapButton賦值為空。由于當前節點對象的mapButton按鈕屬性值已為空,那么當前節點對象所控制位置顯示的按鈕是它的屬性button值,也就是就一層按鈕了,所以這個節點對象用來標識當前顯示的是何種類型的按鈕的屬性currentState值,要恢復成它之前的狀態值,而這個狀態值就保存在它的屬性lastState中。由于節點原來的狀態還原了,所以將屬性lastState值賦值為一開始初始化時的枚舉值NOSTATE。

把這個引用上一個節點的用于顯示在上層的按鈕對象賦給下一個節點的用于顯示的上層按鈕屬性。因為下一個節點對象所控制位置顯示的按鈕發生變化,所以要將它自己原來的狀態值保存在屬性lastState中,以便人物或者是地圖移走后,還能夠恢復成原來的狀態。因為這個節點對象所控制位置顯示在視圖上的按鈕發生了變化,所以它相應標識的屬性currentState也要設置成對應的屬性值。

第一個if是指,如果測試節點的周圍的這個節點對象已經在openAry數組中了,就判斷在這個測試節點的基礎上再前進一步到這個屬于周圍節點中的這個節點的g值是否比它原來算的g值是否要小,如果要小則表示原來要走的節點通過這個測試節點走過去g值更小,距離更加的短,由于已經在開發數組中的節點的g值發生了改變則需要建造堆,也就是對開放數組中的節點進行針對g值的重新排序,使得首節點是g值最小的節點

設置父節點的目的是為了在尋找的測試的節點就是目標節點后通過目標節點的父節點可以進行遞歸到開始的人的節點,這樣做的目的是為了將從人的位置通向目標節點的路徑,也就是順序排列的節點都找出來,在通過倒序后的路徑就可以走到目標節點位置的路徑了。

節點發生了變化,需要重新按照f值給openAry數組的節點對象進行最小二叉堆的排序如果這個周圍的節點對象不在openAry數組里面,就把它加入到openAry數組中,如果此時openAry數組中元素個數是三個或者是三個以上,則進行按照節點對象的屬性f值最小二叉堆的排序。也就是使得openAry數組中的首元素的f值是最小的,最小的f值節點對象優先作為最短路徑構成選擇。

八、結束語

游戲本身是一款可以在iPad運行的迷宮類闖關類小游戲,在游戲打開后直接進入游戲主界面,用戶這時可以兩個選項:進入進一步的關卡選擇或者看游戲簡介。當玩家選擇關卡時玩家進入選定關卡,繼而指揮角色從起點穿過層層障礙到達出口。玩家在這個過程也可以進行游戲的退出,進而可以選擇新的關卡,開始新一輪的游戲。

本文在詳細論述了基于Cocos2d的迷宮類闖關類小游戲,介紹了系統的主要模塊和算法分析以及算法關鍵代碼實現,最后對該游戲平臺進行了試運行。此系統具有一定的實用性和應用前景。

[1][美]Rob Napier.Mugunth Kumar,庫 瑪.iOS編程實戰[M].人民郵電出版社,2014.

[2][美]赫樂嘎斯,康威.iOS編程(第4版)[M].華中科技大學出版社,2015.

[3]劉劍卓.Cocos2D-X游戲開發技術精解[M].人民郵電出版社,2013.

李愛軍(1973~),男,碩士,講師,研究方向為面向程序對象設計、數據庫技術、IOS開發技術。

Design and Implementation of Maze Game Based on Cocos2d

Li Aijun
(Computers Engineering Institute,Suzhou Vocational UniversitySuzhou215004)

The game with Xcode development,and based on Cocos2d,the process of developing the use of process control,menu,special effects,elves and other technology development.Apple game development model that seems to be closed,but on the other hand is greatly aroused the interest of developers.The design of the original intention of this game is to solve peoplesent in the boring time,exercise the brain,so as to let the game player to find the joy of the game of the.

MazeMobile phone gameCocos2d-X

TP311

A

160607-7303

猜你喜歡
按鈕游戲
這些按鈕能隨便按嗎?
哪個是門鈴真正的按鈕
當你面前有個按鈕
死循環
游戲
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
第八章 直接逃出游戲
小學科學(2015年6期)2015-07-01 14:30:14
主站蜘蛛池模板: 国产主播在线一区| 91av成人日本不卡三区| 亚洲精品第一页不卡| 精品撒尿视频一区二区三区| 免费a级毛片18以上观看精品| 67194在线午夜亚洲| 精品一区二区久久久久网站| 欧洲亚洲欧美国产日本高清| 国产视频大全| 美女扒开下面流白浆在线试听 | 精品欧美视频| 国产精品网曝门免费视频| 18禁影院亚洲专区| 久久亚洲高清国产| 一级一级一片免费| 亚洲欧美成人在线视频| 天堂av高清一区二区三区| 免费Aⅴ片在线观看蜜芽Tⅴ| 激情爆乳一区二区| 免费Aⅴ片在线观看蜜芽Tⅴ| 国产91av在线| 国产成人欧美| 嫩草国产在线| 久久伊人久久亚洲综合| 久久精品中文字幕少妇| 午夜欧美在线| 国产青榴视频| 五月天香蕉视频国产亚| 欧美在线伊人| 大陆国产精品视频| 好紧太爽了视频免费无码| 超清无码一区二区三区| 国产在线小视频| 又黄又湿又爽的视频| 欧美在线黄| 日本91视频| 中文字幕啪啪| 欧美在线一级片| 美女一区二区在线观看| 黄色三级毛片网站| 四虎免费视频网站| 国产网站免费看| 日韩av手机在线| 精品久久香蕉国产线看观看gif| 免费在线看黄网址| 久久精品国产国语对白| 国产乱子伦一区二区=| 中文成人无码国产亚洲| 国产高清免费午夜在线视频| 中文字幕色在线| 日韩免费毛片| 国产在线欧美| 97在线观看视频免费| 2019年国产精品自拍不卡| 免费看av在线网站网址| 一本色道久久88| 欧美国产在线看| 天堂岛国av无码免费无禁网站| 精品国产欧美精品v| 噜噜噜综合亚洲| 美女扒开下面流白浆在线试听| 午夜国产不卡在线观看视频| 99精品视频九九精品| 欧美日韩午夜| 亚洲综合国产一区二区三区| 国产原创演绎剧情有字幕的| 国产高清在线观看| 亚洲伊人天堂| 国内精品视频在线| 国产男人的天堂| 国产精品视频3p| 亚洲妓女综合网995久久| 在线观看精品自拍视频| 婷婷综合在线观看丁香| 亚洲天堂网2014| 亚洲日韩精品无码专区97| 色婷婷亚洲十月十月色天| 国产精品无码一二三视频| www.国产福利| a亚洲天堂| 蜜桃视频一区| 亚洲一区波多野结衣二区三区|