張小琴,王露露
?
基于Android平臺的打地鼠游戲設計與實現
張小琴,王露露
(南京航空航天大學金城學院 信息工程學院,江蘇 南京 210000)
隨著智能移動終端的普及,手機游戲逐漸成為游戲行業的主力軍,成為人們休閑娛樂、打發時間的利器。因為Android操作系統的開源性等特點,基于Android平臺的手機游戲占據了手游市場巨大的份額。為了突破大部分手游僅針對年輕用戶的局限,本文基于Android平臺設計了一款老少皆宜的打地鼠游戲。文中詳細敘述了打地鼠游戲頁面布局、UI組件設計、各組成模塊功能的實現過程。經測試,所設計的打地鼠游戲界面友好、功能齊全、操作方便。該游戲拓寬了游戲人群,不僅年輕人可以娛樂,小孩、老人也可以很方便地使用這款游戲平臺,且在娛樂休閑的同時可以鍛煉反應能力、手眼協調能力。
Android;手機游戲;打地鼠游戲;UI組件
手機游戲是指消費者利用智能移動終端隨時隨地都可以進行的游戲,手機游戲軟件在移動終端應用軟件中占有重要的地位[1]。隨著智能手機的普及,各種智能手機操作系統陸續而出,而市面上大部分移動終端都是基于Android操作系統的,因此基于Android平臺的手機游戲軟件擁有龐大的用戶人群[2,3]。
隨著手游市場的發展,亟需開發具有創新性的手游產品,此創新包含兩個方面:一是讓游戲老少皆宜,二是讓游戲能夠不斷延續[4,5]。從統計數據看目前手機游戲玩家中,18-24歲的年輕用戶占據了70%以上[6],因此開發一款老少皆宜的手游更具發展潛力。
打地鼠游戲是生活中常見的一款老少皆宜的休閑娛樂小游戲,玩法簡單,考驗反應能力,同時鍛煉手眼的協調能力。目前市面上除了傳統的機械款的打地鼠游戲設備,還有基于單片機、基于PLD、基于Authorware等開發的打地鼠游戲平臺[7,8,9]。這些游戲設備或者平臺能夠擁有打地鼠的游戲功能,但是不利于大規模傳播和擴展。
在手游發展迅速的背景下,結合Android移動終端的普遍性以及打地鼠游戲適用人群廣泛的特點,本文基于Android平臺開發了一款打地鼠游戲,該游戲模擬機械打地鼠游戲設備,在固定區域內隨機出現地鼠,用錘子打擊地鼠,擊中得分。該游戲平臺界面美觀、功能簡單、操作方便,非常適合小孩、老人等初步接觸手游的人群休閑娛樂。
Android是由Google公司推出的一種以Linux為基礎的開放源碼的操作系統,主要適用于移動設備中,例如手機、平板電腦等終端設備[10,11,12]。對于Android系統來說,最大的特點就是其開放的源碼。這一點使得更多的軟件供應商和開發商能分享共同利益,同時它和互聯網緊密相聯,這使得開發人員移植互聯網應用變得更加容易。
Android系統架構分為四層,包括:Linux核心層、系統運行庫層、應用程序架構層、應用程序 層[10,11,12]。Linux核心層實現安全性、內存管理、進程管理和驅動模型等功能;系統運行庫層提供各種程序庫給Android系統中不同的組件使用;應用程序架構層主要提供API接口供上層調用;應用程序層是面對用戶的,提供各種應用程序,如Email客戶端、日歷等。
開源的代碼、完整的架構,使得Android系統得到了飛速的發展和應用[13,14,15]。Android平臺是開放性的平臺。Android聯盟歡迎任何產商的加入。這可以讓Android擁有更多的開發者,從而帶動更多的消費者。
在進行程序設計之前首先要分析游戲需要達到的功能,該游戲主要功能為在規定區域內會隨機冒出地鼠,在規定時間內點擊地鼠,擊中計分。其它還需要包含規則說明、背景音樂播放與暫停、計分統計與顯示等功能。對功能進行模塊劃分,打地鼠游戲主要功能結構如圖1所示。
在進行程序設計的時候,根據功能模塊的劃分,結合Android平臺程序的設計過程與特點,整個設計分為以下幾個部分:頁面布局、UI組件設計;主頁面模塊設計;游戲說明頁面模塊設計;游戲背景音樂模塊設計;錘子模塊設計;地鼠隨機位置模塊設計;打中地鼠計分模塊設計;游戲結束頁面模塊設計等。

