胡艷華+崔亞楠
摘要:基于iOS平臺的游戲日益受到青睞,本文開發(fā)了一款iOS平臺下的手機游戲軟件——益智拼圖。該游戲采用跨平臺引擎-cocos2d-x以及c++語言進行開發(fā)的,主要實現(xiàn)了拼圖游戲的切割圖片、滑動效果、游戲邏輯、物理效果等基本功能,且支持從手機照相或圖片庫獲取圖片進行切割,搖一搖更換圖片以及音效設置等特色功能。最后,通過對游戲進行安裝、調(diào)試,通過了性能測試,成功發(fā)布了游戲。
關(guān)鍵詞:拼圖游戲;iOS平臺;Cocos2d-x引擎
引言
隨著智能操作系統(tǒng)的日趨成熟和人們精神生活的不斷豐富,移動設備游戲日益受到歡迎。由于IOS系統(tǒng)的優(yōu)越性及操作的人性化,基于此平臺的游戲軟件更是受到追捧。拼圖游戲即是其中一款經(jīng)典的游戲,有著很大的用戶群。在iOS平臺下,用戶可以從App Store下載游戲并安裝后可直接使用,方便快捷。不僅可以用來消磨時間,更可以起到益智、鍛煉思維的作用。因此,基于iOS平臺的拼圖游戲有著巨大的市場潛力。
優(yōu)秀的游戲軟件設計,要求能做到一次代碼編寫,能在多系統(tǒng)運行。本文參考了一些基于iOS平臺的軟件開發(fā),最終確定采用跨平臺引擎-cocos2d-x,開發(fā)了一款基于IOS平臺的手機游戲軟件—益智拼圖。
1IoS系統(tǒng)和COCOS2d-x引擎簡介
1.1IOS系統(tǒng)簡介
iOS是由蘋果公司開發(fā)的手持設備操作系統(tǒng)。最初是為iPhone設計,后來陸續(xù)用到iPod touch、iPad以及Apple TV等蘋果產(chǎn)品上。iOS與蘋果的Mac OSx操作系統(tǒng)一樣,它也是以Darwin為基礎的,因此同樣屬于類Unix的商業(yè)操作系統(tǒng)。
iOS的系統(tǒng)結(jié)構(gòu)分為以下四個層次:核心操作系統(tǒng)(the Core OS layer),核心服務層(the CoreServices layer),媒體層(the Media layer),Cocoa觸摸框架層(the Cocoa Touch layer)。
1.2cocos2d-x游戲引擎簡介
Cocos2d-x是一個開源的移動2D游戲框架,MIT許可證下發(fā)布的。它使用c++開發(fā),同時支持多平臺的2D手機游戲引擎,是cocos2d-iPhone項目的版本。cocos2d-x發(fā)展的重點是圍繞cocos2d跨平臺。cocos2d-x項目可以很容易地建立和運行在iOS,Android,三星Bada,黑莓操作系統(tǒng)平臺上。cocos2d-x還支持Windows和Linux系統(tǒng),因此,我們可以調(diào)試的源代碼很容易寫在桌面操作系統(tǒng)上進行編輯。
2游戲策劃
在開發(fā)游戲前,必須有一個完整的游戲策劃,即對開發(fā)的游戲做一個簡單的描述。它包含游戲的開發(fā)背景,游戲的功能,游戲的風格,以及對游戲市場的調(diào)查。
2.1游戲策劃
通過對市場上一些拼圖游戲的試玩后,對拼圖游戲的功能有一定的了解。拼圖游戲的主要表現(xiàn)形式是將一張完整的圖片,切割成若干的小圖片,然后將小圖片的順序打亂。玩家可以拖動小圖片,若尋找的位置正確,小圖片的位置就會固定不能再拖動,否則小圖片就會自動掉落到界面底部。用戶在游戲的過程中可以自己選擇游戲的圖片。在游戲開始界面上設置開始游戲的按鈕,游戲的主場景固定,但游戲的圖片可以切換。
2.2游戲功能策劃
(1)無限關(guān)卡:游戲中每完成一張拼圖就會進入到一下關(guān)卡,難度漸漸增加。本游戲設置的關(guān)卡的公式(1):
其中n為整數(shù)。如第一關(guān)切割成9張小圖片,第二關(guān)切割成16張小圖片,第三關(guān)切割成25張小圖片,使得游戲設置的關(guān)卡難度依次加大。
(2)切割、隨機掉落圖片:用戶在進人主游戲后,先通過將圖片切割成多張小圖片;然后這些小圖片根據(jù)物理效果會隨機掉落到原圖的下方,用戶可以滑動圖片和選擇圖片進行拼圖操作。當用戶拖動下方小圖片到游戲區(qū)域,若此圖片位置正確,小圖片固定不能移動,否則,小圖片就會自動掉落到底部。
(3)更換圖片:本游戲支持攝像頭或圖片庫更換圖片,用戶可以通過打開手機的攝像頭或者圖片庫來獲取圖片進行切割成小圖片進行游戲。且用戶還可以搖一搖手機更換圖片,是本設計游戲的特色之一。
另外,游戲帶音效功能,游戲中有背景音樂、搖一搖和過關(guān)時的音效,且游戲中設計有計時功能。
3游戲詳細設計與實現(xiàn)
3.1切割圖片的設計與實現(xiàn)
該功能通過使用cocos2d-x中CCSprite類庫中create(const char*pszFileName,const CCRect&rect)函數(shù),它的功能是在一張圖片中從某一坐標點(x,y)取一張圖片,(height,width)表示被取圖片的高度和寬度,此圖片的高度和寬度是原大圖的高度和寬度整除切割圖片數(shù)的平方根得到,這樣就實現(xiàn)了把圖片切割成16張、25張、36張等。切割效果如圖1所示:(因文章篇幅受限,具體代碼實現(xiàn)不再給出)
3.2滑動效果的設計與實現(xiàn)
在處理滑動事件時,分三個函數(shù)實現(xiàn):(1)ccTouchesBegan()函數(shù)功能表示滑動開始。(2)ccTouchesMoved()函數(shù)功能是開始拖動圖片,函數(shù)中需設定哪些圖片可以滑動以及設定圖片滑動的范圍。(3)ccTouchesEnded()函數(shù)表示滑動結(jié)束,此函數(shù)實現(xiàn)在滑動結(jié)束之后將執(zhí)行哪些操作,如在拼圖游戲中,切割后圖片的滑動及將目標圖片移動到指定的位置?;瑒有Ч鐖D2所示。
3.3游戲邏輯的設計與實現(xiàn)
游戲原圖被分割后,用一個spriteArray放切割后的圖片信息,并對圖片設置Tag,通過移動小圖片與其原來的位置對比,如果位置差值在一定范圍內(nèi)并且Tag相等,圖片就會吸附固定。實現(xiàn)效果如圖3所示:
3.4物理效果的設計與實現(xiàn)
切割后的圖片從屏幕中間模擬物理效果掉落,當滑動的圖片掉落時也會有物理碰撞重力等效果,使用物理引擎Box2d,模擬一個重力的世界,重力向下,把屏幕的四面設置成墻壁;定義出剛體后,生成剛體,把小圖片作為皮膚依附在剛體上,而剛體因為受到重力的作用會自然掉落,皮膚會跟隨著其依附的剛體而移動。實現(xiàn)效果如圖4所示。
另外,本游戲中還實現(xiàn)了搖一搖設備更換游戲圖片,打開手機攝像頭或者圖片庫獲取圖片作為游戲圖片,設置無限關(guān)卡,游戲計時和音效等一些功能。
4游戲部署與測試
4.1游戲部署
本游戲開發(fā)為一個IOS項目,打開項目的文件夾,雙擊“拼圖游戲xcodeproj”文件就能在.xcode里打開項目,再點擊運行即可。
4.2游戲測試
游戲測試是游戲開發(fā)中很重要的一部分。本文主要依據(jù)軟件工程中的軟件測試方法,并結(jié)合一般游戲測試的方法進行測試。本文制定了一個完整的游戲測試方案,并建立相應的測試文檔,其文檔有利于修正游戲的bug,同時有利于改進游戲。
4.3BugList文檔
在游戲測試時,對于找到的bug需要記錄,并建立一個buglist的文檔保存,這樣可以避免漏掉游戲bug,以及防止重復測試相同的bug。bugList文檔如表1所示:
最后,經(jīng)過測試,沒有bug后,本拼圖游戲成功發(fā)布到App Store。
5結(jié)束語
本文設計的拼圖游戲有分割圖片,滑動圖片,物理效果和搖一搖更換圖片等一些功能。通過游戲策劃與開發(fā)方案的編寫,對游戲開發(fā)的具體流程有了更深的了解;對于開發(fā)的每個部分都使用文檔記錄,這樣既規(guī)范了整個開發(fā)過程,也使游戲的開發(fā)有據(jù)可查,并且還可以提高游戲開發(fā)的效率,縮短開發(fā)周期。另外,游戲中的畫面美感不足,并沒有經(jīng)過專業(yè)的處理,是下一步游戲改進的地方。