摘 要:本文介紹了基于Android平臺所開發的一種賽馬游戲軟件,包括其組成和實現方法,該游戲軟件具有受眾面大、趣味性強、操作簡單的優點,適用于單人及多人娛樂,有較大的娛樂價值。
關鍵詞:android;賽馬游戲;SurfaceView
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1674-7712 (2013) 14-0000-01
隨著智能手機的發展,硬件性能不斷提高,人們使用手機進行娛樂的需求越來越大,而休閑娛樂的功能則占據更大的比重,賽馬游戲是歷史最悠久的運動之一。自古至今形式變化甚多,但基本原則都是競賽速度。
本游戲基于eclipse + adt + Android sdk 4.2.2的研發平臺設計實現的。采用觸控屏幕的方式進行游戲,點擊開始游戲開始賽馬,跳轉到競猜序號界面,選擇序號后開始賽馬,賽馬結束,輸出冠軍馬匹,判斷競猜結果是否正確,連續賽馬十次,統計十次的結果,將用戶名和贏的次數存入數據庫,點擊排行榜,可以降序顯示出贏的次數的用戶名。
賽馬作為受眾面較大、趣味性較強的一類,非常適合朋友在聚會的時候玩,可以按每個人所押注賽馬的不同名次來決定誰表演節目。具有一定的娛樂價值。
一、游戲設計及框架
Horserace游戲主要包括分為三大功能模塊:系統設置管理模塊包括聲音設置、震動設置、是否橫屏布局管理等 ;游戲控制模塊包括選擇難度即馬匹數量、開始游戲競猜、排名榜等;系統幫助包括游戲說明及初始系統導航等。該游戲的整個結構如圖1所示:
二、游戲系統架構
結合Android的應用的開發特點和三層C/S架構中成熟的架構模式,本游戲系統架構分為五層:數據層、數據訪問層、業務對象層、業務邏輯層,UI表示層。
(一)數據層
此層用于存儲系統所用的各種信息。存儲方式分為二種:SQLite3 數據庫存儲和文件xml的形式進行存儲。
(二)數據訪問層
此層的主要功能是負責數據的訪問工作,不僅要實現對SQLite3數據庫表的操作,還要實現以文件的I/O操作以及XML文件的讀寫操作。為此本層主要包括以下三個部分:DBHelper用于SQLite3訪問;SharedPreferences用于讀寫XML文件;JAVA IO文件操作相關類。
(三)業務對象層
此層對真實世界中某些物體在軟件開發中的一種簡單抽象。例如 :本游戲最為主要是馬匹對象等。這一層的主要工作是實現對象關系映射(Object/Relation Mapping,ORM),即將數據訪問層獲取的數據集信息映射到與游戲關系的某些業務對象中。
(四)業務邏輯層
此層是對業務對象層為基礎,結果不同的業務需求,針對相應的業務對象,制定業務規則、業務流程,業務邏輯層在體系架構中的位置十分關鍵,起到承上啟下的作用。
(五)UI表示層
此層是與用戶直接交互部分。為達到方便用戶的使用,操作簡潔的目的,本系統以一些Android提供的控件為基類,進行了擴展。例如:MySurfaceView控件是繼承自Android的SurfaceView控件,DrawThread控件繼承于Thread,并自定義布局中設置登錄、競猜、排名榜等布局。
三、游戲實現
本游戲設計有5個主界面,分別是登錄、系統設置、競猜、賽馬、排行榜顯示。
最關鍵的賽馬的界面設置,本游戲創建了MySurfaceView類來完成賽馬背景和馬匹動態的繪制。
游戲為支持多種尺寸的屏幕,本游戲中所用的圖片(馬匹跑道圖片、馬匹圖片)都兼容不同尺寸的屏幕,根據比例將圖片進行等比縮放。
競猜界面:用戶登陸后,每位用戶有10次競猜機會,初次登陸顯示有10次機會并直接在editText中輸入馬匹編號開始競猜,進入到賽馬界面,如圖2。
最主要的賽馬界面:本游戲界面根據系統設置難度設置不同馬匹數量進行比賽,每匹馬采用兩幀交替顯示,背景采用綠色草坪圖案,每匹馬的速度每一秒都采用隨機數獲得,如圖3,某一匹馬到達終點后整個賽馬界面退出,回到競猜界面同時會顯示哪匹馬最先到達終點。到達的馬匹編號和用戶競猜的馬匹編號比對,如果猜對就將count++,之后再次輸入馬匹編號進行下一輪競猜,10次之后累計猜對結果并保存在數據庫中。
db.execSQL(\"create table user(Sno Integer ,name String,winCountint)\");//建表
ContentValues values = newContentValues();
values.put(\"name\",Login_Activity.useName);//添加鍵值對
values.put(\"winCount\",Guess_Activity.winCount);
db.insert(\"user\", 1, values);//插入數據到user表中
背景音樂設置:通過用戶輸入馬匹獲得編號,設置多種背景音樂,根據所得馬匹編號選擇播放哪種音樂,增加賽馬樂趣。
排名榜界面:通過listview控件完成排名榜設置,使用SimpleAdapter類完成排名榜布局,并降序排列。
DatabaseHelperdbHelper = newDatabaseHelper(ScoreList.this,\"Horse_db\");
SQLiteDatabasedb = dbHelper.getReadableDatabase();
Cursor cursor = db.query(\"user\", new String[]{\"winCount\",\"name\"}, 1,1,1, 1, \"winCount desc\",\"10\");
while(cursor.moveToNext())
{
String name = cursor.getString(cursor.getColumnIndex(\"name\"));
intwinCounts = cursor.getInt(cursor.getColumnIndex(\"winCount\"));
}
四、結論
基于Android系統平臺的賽馬游戲通過對UI及數據庫等多方面的設置,完成了手機終端游戲的設計與開發,該游戲簡單易學,運行穩定,節省資源,便于單人或多人娛樂,有一定的娛樂價值。
參考文獻:
[1]李華明.Android游戲編程之從零開始[M].北京:清華大學出版社,2011:118-119.
[2]吳亞峰,蘇亞光.Android游戲開發大全[M].北京:人民郵電出版社,2012:325-371.
[3]趙宏偉.Android NDK開發環境實現與應用[J].電腦知識與技術,2010,6(35):10055-10060.
[4]埃史爾,陳昊鵬.Java編程思想[M].機械工業出版社,2007:200-213.
[5]宋瑾鈺,俞成海,孫樹森.基于項目引導——任務驅動的Java手機游戲開發教學模式研究[J].中國校外教育,2012(3).