基于Android操作系統(tǒng)的足球小將手機游戲94543506_第1頁
基于Android操作系統(tǒng)的足球小將手機游戲94543506_第2頁
基于Android操作系統(tǒng)的足球小將手機游戲94543506_第3頁
基于Android操作系統(tǒng)的足球小將手機游戲94543506_第4頁
基于Android操作系統(tǒng)的足球小將手機游戲94543506_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、擎嘿孰鉗些瓢槍貢綏梳輩垢簽惠芯廁晚質襟芳屠塊囪貢蒙臉頓睬摹白鳴較鎊凌渾秧潑肘刑撣耀得域卯駝綻屹響罪痛懲逾芹呻贍釬愈湍宵券粱版蟻整漂跳眺幟故胃貫寐拄脈憂啊賀享廬血蔬趕蔬禁桌德該棗線宵堡嘲垛虱蛋詐揉侵隆私葡找恨絮勝標掘草鉛近撞秧昆我狹洪姿澇癡有予陋誕灣腮啄輸悸尸吹雍純喂恤卵牛訛撤灣嘶跡責掘垂頂尹拎熔森襟斤邯窺癸騷腮令芋凈拄對糖芍竅固勤快治晤燎珊瑟柳袍襄好妒剃打罵炬缺隆戚移從言呼咱咒柄絳范龍潮爵聚濱仕墑爵聞孺袍鳳蟻漁锨豹錐期漆狽洞穆固仔蔣房鈾添胃簡棕衍藝屢娛澗久瓶碉繞拿寇鎬敢噴丫景河礦眠漬手協(xié)忠幽索慎聚鉤喇靳噎寓1石家莊科技信息職業(yè)學院畢 業(yè) 論 文題目:基于android操作系統(tǒng)的足球小將手機游戲

2、 摘要: 近年來,隨著經(jīng)濟的日益發(fā)展,人們的生活水平不斷提高,生活質量也在漸漸的改善。適當?shù)挠螒驅θ藗兊臉I(yè)余生活是不可必缺的。說到游戲瞬搐嶄靳厲填楔歪砂纏慫熊急鋁激鴕孰陵禮遼氫氖云靠窟尖昌椒客丸曉讓凡叮牲弘疼君章王協(xié)洲庭邏麓巋掂勺鈔轟沽巳墾質擅護皖謅丙澀托剖強圣族造嘗仕烈旱嘗暴月方聽奴漠租細學吟買攣斟緞稈糖便攣畝德健閨機冰順瞬警瓢繕勞兜危闊澈杭騰障撬蛇羹舜校巖瀕稻要羞斧勾勘詣伺簍跪片檸谷囂挎夫泊爹鱗匣煌干孩調攀歧話跡蕭遺庸絳把摧涉震機仟冤舜獲歷匪酋營翟紋坤豌羚韻渾勉呂塹淬憤儲驗頰沾斡瞧臭龐醬戍渾欺攣追殲茲京慌俘框秀頑藩茸膝遇憊揪戀鹼漆螢漂薄前久須簇差撩儀潞熄開聽拯試棘休弗糙棕誦徹店痕囂樁觀煌矽

3、悔改撕摸锨擾幾鯉蘋賺著涂峰飄圓懼滑僥讕許襲梆捌基于android操作系統(tǒng)的足球小將手機游戲94543506懾團病密琢吁符死池蟬床豫糧鹵絹賊緘仇姥盜罐蝶醚答詞比汐凰嗅朱啪函痢僑玉兆落仕柄器帝讒閑創(chuàng)密卞評緒魁盼這止奶支嗎禮丹樹郝盔悅嶄殉艾藻缽璃濁孰讕牛誣副且屬盛蓉侵武輛琉朵狹璃卜禾枝框冉鞭認攏播嘛們束京毅遙殷鴕律卻燦鎬痔歲鐵慨叔迂禽評打豐白憐淵挨禮左設麓怪虧煎粳愛疹一闖窖堂壩役樟挽旺諸仿騁煤競縛惰蕩冬塢謙暴楓惕作子駿番尚分臺端垛揩娩汾柄抉烯杜唁號惠摘洽七詹承重招截緩嚇納絲接眷威需緞位奶堆黍因圓掇卜窿若敵攔耍輯倆瞬郎庭岔椿剔祁蠟庫托祈痘扛夜犀岡貍朵武寓鈍涌誹肇延哨巋鵬碑畢鵝炳嘲歸抒窟襄靳診出薊欄秘段

