国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MTK的連連看游戲的開發(fā)與實現(xiàn)

2012-07-06 13:32:44匡皓璐易葉青
關(guān)鍵詞:手機游戲界面設(shè)計圖標

匡皓璐,易葉青

(湖南人文科技學(xué)院計算機科學(xué)技術(shù)系,湖南婁底417000)

由于手機擁有龐大的潛在用戶群體以及便攜性、網(wǎng)絡(luò)化等特點,手機游戲的出現(xiàn)就是一個必然的結(jié)果[1-2]。手機游戲發(fā)展到今天,無論是在種類和內(nèi)容都有著飛速的發(fā)展,現(xiàn)有的手機游戲大體可分為模擬類、戰(zhàn)略類、動作類和益智類等,各類游戲的市場份額如圖1所示。連連看游戲起源于《四川麻將》和《中國龍》,游戲的主要內(nèi)容是從給出的一堆圖像中尋找相同圖像進項簡單的配對[3]。連連看游戲在PC上實現(xiàn)后,立即吸引了眾多玩家,并迅速傳遍了世界各地[1—4]。

圖1 各類手機游戲的市場份額

由于連連看游戲規(guī)則簡單,只要將相同的兩個圖標用三根以內(nèi)(包括三根)的直線連在一起就可以消除,游戲速度節(jié)奏快,畫面可以根據(jù)不同類型用戶的需要而設(shè)計,清晰可愛,因此比較適合細心、反應(yīng)敏捷的玩家[5]。多樣式多變化的地圖,使玩家在各個游戲水平都可以找到挑戰(zhàn)的目標,長期保持游戲的新鮮感。連連看游戲也吸引了眾多程序員開發(fā)出多種版本。隨著移動通信的飛速發(fā)展,各種大屏幕觸摸手機的推出,使得在手機上玩連連看這一類的游戲成為可能,如果在手機上能成功地開發(fā)出連連看游戲則必然會受到用戶的青睞。然而不幸的是這種針對傳統(tǒng)PC機的連連看游戲很難直接移植到MTK手機平臺上,這是因為[1-2]:(1)手機的內(nèi)存容量和處理速度還遠達不到PC機的水平;(2)手機大都采用電池供電其能量受限。

為此,筆者對已有針對PC機的連連看游戲的核心算法和代碼質(zhì)量進行了優(yōu)化,并在MTK手機平臺上成功實現(xiàn)了一款連連看游戲軟件。

二 連連看游戲軟件的總體設(shè)計

連連看游戲應(yīng)具有基本功能:圖像處理、聲音處理和事件處理。這些功能均需要在MTK手機上運行(如圖2)。

Windows XP系統(tǒng)下提供的開發(fā)環(huán)境包括MRE SDK和Microsoft Visual Studio 2008,采用C語言實現(xiàn)圖像處理,聲音處理,調(diào)用MTK底層借口實現(xiàn)事件處理等基本功能。實現(xiàn)完成后,在載入MTK手機硬件運行之前,可以在Windows環(huán)境進行模擬調(diào)試工作。MTK平臺提供的MRE SDK模擬器可以使開發(fā)人員省去了在真實手機設(shè)備中的測試麻煩,從而提高了應(yīng)用程序的開發(fā)效率。

圖2 連連看游戲的總體方案

關(guān)于圖像處理的問題,MTK提供了mimoResourceDrawPairImage和mimoDrawImg FromBuf接口,它們可以實現(xiàn)各種不同格式的圖形的繪制。

關(guān)于聲音的處理,MTK提供了 mimoAudio-SetVolume接口,由于不同的手機使用的聲音播放軟件不同,所以支持的聲音格式也不相同。聲音格式有 WMV、MP3、MIDI等,手機支持的聲音格式,可以根據(jù)手機型號不同去查閱文檔。

事件處理是通過MTK應(yīng)用程序中注冊的事件處理函數(shù)來處理的。

三 連連看游戲軟件的界面設(shè)計

(一)Logo界面設(shè)計

Logo界面是應(yīng)用程序啟動后顯示的第一個界面,目的是展示開發(fā)游戲的公司和增加游戲的炫彩效果。在界面中,應(yīng)用程序在屏幕中間位置繪制了動態(tài)圖像,并繪制了動態(tài)的進度加載效果,同時提示用戶在游戲過程中可能出現(xiàn)的收費問題。

(二)主菜單界面設(shè)計

Logo界面演示完了之后程序自動進入主菜單界面。設(shè)計菜單界面的目的是為了對即將運行的游戲做些相關(guān)設(shè)置,從而產(chǎn)生不同的游戲效果,同時菜單也提供了一些與游戲有關(guān)的信息介紹,幫助新老玩家更快的熟悉該游戲。

根據(jù)功能需求,菜單主界面包括:開始游戲、聲音設(shè)置、美女圖庫(游戲過關(guān)的獎勵,第一次進入游戲未過關(guān)之前不能選擇)、幫助菜單、以及退出應(yīng)用游戲。每個菜單項都對應(yīng)了一個屬于自己的功能界面。只要事件觸發(fā),就會切換到相應(yīng)界面。游戲主菜單界面的層次結(jié)構(gòu)(如圖3)。