圖1 打地鼠游戲主要功能結構
在進行具體功能程序設計之前先進行頁面布局,首先在Android集成開發工具Android studio下創建一個新項目,將這個游戲項目中用到的背景、開始、退出、暫停、地鼠、錘子等圖片資源放到源文件目錄下后綴名為.ldpi的文件夾中[16,17,18,19,20]。文件目錄界面如圖2所示。

圖2 圖片資源文件目錄
Android Studio中的實時布局功能允許在無需將應用程序運行在設備中的前提下,直接預覽應用的用戶界面。Android studio中采用非常方便簡單的XML文件來進行頁面布局,在XML布局文件中定義布局管理器,然后按照設計需求以及設計風格安排背景圖片、操作按鈕、信息顯示模塊在整個界面中的位置等,這種方法可以將邏輯控制的Java代碼和布局界面分離開,這樣讓整個結構更加明了清晰。具體布局頁面如圖3所示,在Activity中顯示XML文件布局內容;在Preview面板中顯示布局預覽 圖[16,17,18,19,20]。
UI組件模塊設計是整個程序設計中非常重要的一部分,用戶通過UI組件進行人機交互。常見的UI組件有文本類組件、按鈕類組件、進度條組件、圖像類組件以及列表類組件等。本游戲設計中主要使用的是按鈕類組件,主要包括單選按鈕、復選按鈕、普通按鈕和圖片按鈕等。其中使用Button類表示普通按鈕,一般用于觸發一個指定事件;使用ImageButton類來表示觸發的一個指定事件,將用圖片表示這個按鈕;RadioButton類表示單選按鈕;CheckBox類來表示復選按鈕。按鈕類組件繼承關系如圖4所示。
在3.1節進行界面布局之后,游戲主界面上有三個按鈕,這三個按鈕為新游戲、游戲說明、以及退出按鈕,都設計為普通按鈕,具體代碼如下。

圖3 布局頁面

圖4 按鈕類組件繼承關系
@OnClick({R.id.btn_start, R.id.btn_help,R. id.btn_quit})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.btn_start:
//開始按鈕
startActivity(new Intent(this, GameActivity.class));
finish();
break;
case R.id.btn_help:
//幫助按鈕(游戲說明按鈕)
startActivity(new Intent(this, HelpActivity.class));
break;
case R.id.btn_quit:
//退出按鈕
quitGame();
break;
default:
break;
在科學施用有機肥的基礎上,農戶還應根據花生的生長特性以及種植地區的土壤性質進行其他肥料的配方使用。例如花生的根瘤菌可以起到固定氮素的作用,因此對于氮肥的使用應該適量減少,并增加磷鉀肥的施用。在此基礎上還需要對中微肥以及生物肥進行相應的補充,這樣才可以保證花生更好的生長。在普通花生地塊中,可以采用每畝施用尿素16kg、過磷酸鈣50kg以及硫酸鉀12kg的施肥量進行施肥。對于高產花生田可以將其中一半的化肥用量轉化成控釋肥,從而更好的保證花生生長的后期不會出現脫肥的現象。對于中微肥的使用應按照其使用說明嚴格進行,防治因為用量過大引起的出苗困難。
}
}
地鼠出現位置,這個模塊的設計,是整個游戲中非常重要的環節,是游戲開展的前提,地鼠的出現位置是隨機事件。首先創建一個二維數組來保存每個洞穴的位置坐標,然后創建一個線程對象來控制地鼠隨機出現的位置。
具體代碼如下:
private void initPostion() {
for (int i = 0; i < molePostionArr.length; i++) {
postionX = postionXArr[(molePostionArr.length - i) % 3];
postionY = postionYArr[i % 4];
molePostionArr[i][0] = postionX + 90;
molePostionArr[i][1] = postionY - 50;
ImageView burrowView = new ImageView(this);
burrowView.setImageDrawable(getDrawable(R.drawable.burrow));
burrowView.setX(postionX);
burrowView.setY(postionY);
burrowView.setZ(0.0f);
mGameLayout.addView(burrowView);
}
}
@Override
protected void onStart() {
super.onStart();
initVoice();
mMoleRunnable = new Runnable() {
@Override
public void run() {
mMessage = mHandler.obtainMessage(MOLE);
mMessage.arg1 = new Random().nextInt(8);
mHandler.sendMessage(mMessage);
mHandler.postDelayed(this, moleTime);
}
};
mHandler.post(mMoleRunnable);
}
擊中地鼠的個數計數計分是在布局管理器中通過添加ImageView組件,并為該組件添加觸摸監聽器,在重寫的onTouch()方法中,首先設置地鼠不顯示,然后成功打中地鼠后,將計數值加1,再通過消息提示框提示打中了幾個地鼠。代碼如下:
mMole.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mMole.setSelected(true);
mSoundPool.play(mSoundId, 1, 1, 0, 0, 1);
mHandler.sendEmptyMessage(HIT_COUNT);
return false;
}
});
}
@SuppressLint("ClickableViewAccessibility")
在本游戲設計中是通過創建觸摸監聽器,來監聽玩家錘子的地點。在每局游戲開始前要進行初始化錘子的操作,然后再重繪圖片來顯示當前玩家的錘子位置。具體代碼如下:
@SuppressLint("ClickableViewAccessibility")
private void initHammer() {
//初始化MoveView
mMoveView = new MoveView(this);
mMoveView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mMoveView.currentX = event.getX();
mMoveView.currentY = event.getY();
//重繪圖片
mMoveView.invalidate();
return false;
}
});
mMoveView.setZ(2.0f);
mGameLayout.addView(mMoveView);
}
在游戲設計中還有游戲說明模塊、背景音樂模塊、游戲結束模塊等。
在設計游戲說明界面時,需要將游戲規則和注意事項表達清楚,且需要在游戲說明界面添加一個返回按鈕,讓用戶可以返回游戲主界面。
背景音樂設計時,要考慮開始游戲時的音樂、暫停游戲時的音樂、打中老鼠時的特殊音效以及游戲過程中是否播放音樂等設計,這些功能需要對應不同的設置。游戲的背景音樂是循環播放的,暫停游戲時,背景音樂隨之暫停。
游戲結束頁面在一個游戲設計中是不可或缺的。本游戲的設計中,在時間倒計時返回“-1”時游戲結束,系統會給出提示框,顯示游戲結束,并且告訴玩家一共打中多少只地鼠。此時會給玩家兩個選項,“退出”和“返回主菜單”,玩家可以根據自己的情況去選擇。若玩家選擇退出游戲,系統會銷毀頁面并結束進程。
篇幅原因,此類模塊具體代碼省略。
點開打地鼠游戲的APP會出現一個歡樂打地鼠的游戲名稱的主界面。在游戲名稱的下方顯示這本游戲中最重要的幾個按鈕,分別是“新游戲”,“游戲說明”以及“退出”按鈕。游戲主界面如圖5所示。點擊新游戲會開啟新一輪打地鼠的游戲界面。點擊游戲說明會出現有關本游戲規則的詳細說明,瀏覽完畢可以點擊相應的返回按鈕回到主界面。如果此時不想玩游戲就可以直接點擊退出按鈕即可。

