陜西師范大學 潘瑞娟
基于Android的植物大戰蟲子APP的設計
陜西師范大學 潘瑞娟
文章介紹了基于Android的植物大戰蟲子APP的設計與實現,闡述了需求分析、概要設計、詳細設計三個部分的內容。使用Eclipse和Android SDK平臺進行開發,采用SurfaceView游戲框架和雙緩存技術,從內存中獲取圖像數據,消除由于復雜繪圖造成的圖像閃爍問題。經系統測試,實現了游戲在Android手機上的運行,具備一定的可玩性。
Android;APP;手機;Java
隨著經濟技術的發展,游戲更新速度更是以秒計算。大多數手機、平板等各種移動終端的系統都是Android。如今的手機游戲再也不是上個世紀八九十年的“推箱子”、“貪吃蛇”等規則簡單,思路簡單的游戲,它是發展到了可與掌上游戲機相提并論的手機游戲,具有娛樂性和便捷性。
Eclipse是自由集成開發環境,簡稱IDE。最初主要通過Java語言來開發的,通過安裝不同的插件,Eclipse可以支持不同的計算機語言,比如C++和C#等開發工具。相對固定的IDE軟件而言,具有很強的靈活性。隨著平臺功能的不斷強大,許多軟件開發商使用Eclipse框架開發自己的IDE。
Android SDK即Android Software Development Kit,是一個被軟件開發工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統等建立應用軟件的開發工具的集合。
本游戲分為兩個主要部分:主頁面、游戲界面兩大模塊,游戲框架如圖1所示。

圖1 游戲框架
2.2.1 游戲背景分析
在我們的日常生活中,人類在不斷的破壞大自然,植物的破壞讓一些植物和生物都無法生存。在這競爭激烈的場面中引起了蟲子和人類的大戰,為了爭奪生存空間,蟲子一有機會就向人類的生存的空間發起攻擊。人類就會撿起更多的種子來生成更多的植物,抵抗蟲子的進攻。通過種子生長為植物,來攻擊破壞人類家園的蟲子。
2.2.2 游戲思路分析
(1)蟲子是進攻方,人類通過種植培育出種子,防御型植物來抵抗蟲子的進攻,攻擊型植物來攻擊蟲子的前進。想要植物成長來攻擊,防御蟲子,需要人類不斷的撿起種子,生成植物。
(2)每個等級都有相應的蟲子數量,全部消滅之后升級。如果有蟲子穿過交戰區域到達后方,則游戲失敗。
游戲設計流程圖如圖2所示。