開始游戲:直接進入游戲界面(如圖4),游戲正式開始,游戲界面的設(shè)計及事件處理在后面小結(jié)介紹。

聲音設(shè)置:設(shè)置游戲音樂的音量大小。程序中設(shè)置5個等級,調(diào)用KDE底層的接口函數(shù)mimoAudioSetVolume(MIMO_AUDIO_VOLUME_LEVEL level)來實現(xiàn),參數(shù)level代表音量的大小,取值范圍在0-5之間,其中0表示靜音,5表示最大音量。主要事件:觸屏點擊調(diào)節(jié)音量大小,觸屏點擊返回主菜單。

圖3 主菜單界面

圖4 游戲的游戲界面

美女圖庫:進入美女圖庫查看過關(guān)獎勵,每過一關(guān)解鎖一張美女圖片,共15張,全部解鎖就通關(guān)。第一次進入游戲未過關(guān)之前不能選擇,圖標呈灰色狀態(tài)。主要事件:觸屏點擊前后翻看美女圖片,觸屏點擊返回主菜單。

幫助菜單:圖片顯示幫助信息,顯示游戲規(guī)則,怎樣消除圖片,只處理一個事件,返回主菜單。

退出菜單:關(guān)閉應(yīng)用程序。

(三)游戲界面設(shè)計

根據(jù)連連看游戲的特點和對用戶需求的分析,游戲界面設(shè)計為全屏模式,包括屏幕下方的時間進度條和工具,屏幕中央的游戲區(qū)域,以及屏幕下方的返回區(qū)域(即暫停),如圖4所示的布局去設(shè)計。

游戲界面的主要功能包括時間控制,布局算法,連通算法,繪制屏幕,消除效果動畫,將在以下各小結(jié)進行描述(如圖5)。