圖5 打地鼠游戲主界面
點擊新游戲之后就進入了打地鼠的游戲操作界面,游戲操作界面如圖6所示。在游戲界面的特定區域內隨機出現地鼠,用手點擊地鼠錘子就移動到地鼠對應地點進行擊打操作,對應頁面頂部的計分器會累計打擊地鼠的分數,擊中一次計一分。游戲過程中,除了顯示得分,還需要顯示游戲的剩余時間,這樣可以讓玩家一目了然的知道自己在本輪游戲中的情況,且在玩家連續打中20個地鼠時會增加游戲時間作為獎勵。
玩家在游戲的過程中,可以通過背景音樂來知道自己游戲的狀態。在游戲中本身會有背景音樂,在打中地鼠之后也會有不同于背景音樂的提示音。游戲中玩家也可以自己選擇是否需要背景音樂和游戲提示音樂。關閉和開啟音樂的按鈕為游戲頁面右上角的揚聲器按鈕。
游戲中存在玩家要暫停游戲的情況,游戲界面右上角有一個“開始/暫停”的按鈕,點擊這個按鈕時,可以達到開始或暫停游戲的目的。且當點擊這個按鈕暫停時,地鼠會隱藏起來,等再次點擊該按鈕繼續游戲時,地鼠會再次出現。

圖6 打地鼠游戲操作界面
游戲結束之后,會彈出一個提示框,該提示框會告訴玩家:游戲結束,您一共打了多少只地鼠。玩家可以選擇是“退出游戲”還是“返回主菜單”。這是的時間倒計時會顯示“-1s”。結束界面如圖7所示。