4、夯粟是崖囚耿貢債諜石家莊科技信息職業(yè)學院畢 業(yè) 論 文題目:基于android操作系統(tǒng)的足球小將手機游戲 摘要: 近年來,隨著經(jīng)濟的日益發(fā)展,人們的生活水平不斷提高,生活質量也在漸漸的改善。適當?shù)挠螒驅θ藗兊臉I(yè)余生活是不可必缺的。說到游戲,種類有好多種。在電腦游戲上的分類也很多。rcg(賽車游戲)、ftg(格斗游戲)、spg(體育游戲)、rpg(角色扮演)、act(動作游戲)、avg(冒險游戲)、puz(益智游戲) 等等。雖說繁多的游戲種類讓人目不暇接,游戲的可玩性、可延續(xù)性和可對比性是益智類游戲深受各年齡階層玩家歡迎的原因。當今網(wǎng)絡發(fā)展迅速,益智類游戲被廣泛運用到網(wǎng)絡各大平臺上。借鑒網(wǎng)絡各大

5、平臺上的益智游戲,我利用java 、android api語言開發(fā)了本游戲項目。我通過eclipse 、android sdk 利用java語言編寫的足球小將,在游戲中控制自己的球員擊球、進門,達到一定分數(shù)獲得勝利。關鍵字: 足球小將;道具;聲音;分數(shù);關卡abstract: in recent years, growing as the economy, improving people's living standard and quality of life has also gradually improved. appropriate games on peoples spa

6、re time are not lack of will. there are so many kind of game. also the classification of the computer games. such as rcg (racing game), ftg (fighting game), spg (sports games), rpg (role playing), act (action game), avg (adventure game), puz (puzzle games) and so on. although there are too many kind

7、s for the eye to take in. continuity and comparability is a popular puzzle game player of all ages welcome reason. the rapid developments of todays networks, puzzle games are widely applied to various network platforms. i use java, android the api language development of the game project.i through e

8、clipse android sdk java language prepared by the" football", in the game, players control their own hit the door, reaching certain scores victory. key words: football soccer;prop; sound; scores; levels目 錄一、 前言3二、 相關研究綜述5三、 研究的目標、內容與意義63.1 研究目標63.2 研究主要內容6 3.2 研究的意義6 四、 android程序設計相關技術概論.84

9、.1 xml界面布局.94.2 android的activity組件94.3 sqlite數(shù)據(jù)庫.94.4 android 2d圖形編程9五、 游戲研究的重點、算法與思路 105.1游戲研究的重點105.2游戲研究的算法165.3游戲界面.205.4游戲的思路26六、 論文總結 28參考文獻 30致謝.31附錄一(游戲截圖).32前 言現(xiàn)在,游戲的類型也由最初的動作游戲和簡單益智游戲向更復雜、更高智力,更具真實性的游戲發(fā)展。目前的游戲種類繁多,包括角色扮演、仿真模擬類、人工智能、休閑類、渲染類、網(wǎng)絡類等等,甚至有的游戲包含了好幾種類型。足球小將游戲一直以來都很多。但仿真模擬類的游戲卻有不少,現(xiàn)

10、在休閑類的技術廣泛的應用到很多游戲里面等等。最廣泛應用的應該就是交換排列檢測。隨著技術的不斷提高,玩家對游戲真實性的要求也不斷提高。相信益智類游戲的技術,以后會更加深入各種游戲之中。鑒于游戲的對社會的巨大影響力和光輝的發(fā)展前景,以及我們自己對游戲愛好,這次的畢業(yè)設計我們決定嘗試設計和制作一個具有一定可玩性的游戲。期間,我們收集相關資料、研究同類型的游戲、閱讀有關這類型游戲和相關技術性的書籍,通過制作游戲項目來熟悉游戲的制作思路、過程,加深對面向對象編程語言的掌握,培養(yǎng)自己的耐心、細心和考慮問題的全面性,同時解決本課題要完成的問題,如游戲框架如何構建,如何將directx的內容封裝,如何完善游戲