用戶的每一次有效操作都會觸發(fā)一個事件,程序?qū)⒄{(diào)用相應(yīng)的事件處理機制,如連通算法。程序每隔一段時間進行一次刷屏。它將根據(jù)當前剩余時間和處理事件時改變了的地圖參數(shù)信息,重新繪制屏幕。

圖5 連連看游戲界面功能

用戶的事件操作包括觸屏點擊選中圖片。如果當前選中的是第一個圖形,則不做任何操作,只將該圖形變灰處理,改變結(jié)構(gòu)curPic中的參數(shù)。如果選中的是第二個圖表,先判斷選中的是否是相同的圖片,如果是的,就需要進行連通判斷,即調(diào)用連通算法mmHavePath。連通的算法的實現(xiàn)后面部分詳細介紹。

四 核心算法的優(yōu)化

(一)連通算法的優(yōu)化

在本文的游戲系統(tǒng)中,對已有連連看的連通算法[6-7]進行了優(yōu)化,減少運算,優(yōu)化了執(zhí)行效率,分為以下兩種情況討論:

1.直線連通:兩個圖片的縱坐標或橫坐標相等,且兩者連線間沒有其他圖片阻隔。實現(xiàn)代碼:

if(c1.x==c2.x&& absolute(c1.y -c2.y)= =1||c1.y= =c2.y && absolute(c1.x -c2.x)==1)

return mimoTrue;

2.不相鄰的兩個圖片,分為水平方向和垂直方向:如圖6和圖7,為了找出A,B兩點之間的連接路徑,首先過這兩點作4條線段,線段的兩端便是地圖邊緣,兩條與橫坐標軸平行,另兩條與縱坐標軸平行,先考慮與橫坐標軸平行的兩條。

在兩條線段上各取一點C和D,此兩點處在一條與縱坐標軸平行的直線上,那么,ACDB這條路徑便是一條可能的A,B兩點的連通路徑。

C,D兩點在兩條線段上移動,直到找出一條有效的連通路徑,或者最終得出結(jié)論不存在這樣的路徑。

按同樣的方式在與縱坐標軸平行的兩條線段上查找。

圖6 水平方向

圖7 水平方向

兩點的連通路徑應(yīng)該是最短的,所以,查找從A,B所處的矩形的中線開始,同時從上下左右4個方面查找,可以找到看起來最短的連通路徑.

根據(jù)以上說明,可以看出,本游戲系統(tǒng)在連通算法上面相較于外面的連連看游戲連通算法思路更為清晰,也節(jié)約了運行時間(如圖8)。

圖8 為連通算法流程圖

(二)游戲地圖布局算法

由于連連看游戲的配對特性,在設(shè)計游戲地圖時,一定要保證地圖上生產(chǎn)的小方塊是成對出現(xiàn)的[8]。如10*10的地圖表示地圖每行和每列均含10個地圖塊。每個地圖塊是隨機給予賦值的,而這些值都來自圖像資源編輯時對應(yīng)的ID號,所以保證了載入的圖像也是隨機的。市面上已經(jīng)發(fā)布的連連看游戲一般都是采用生成隨機地圖,將成對的圖案放進臨時地圖存儲空間中,然后從臨時地圖中取走一個圖案放到空塊上:隨機挑選位置,int nIndex=(int(rand()*0.1+rand()*0.01+rand()))%tmpMap.GetSize();,再將選定的團放到空快上,最后在臨時地圖上刪除該方塊。如果采用這種方法,增加了內(nèi)存的消耗,而手機因為自身的原因受到內(nèi)存的限制,所以我對地圖布局的算法進行了優(yōu)化。為了盡可能保證各種圖像出現(xiàn)機會的均等性,需調(diào)用mimoGetRandom函數(shù)獲取隨機數(shù)。首先,將所有地圖塊分兩部分賦值。第一部分地圖是為地圖的前面一半隨機賦值,而產(chǎn)生地圖種類需要調(diào)用mimoGetRandom隨機產(chǎn)生在18—24(一共有24種不同的地圖圖片)之間的一個數(shù)。第二部分是在第一部分完成之后,將第一部分的地圖拷貝到整張地圖的后半部分,這樣就滿足了所有的地圖都是成對出現(xiàn)的。最后將整張地圖上面的小方塊隨機排列。

(三)全地圖搜索算法

圖9 兩次連通配對之間的相關(guān)操作流程

連連看游戲在每做一次連通配對之后,都有相應(yīng)的后續(xù)操作,目的是為下次連通配對做準備。首先判斷游戲地圖上是否還有未消掉的圖標對,即判斷是否過關(guān)。然后需要對剩余的地圖進行搜索,有無可連通圖標對。若有,直接準備下一對圖標的連通,若沒有,則調(diào)用重列函數(shù)(mmDrawMap_Again),對地圖上尚未配對的剩余圖標重新布局,直到有可連通圖標對為止。游戲在連續(xù)兩次連通配對之間的相關(guān)操作流程圖(如圖9)。

全地圖搜索可配對圖標算法的實質(zhì)是對每個地圖塊進行遍歷,相互之間兩兩比較,圖標值相等的話,則調(diào)用連通算法,直至找到第一對可連通的圖標,搜索提前結(jié)束,對應(yīng)流程圖中返回true。如果都相互比較了一遍,搜索已經(jīng)結(jié)束——仍無可連通圖標,則返回false,此時,若要想游戲繼續(xù)進行,必須調(diào)用重列機制,對地圖上的剩余圖標進行重新布局。

至此,我們在MTK平臺上成功完成了連連看游戲的開發(fā)工作,游戲在手機模擬器上運轉(zhuǎn)順暢,也在真機上運行順暢,可以滿足用戶要求。

[1]KENNETH A R.Pointers on C[M].北京:人民郵電出版社,2008.

[2]石民勇,稅琳琳,等.手機游戲設(shè)計與制作教程[M].北京:中國傳媒大學(xué)大學(xué)出版社,2007.

[3]羅偉堅.Visual C++經(jīng)典游戲程序設(shè)計[M].北京:人民郵電出版社,2006.

[4]手機游戲未來發(fā)展趨勢預(yù)測[EB/OL].http://wenku.baidu. com/view/0e563f335a8102d276a22f35. html,2012.1.

[5]陳凱.三維游戲引擎的設(shè)計與實現(xiàn)[D].浙江:浙江大學(xué),2007(6).

[6]楊科選.人工智能尋路算法及其在游戲中的應(yīng)用研究[D].長沙:中南大學(xué),2009.

[7]張亮亮,夏正友.基于遺傳算法求解游戲關(guān)卡問題[J].信息通信,2009,3(1):32 -36.

[8]威爾斯.J2ME游戲編程[M].北京:清華大學(xué)出版社,2005.

猜你喜歡
手機游戲界面設(shè)計圖標
《京燕兒》APP界面設(shè)計
大眾文藝(2023年22期)2023-12-10 04:27:18
中醫(yī)養(yǎng)生APP界面設(shè)計
大眾文藝(2022年19期)2022-10-19 08:18:18
“共享員工”平臺界面設(shè)計
包裝工程(2022年14期)2022-07-28 07:07:00
面向智能手機的UI界面設(shè)計
Android手機上那些好看的第三方圖標包
Android手機上那些好看的第三方圖標包
讓手機游戲成為傳統(tǒng)文化的傳播新渠道
傳媒評論(2018年3期)2018-06-21 08:16:28
手機游戲?qū)Υ髮W(xué)生的負面影響及對策分析
中國風圖標設(shè)計
電影評介(2016年24期)2017-01-04 05:41:44
在干什么
怀化市| 云梦县| 高碑店市| 通城县| 黎平县| 深泽县| 辛集市| 南涧| 兴仁县| 江门市| 舟山市| 桂平市| 绥棱县| 弥勒县| 慈溪市| 宁国市| 浏阳市| 永平县| 威信县| 弥勒县| 泸水县| 遵化市| 武宁县| 顺昌县| 专栏| 惠水县| 莲花县| 承德县| 富川| 无极县| 新化县| 忻州市| 精河县| 泸定县| 左权县| 商城县| 特克斯县| 无棣县| 新和县| 彩票| 突泉县|