圖7 打地鼠游戲結束界面
隨著智能移動終端的發展,手機游戲越來越普及,為了突破大部分手游針對年輕玩家的局限,本文基于Android操作系統開發了一款老少皆宜的打地鼠游戲平臺。該游戲界面友好,操作簡單,功能齊全,是一款適用于各個年齡段的娛樂休閑類游戲。
該游戲平臺功能可以進一步完善,地洞中冒出的動物可以由單一的地鼠變為多種動物,對應擊中得分也做相應的調整,不同的動物得分不一樣,連續擊打獲得的獎勵機制不一樣,豐富游戲內容,使得游戲更具有趣味性。在后期,還可以借助流行的微信等第三方平臺進行綁定推廣,完善程序接口,達到無需獨立安裝APP,使用小程序等將單機手游推向網絡手游[3,4]。
[1] 唐儀, 許璐, 朱瑜. 手游行業的發展現狀及未來預期[J]. 納稅, 2018(18):153-154.
[2] 陳羽修.基于Android貪吃蛇游戲的設計與實現[J]. 科技視界, 2016(1): 220-221.
[3] 丁群, 姚振浩, 蔡松江, 陳巖相.手機游戲市場分析[J].信息技術, 2015(32): 80-81.
[4] 許璐. 手游, 移動戰爭的演練場[J]. 廣告大觀(綜合版), 2014(1): 41-43.
[5] 許紅敬. 手游市場高成長的背后亟需創新與專注[J]. 消費電子, 2014(3): 44-46.
[6] 寇漢. 我國目前手機游戲產業存在的問題研究[J]. 中國市場, 2017(29): 118-119.
[7] 覃麗姍, 李寧, 王恬灝.基于單片機的打地鼠游戲設計[J].山東工業技術, 2018(16): 130.
[8] 李倩.基于PLD的打地鼠游戲的設計與實現[J]. 中國現代教育裝備, 2015(7): 121-123.
[9] 毋玉芝, 段向東. 基于Authorware的打地鼠游戲設計[J]. 科技信息, 2008(4): 79-80.
[10] 蓋索林編. Google Android開發入門指南(第2版)[M]. 北京: 人民郵電出版社, 2009: 2-6.
[11] 李佐彬. Android開發入門與實戰體驗[M]. 北京: 機械工業出版社, 2011: 5-45.
[12] 李剛. 瘋狂Android講義(第3版)[M]. 北京: 電子工業出版社, 2017:1-29.
[13] 鄒光臨.Android與iOS對比分析即競爭優缺點[J]. 科技與創新, 2017(10): 65.
[14] 騰訊科技.Android在華市場份額增至78.8%, iOS份額萎縮[J]. 電子技術與軟件工程, 2016(14): 5.
[15] 趙益澤. 淺析安卓系統, iOS, Windows Phone系統的差異性[J]. 數字通信視界, 2017(11): 147-148.
[16] 歐陽燊. Android Studio開發實戰: 從零基礎到App上線[M]. 北京: 清華大學出版社, 2017: 23-299.
[17] 郭霖. 第一行代碼 Android 第2版[M]. 北京: 人民郵電出版社, 2016: 76-169.
[18] 王辰龍. 高級Android開發強化實戰[M]. 北京: 電子工業出版社, 2018: 1-107.
[19] 明日學院. Android開發從入門到精通[M]. 北京: 水利水電出版社, 2017: 45-160.
[20] 畢小朋. 精通Android Studio[M]. 北京: 清華大學出版社, 2017: 61-99.
The Design and Implementation of Whack-A-Mole Based on Android
ZHANG Xiao-qin, WANG Lu-lu
(Nanjing University of Aeronautics and Astronautics Jincheng College College of Information Engineering, Nanjing Jiangsu 210000)
With the popularity of intelligent mobile terminals, mobile games have become the main force in the game industry and an effective way for recreation. Because of open-source about Android operating system, mobile phone games based on Android platform occupy a huge share of the market. Because almost all the mobile games are designed for young users, in order to break the limitation, a Whack-A-Mole based on Android platform which can be played by all the people is designed. The layout of the game, the design of UI components, and the realization process of each module are described in details. The game is designed with a friendly interface and complete functions, and it can be operated conveniently. The age of the game users is widened, this mobile game is not only for young people to play, children and old people can also easily use this game platform. The response ability and hand eye coordination of users can be exercised when playing this game.
Android; Mobile games; Whack-A-Mole; UI components
TP311.52
A
10.3969/j.issn.1003-6970.2018.09.034
張小琴(1984-),女,碩士,南京航空航天大學金城學院,講師,研究方向:信號與信息處理;王露露(1994-),女,學士,南京航空航天大學金城學院,本科生,研究方向:信息工程。
本文著錄格式:張小琴,王露露. 基于Android平臺的打地鼠游戲設計與實現[J]. 軟件,2018,39(9):170-175