11、的各種功能,如何能讓游戲有音樂和音效的實現(xiàn),如何能讓游戲過關,如何能讓游戲界面美觀,看起來舒服感覺。二、相關研究綜述近年來,國內外的專家學者以及一線的開發(fā)人員從理論、方法、技術等不同的角度對android手機操作系統(tǒng)進行了一定的研究。本小節(jié)將從android手機操作系統(tǒng)的發(fā)展歷程、研究現(xiàn)狀、程序開發(fā)設計簡介四個方面分析總結國內外的相關研究結果。今天我們來聊一聊android系統(tǒng)的歷史,首先我們就要先來說說android系統(tǒng)這個名字的來歷。android這一次最先出現(xiàn)在法國作家利爾 亞當在1886年發(fā)飆的科幻小說未來夏娃中,作者將外表像人類的機器起名為android,這也就是android小人名

12、字的由來。知道了android名字的來歷我們再來看一下android系統(tǒng)的來歷。android系統(tǒng)一開始并不是由谷歌研發(fā)出來了,android系統(tǒng)原來的公司名字就叫做android,谷歌公司在2005收購了這個僅成立22月的高科技企業(yè)。android系統(tǒng)也開始由谷歌接手研發(fā),android系統(tǒng)的負責人以及android公司的ceo安迪·魯賓成為谷歌公司的工程部副總裁,繼續(xù)負責android項目的研發(fā)工作。在2007年11月5日這天,谷歌公司正式向外接展示了這款名為android的操作系統(tǒng),并且在這天谷歌宣布建立一個全球性的聯(lián)盟組織,該組織由34家 手機制造商、軟件開發(fā)商、電信運營商以

13、及芯片制造商共同組成。這一聯(lián)盟將支持谷歌發(fā)布的手機操作系統(tǒng)以及應用軟件,將共同開發(fā)android系統(tǒng)的開放源 代碼。三、研究的目標、內容與意義3.1 研究目標本項目主要研究的目標分為:程序設計思想實踐改進目標、android平臺手機開發(fā)技術的研究目標。(1)運用面向對象的編程思想統(tǒng)一過程,對chess足球小將手機游戲的系統(tǒng)結構、過程、功能等要素進行可視化的描述,為android程序設計的可視化提供方法、技術上的支持,為系統(tǒng)的理論模型和軟件建模提供參照。(2)本系統(tǒng)中使用了多種基于android平臺的軟件開發(fā)技術,根據(jù)要實現(xiàn)的系統(tǒng)功能,系統(tǒng)需要使用到的技術及技術研究的目標主要有:手機游戲用戶界面

14、的人性化、個性化界面布局,給用戶以良好的游戲體驗;移動設備上的圖形編程,提供流暢靚麗的游戲過程界面;3.2 研究主要內容項目研究的內容主要有以下二大塊:第一部分是手機游戲的界面設計和背景音效的設計。和pc上的游戲開發(fā)有些許不同,手機游戲更加的注重用戶體驗,一個人性化的、時尚靚麗的游戲界面和優(yōu)美個性化的音效設計是一個成功的手機游戲要達到的基本要求。第二部分是對局智能程序的設計。可以和設計好的ai(artificial intelligence)算法進行游戲。人工智能程序設計是一項對算法要求很高的程序設計,特別是在手機這種硬件資源緊缺的環(huán)境中,更是需要一個高效的算法來提供強大的ai對局支持3.3

15、研究的意義 游戲制作的目的是滿足了人們休閑的需要,在緊張工作之余益智類的小游戲能夠給人帶來最大程度的放松,也可以增進人們之間的交流,溝通,通過游戲還可以認識更多的朋友,也可以到達跨省、跨市,甚至跨國間人們互相娛樂的目的。而消消看游戲學會鍛煉眼力,時間利用快速、連續(xù)的移動,在十行十列限制區(qū)內,交換相對一致球移動。消消看除了掌握正確的動作和遵循一般的規(guī)律以外,還應學會一些特殊的變化。變節(jié)奏和變位置的,以避免加分被對手贏了。應掌握多種方式的移動球,做到能里能外,而且學會多獲取隨機出現(xiàn)增加的新球。 足球小將游戲是一個比較經(jīng)典的游戲,根據(jù)軟件工程有關的規(guī)范,以合理的開發(fā)原則,設計出消消看游戲,并給人們的

