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