圖2 游戲設計流程圖
3.1.1 植物作戰單位設計
(1)南瓜。消耗種子值8,能夠生產子彈,攻擊力為2。
(2)西紅柿。消耗種子值4,能夠產生子彈,攻擊力為1。
(3)土豆。消耗種子值2,可以抵擋蟲子10s,為其他攻擊植物爭取時間。
(4)西瓜。消耗種子值為10,能夠產生子彈,攻擊力為3。
3.1.2 碰撞設計
在設計碰撞時,蟲子從手機橫屏右方向左方移動,當蟲子產生后,如果該條路線種植了攻擊性植物,就開始發射子彈。子彈,植物與蟲子碰撞大小區域即為圖片大小區域,當兩者發生接觸后即發生碰撞。子彈與蟲子碰撞后立即消失,蟲子生命值就會相應減少,子彈超過手機屏幕右邊界后消失。
3.2.1 選擇功能
選擇功能相當于植物大戰蟲子游戲的主菜單,在這個模式下,玩家可以根據自己的習慣選擇開始游戲或繼續游戲,以及點擊MORE GAME按鈕進入其他游戲下載頁面。之后根據玩家在不同位置的觸屏事件啟用相關的功能模塊,在玩家點擊設備的返回鍵時出現“Exit”按鈕,點擊則退出游戲。
3.2.2 游戲設置
游戲設置功能中有音效設置、震動設置和退出。音效包括點擊按鈕音效,點擊植物音效,安放植物音效,射擊蟲子音效,收集種子音效,還有升級音效。在設置中可以設置音效和震動的關閉、開啟。不同的動作音效不同,給人以愉悅的體驗,讓玩家能更享受游戲帶來的樂趣。
3.2.3 植物安放
植物安放功能中,植物包括西紅柿、土豆、南瓜和西瓜等。蟲子類包括小黑蟲、白頭黑蟲、七星瓢蟲、毛毛蟲、蝸牛等。在游戲過程中,玩家可以根據所需的種子數量自由安放植物,還可以通過種植種子培養袋培養種子,這樣就更有利于同各種蟲子作戰。
通常,軟件的界面是指軟件和用戶交流的外觀、按鈕和程序等等。為了使游戲在界面上達到耳目一新的感覺,結合了圖形和界面設計的有關原理來對界面進行美化、規范化的設計。
4.1.1 結構設計
根據對軟件框架的分析,認為游戲應該有以下界面:游戲主菜單、游戲設置界面、結束界面、游戲界面等。
打開軟件顯示到游戲主菜單、點擊“PLAY”按鈕后界面轉到游戲界面,點擊“CONTINUE”按鈕繼續游戲,用戶根據需要選擇功能后跳轉到相應界面。
4.1.2 交互設計
游戲主界面有一個種子收集區域,還有一個植物存放區域,根據不同的等級加載不同的植物,每種植物種植所需的種子數目不同,當種子數目足夠時可以拖動植物到種植區,植物就開始對蟲子發起攻擊。種植區分為四個橫著的跑道,九個豎著方格,一共有三十六個種子種植區域。每行都有蟲子進攻。
4.1.3 視覺設計
游戲采用彩色色調,角色造型使用卡通設計表現形式,界面的游戲名稱使用植物和蟲子組合而成,顯得富有活力。
4.2.1 SurfaceView框架
子類SurfaceView繼承于父類View,和TextView、ImageView等一系列控件是等同的。
根據本游戲的界面設計,所有表示游戲各種狀態的整型常量都在該類中被定義:GameMenu、GameWelcome、GameIngday、GameWin、GameLost、GameSelect等將它們初始化。不同游戲狀態下的游戲繪圖都是通過使用定義畫圖函數myDraw()里面的switch()語句來實現的。同樣,onTouchEvent()函數也是通過這樣處理的。
4.2.2 MainMenu類
在游戲的主界面菜單中,所有按鈕是否按下的狀態值都被定義成boolean類型,并且它們初始化的值都是false。Paly button和Continue button都已經按照主菜單界面設計中的布局繪制完成。
在屏幕的主要硬件監控中的Touch方法中,ACTION_DOWN和ACTION_MOVE這兩個事件中檢測每個button的狀態(是否被按下),如果是,被按下狀態的相應圖片按鈕在draw()函數中繪制完成。在ACTION_UP事件中,將改變按鈕的狀態,從而轉變到相應的游戲狀態。如果手機自帶的“退出”選項被觸發,系統將會調用System.exit(0)方法直接退出游戲界面。
文章簡要介紹了游戲的框架設計,重點討論了游戲功能的設計??偟膩砜?,這個設計只是單機版的游戲,相對于聯機版的簡單很多。隨著手機游戲行業的日趨成熟,網絡游戲的優勢日趨明顯,玩法也變得多樣化,所以在實現聯機版游戲這個模塊還需要有所擴充和提高。
[1]蔣浩.基于Android的游戲設計與開發[D].南京:東南大學,2011.
[2]崔浩然.基于Android平臺的手機游戲的設計與實現[D].西安:西安科技大學,2011.
[3][美]Bill Phillips Brian Hardy.Android編程權威指南[M].北京:人民郵電出版社,2014.
[4]李竹林.基于Android系統的斗地主游戲的設計與實現[J].河南科學.2015,33(2):200-203.
[5]耿祥義,張躍平.Java面向對象程序設計[M].北京:清華大學出版社,2013.
[6]李華明.Android游戲編程之從零開始[M].北京:清華大學出版社,2011.
[7]Myeongjin Cho;Ho Jin Lee;Minseong Kim.An Insightful Performance Analyzer for All Software Layers of the Android-Based Systems[J].ETRI journal,2013,35(2):259-269.
潘瑞娟,碩士研究生,現就讀于陜西師范大學教育學院現代教育技術專業。