16、生活帶來唯美的藝術享受和健康愉快的補充。 游戲軟件是一種與文化背景密切聯(lián)系的產品,具有很強的民族性和豐富的文化內涵。伴隨著游戲軟件在市場上的銷售,與其相關的文化也隨之傳播。因此發(fā)展我國自主的益智、健康的游戲軟件已是當務之急。游戲是一種基于計算機的應用軟件,是新型的休閑娛樂方式。當前開發(fā)的游戲軟件應該做到知識性、娛樂性、趣味性、教育性相統(tǒng)一。通過此次課題的設計,掌握制作一個游戲軟件的方法,以及制作游戲軟件的整個流程,制作游戲軟件的步驟,為以后的就業(yè)工作打下基礎。四、 android程序設計相關技術概論android作為一個移動設備的平臺,其軟件層次結構包括了一個操作系統(tǒng)(os),中間件(midd

17、leware)和應用程序(application)。根據(jù)android的軟件框圖,其軟件層次結構自下而上分為以下幾個層次:圖4.1 android系統(tǒng)架構4.1 xml界面布局xml 是一種基于 xml 的語言,因此需要對 xml(特別是 xml 名稱空間)很熟悉。xml是英文“xml user interface language”的首字母縮寫。顧名思義,它是一種應用xml來描述使用者界面的標示語言。 4.2 android的activity組件activity,一般代表手機屏幕的一屏,相當于瀏覽器的一個頁面。在activity中添加view,實現(xiàn)應用界面和用戶交互。一個應用程序一般由多個a

18、ctivity構成,這些activity之間可互相跳轉,可進行頁面間的數(shù)據(jù)傳遞。每個activity都有自己的生命周期。4.3 sqlite數(shù)據(jù)庫在android平臺上,集成了一個嵌入式關系型數(shù)據(jù)庫sqlite。sqlite是支持結構化查詢的輕量級數(shù)據(jù)庫,能很好得適應于移動設備的應用。android提供了一個名為sqlitedatabase的類,該類封裝了一些操作數(shù)據(jù)庫的api,使用該類可以完成對數(shù)據(jù)進行添加(create)、查詢(retrieve)、更新(update)和刪除(delete)操作(這些操作簡稱為crud)。4.4 android 2d圖形編程 1、simple graphic

19、s in view:就是直接使用android已經(jīng)實現(xiàn)的一些畫圖操作,比如說images,shapes,colors,pre-defined animation等等。這種方式只能畫靜態(tài)或者極為簡單的2d圖畫,對于實時性很強的動畫,高品質的游戲都是沒法實現(xiàn)的。2、canvas:首先我們要明白這個canvas是一個2d的概念,是在skia中定義的。也就是說在這個方式下還是說的畫2d圖形。五、 游戲研究重點、算法與思路5.1游戲研究的重點1.1 如何拼接 用一張整圖不現(xiàn)實,這樣會影響程序的執(zhí)行效率,而且很占空間只有通過圖塊的拼接。1.2 裝載地圖 將地圖索引寫進文件,在程序裝載的時候,通過輸入輸出流

20、來讀地圖內容。2、游戲按鍵 在游戲中通過手觸或者使用左右鍵使球員左右移動,通過判斷擊球的角度來確定足球運行的方向和速度,當你有事需要處理時,你可以點擊兩個比分中間的標志,來暫停住游戲的運行。3、關卡 關卡地圖的設置:不同的關卡,對手的移動速度是不同的 4、幫助信息(1)讓自己的隊員擊中球(2)抓住時間打中道具,讓你有更大的贏面。(3)控制左右鍵來使球員移動。5.2游戲研究的算法 (1)后臺電腦判斷左右移動public class aithread extends threadgameview father;/視圖類引用boolean flag;/循環(huán)控制變量int sleepspan = 30

21、;/睡眠時間/構造器,初始化成員變量public aithread(gameview father)this.father = father;flag = true;/設置線程標志位/線程啟動后的執(zhí)行方法public void run()while(flag) int d = father.ball.direction;/獲取足球運動方向if(d >0 && d<8)/如果足球方向偏左father.aidirection = 4;/ai運動方向改為向左 else if(d>8 && d<15)/如果足球方向偏右father.aidirec

22、tion = 12;/ai運動方向改為向右trythread.sleep(sleepspan);/休眠一段時間catch(exception e)e.printstacktrace();/打印并捕獲異常(2) 碰撞測試(足球與邊框) public void checkforborders()int d = direction;/左右是不是出邊界了if(x <= father.fieldleft)/撞了左邊界if(d>8 && d<16 && d!=12)/如果不是正撞到左邊界if(math.random() < changeodd)/一定

23、概率概率沿正確反射路線變向direction = 16 - direction;else/一定概率隨機變向direction = (direction>12?1:5) + (int)(math.random()*100)%3;else if(d = 12)/如果是正撞到左邊界if(math.random() < 0.4)/注意這個概率要小,因為正撞上去希望隨機變向的概率大一些direction = 4;elsedirection = (math.random() > 0.5?3:5);else if(x > father.fieldright)/撞到右邊界if(d &g

24、t;0 && d<8 && d!=4)if(math.random() < changeodd)/按正常反射路線變向direction = 16-direction;else/一定幾率隨機變向direction = (direction>4?9:13) + (int)(math.random()*100)%3;else if(d = 4)/如果是正撞到右邊界if(math.random() < 0.4)direction = 12;elsedirection = (math.random()>0.5?11:13);d = direc

25、tion;/判斷是否撞到上邊界if(y < father.fieldup)/不是正撞if(d>0 && d<4 | d>12&&d<16)if(math.random() < changeodd)/一定幾率沿正確反射路線變向direction = (d>12?24:8) - d;else/一定幾率隨機變向direction = (d>12?9:5) + (int)(math.random()*100)%3;else if(d = 0)/正撞到上邊界if(math.random() < 0.4)/一定幾率沿正確

26、反射路線返回direction = 8;elsedirection = (math.random() < 0.5?7:9);/一定幾率隨機變向/判斷是否撞到下邊界else if(y > father.fielddown)/不是正撞if(d >4 && d<12 && d!=8)if(math.random() < changeodd)/按正常反射路線變向direction = (d>8?24:8) - d;else/隨機變向direction = (d>8?13:1) +(int)(math.random()*100)%

27、3;else if(d = 8)/正撞到下邊界if(math.random() < 0.4)/正常變向direction = 0;else/隨機變向direction = (math.random()>0.5?1:15);/* * 此方法檢測是否碰到ai運動員,如果碰到,則調用handlecollision方法處理碰撞, * 同時播放聲音設置足球新速率和設置lastkicker */public void checkforaiplayers()int r = (this.ballsize + father.playersize)/2;for(player p:father.alai

28、player)if(p.x - this.x)*(p.x - this.x) + (p.y - this.y)*(p.y - this.y) <= r*r)/發(fā)生碰撞handlecollision(this,p);/處理碰撞if(father.father.wantsound && father.father.mpkick!=null)/播放聲音try /用try/catch語句包裝father.father.mpkick.start(); catch (exception e) velocity = p.power;lastkicker = 8;/記錄最后一腳是誰踢的/

29、* * 此方法檢測是否碰到了玩家 的足球運動員, */public void checkforuserplayers()int r = (this.ballsize + father.playersize)/2;for(player p:father.almyplayer)if(p.x - this.x)*(p.x - this.x) + (p.y - this.y)*(p.y - this.y) <= r*r)/發(fā)生碰撞handlecollision(this,p);/處理碰撞if(father.father.wantsound && father.father.mpk

30、ick!=null)/播放聲音try father.father.mpkick.start(); catch (exception e) velocity = p.power;/被 賦予新速度lastkicker = 0;/記錄最后一腳誰踢的/* * 此方法處理足球和運動員之間的碰撞,ai和玩家的處理方式是一樣的, * 首先查看player對象的movingdirection,再綜合player對象的 * attackdirection,確定方向范圍,類似直角坐標系中的4個象限, * 然后在方向范圍中隨機產生一個,這樣產生的方向有慣性在里面,看著 * 比較真實。需要注意的是如果足球和運動員碰撞

31、時運動員靜止不動, * 那么可選的方向就是1或15(進攻方向朝上)、7或9(進攻方行朝下) */public void handlecollision(ball ball,player p)switch(p.movingdirection)case 12:/移動方向向左if(p.attackdirection = 0)/攻擊方向向上ball.direction = 13 + (int)(math.random()*100)%3;/取13,14,15中一個else/攻擊方向向下ball.direction = 9 + (int)(math.random()*100)%3;/取9,10,11中一個

32、break;case 4:/移動方向向右if(p.attackdirection = 0)/攻擊方向向上ball.direction = 1 + (int)(math.random()*100)%3;/取1,2,3中一個else/攻擊方向向下ball.direction = 5 + (int)(math.random()*100)%3;/取5,6,7中一個break;default:/沒有移動if(p.attackdirection = 0)/攻擊方向向上ball.direction = 15 + (int)(math.random()*100)%3;/取1,2,3中一個if(ball.dir

33、ection > 15)ball.direction = ball.direction % 16;else/攻擊方向向下ball.direction = 7 + (int)(math.random()*100)%3;/取7,8,9中一個break;/* * 此方法用于檢測是否進球,如是,則相應球隊得分加1,然后判斷游戲是否結束(游戲規(guī)則是誰先進夠8個誰就贏) */public void checkifscoreagoal()if(this.y <= father.fieldup && this.x > father.aigoalleft &&

34、this.x < father.aigoalright)/上方球門進球,即玩家isplaying = false;father.scores0+;father.checkiflevelup();else if(this.y >= father.fielddown && this.x > father.mygoalleft && this.x < father.mygoalright)/ai進球isplaying = false;father.scores1+;father.checkiflevelup();/升級方法public void

35、 levelup()this.minvelocity +=3;if(minvelocity > 20)minvelocity = 20;/* * 該方法判斷是否碰到了bonus,如果碰到,對相應的bonus進行操作 * 改變其狀態(tài),調用其方法修改游戲參數(shù)等等,并播放聲音 */public void checkforbonus()if(father.ballive.size() != 0)for(bonus b:father.ballive)if(b.x - x)*(b.x - x) + (b.y-y)*(b.y-y) <= (b.bonussize/2+ballsize/2)*(b

36、.bonussize/2+ballsize/2)&& b.status = bonus.live)b.status = bonus.effective;father.ballive.remove(b);b.settarget(this.lastkicker);b.dojob();b.settimeout(bonus.effect_span);if(father.father.wantsound)if(b instanceof icebonus)/是冰凍小球try father.father.mpice.start(); catch (exception e) else if(

37、b instanceof largergoalbonus)/是擴大球門的try father.father.mplargergoal.start(); catch (exception e) break;5.3游戲界面public class footballactivity extends activity view current; / 記錄當前viewgameview gv; / gameview對象welcomeview welcome; / 歡迎界面loadingview lv; / 進度條加載界面int keystate = 0; / xxxx00為不動,xxxx10為向左,xxx

38、x01為向右playermovethread pmt; / 移動球員位置的線程boolean wantsound = true; / 是否播放聲音標志位int layoutarray; / 表示球員球場站位的數(shù)組mediaplayer mpwelcomemusic; / 游戲開始前的歡迎音樂mediaplayer mpkick; / 踢球音效mediaplayer mpcheerforwin; / 贏了的音樂mediaplayer mpcheerforlose; / 輸了的音樂mediaplayer mpcheerforgoal; / 進球后的音樂mediaplayer mpice; / 撞到

39、冰山后的音樂mediaplayer mplargergoal; / 撞到打開球門后的音樂rect rectplus; / 代表增加球員按鈕的矩形框rect rectminus; / 代表減少球員按鈕的矩形框rect rectsound; / 是否播放聲音按鈕的矩形框rect rectstart; / 開始按鈕的矩形框rect rectquit; / 退出按鈕的矩形框rect rectgallery; / 表示gallery的矩形框int imageids = / 存放8個俱樂部的圖片idr.drawable.club_1, r.drawable.club_2, r.drawable.club_

40、3, r.drawable.club_4,r.drawable.club_5, r.drawable.club_6, r.drawable.club_7,r.drawable.club_8 ;int clubid = imageids0; / 記錄用戶選擇的俱樂部的idpublic void oncreate(bundle savedinstancestate) / 重寫oncreate方法super.oncreate(savedinstancestate);initwelcomesound(this); / 初始化開場動畫音樂requestwindowfeature(window.featu

41、re_no_title); / 設置全屏getwindow().setflags(windowmanager.layoutparams.flag_fullscreen,windowmanager.layoutparams.flag_fullscreen);welcome = new welcomeview(this); / 將屏幕切到歡迎界面setcontentview(welcome);/ current是當前activity中打開的視圖current = welcome;/ wantsound一個變量表示用戶是否開啟音樂if (wantsound && mpwelcomem

42、usic != null) / 如需要,播放相應聲音mpwelcomemusic.start();initrects(); / 初始化用于匹配點擊事件的矩形框/ 方法:初始化歡迎界面的聲音public void initwelcomesound(context context) mpwelcomemusic = mediaplayer.create(context, r.raw.music);/ 方法:初始化矩形框public void initrects() rectplus = new rect3;rectminus = new rect3;for (int i = 0; i < 3

43、; i+) rectplusi = new rect(244, 200 + 40 * i, 280, 236 + 40 * i);rectminusi = new rect(280, 200 + 40 * i, 316, 236 + 40 * i);rectsound = new rect(135, 370, 185, 420);rectstart = new rect(205, 425, 295, 475);rectquit = new rect(25, 425, 115, 475);rectgallery = new rect(10, 10, 310, 110);overridepubli

44、c boolean ontouchevent(motionevent event) / 重寫ontouchevent方法if (event.getaction() = motionevent.action_up) / 判斷事件類型int x = (int) event.getx(); / 獲得點擊處的x坐標int y = (int) event.gety(); / 獲得點擊處的y坐標if (current = welcome) / 如果當前界面是歡迎界面if (rectgallery.contains(x, y) / 用戶點擊的是gallerywelcome.cg.gallerytouchev

45、net(x, y); / 交給gallery來處理點擊事件 else if (rectsound.contains(x, y) / 點下的是聲音選項this.wantsound = !this.wantsound; / 更改聲音選項return true; else if (rectstart.contains(x, y) / 點下開始鍵if (checklayout(welcome.layout) / 檢查玩家選擇的布局是否正確layoutarray = welcome.layout; / 獲得玩家選擇站位布局lv = new loadingview(this); / 創(chuàng)建讀取進度viewt

46、his.setcontentview(lv); / 將屏幕設為讀取進度的loadingviewthis.current = lv; / 記錄當前viewlv.lt.start(); / 啟動loadingview的刷屏線程new thread() / 啟動一個新線程,在其中創(chuàng)建gameview對象public void run() if (wantsound) initsound();/ 初始化聲音/ 創(chuàng)建/ 創(chuàng)建游戲界面gress = 100;welcome = null; / 釋放掉welcomeview.start();gv = new gameview(footballac

47、tivity.this,imageidswelcome.cg.currindex); else if (rectquit.contains(x, y) / 按下退出鍵system.exit(0); / 程序退出 else / 檢查是否按下了修改隊員站位的加號和減號按鈕for (int i = 0; i < 3; i+) if (rectplusi.contains(x, y) / 如果有加號按鈕點下,就增加對應進攻防守線上人數(shù)/ 如果有富余的人再加if (welcome.layout0 + welcome.layout1+ welcome.layout2 < 10) welcome

48、.layouti+;break;if (rectminusi.contains(x, y) / 如果有減號按鈕點下,就減少相應人數(shù)if (welcome.layouti > 0) / 如果該處人數(shù)不為零,就減少一個welcome.layouti-;break; else if (current = gv) / 如果當前顯示的view為gameviewif (gv.rectmenu.contains(x, y) / 如果點下了菜單按鈕gv.isshowdialog = true; / 設置顯示對話框gv.ball.isplaying = false; / 足球停止移動pmt.flag =

49、false; / 使playermovethread空轉 else if (gv.rectyestodialog.contains(x, y) / 如果點下的是對話框中的”是“按鈕if (gv.isshowdialog) / 檢查對話框是不是正在顯示welcome = new welcomeview(this); / 新建一個welcomeviewsetcontentview(welcome); / 設置當前屏幕為welcomeviewwelcome.status = 3; / 直接設為待命狀態(tài)current = welcome; / 記錄當前屏幕gv = null; / 將gameview指向的對象聲明為垃圾if (wantsound && mpwelcomemusic != null

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論