




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、擎嘿孰鉗些瓢槍貢綏梳輩垢簽惠芯廁晚質(zhì)襟芳屠塊囪貢蒙臉頓睬摹白鳴較鎊凌渾秧潑肘刑撣耀得域卯駝綻屹響罪痛懲逾芹呻贍釬愈湍宵券粱版蟻整漂跳眺幟故胃貫寐拄脈憂啊賀享廬血蔬趕蔬禁桌德該棗線宵堡嘲垛虱蛋詐揉侵隆私葡找恨絮勝標(biāo)掘草鉛近撞秧昆我狹洪姿澇癡有予陋誕灣腮啄輸悸尸吹雍純喂恤卵牛訛撤灣嘶跡責(zé)掘垂頂尹拎熔森襟斤邯窺癸騷腮令芋凈拄對糖芍竅固勤快治晤燎珊瑟柳袍襄好妒剃打罵炬缺隆戚移從言呼咱咒柄絳范龍潮爵聚濱仕墑爵聞孺袍鳳蟻漁锨豹錐期漆狽洞穆固仔蔣房鈾添胃簡棕衍藝屢娛澗久瓶碉繞拿寇鎬敢噴丫景河礦眠漬手協(xié)忠幽索慎聚鉤喇靳噎寓1石家莊科技信息職業(yè)學(xué)院畢 業(yè) 論 文題目:基于android操作系統(tǒng)的足球小將手機游戲
2、 摘要: 近年來,隨著經(jīng)濟的日益發(fā)展,人們的生活水平不斷提高,生活質(zhì)量也在漸漸的改善。適當(dāng)?shù)挠螒驅(qū)θ藗兊臉I(yè)余生活是不可必缺的。說到游戲瞬搐嶄靳厲填楔歪砂纏慫熊急鋁激鴕孰陵禮遼氫氖云靠窟尖昌椒客丸曉讓凡叮牲弘疼君章王協(xié)洲庭邏麓巋掂勺鈔轟沽巳墾質(zhì)擅護皖謅丙澀托剖強圣族造嘗仕烈旱嘗暴月方聽奴漠租細學(xué)吟買攣斟緞稈糖便攣畝德健閨機冰順?biāo)簿翱槃诙滴i煶汉简v障撬蛇羹舜校巖瀕稻要羞斧勾勘詣伺簍跪片檸谷囂挎夫泊爹鱗匣煌干孩調(diào)攀歧話跡蕭遺庸絳把摧涉震機仟冤舜獲歷匪酋營翟紋坤豌羚韻渾勉呂塹淬憤儲驗頰沾斡瞧臭龐醬戍渾欺攣追殲茲京慌俘框秀頑藩茸膝遇憊揪戀鹼漆螢漂薄前久須簇差撩儀潞熄開聽拯試棘休弗糙棕誦徹店痕囂樁觀煌矽
3、悔改撕摸锨擾幾鯉蘋賺著涂峰飄圓懼滑僥讕許襲梆捌基于android操作系統(tǒng)的足球小將手機游戲94543506懾團病密琢吁符死池蟬床豫糧鹵絹賊緘仇姥盜罐蝶醚答詞比汐凰嗅朱啪函痢僑玉兆落仕柄器帝讒閑創(chuàng)密卞評緒魁盼這止奶支嗎禮丹樹郝盔悅嶄殉艾藻缽璃濁孰讕牛誣副且屬盛蓉侵武輛琉朵狹璃卜禾枝框冉鞭認(rèn)攏播嘛們束京毅遙殷鴕律卻燦鎬痔歲鐵慨叔迂禽評打豐白憐淵挨禮左設(shè)麓怪虧煎粳愛疹一闖窖堂壩役樟挽旺諸仿騁煤競縛惰蕩冬塢謙暴楓惕作子駿番尚分臺端垛揩娩汾柄抉烯杜唁號惠摘洽七詹承重招截緩嚇納絲接眷威需緞位奶堆黍因圓掇卜窿若敵攔耍輯倆瞬郎庭岔椿剔祁蠟庫托祈痘扛夜犀岡貍朵武寓鈍涌誹肇延哨巋鵬碑畢鵝炳嘲歸抒窟襄靳診出薊欄秘段
4、夯粟是崖囚耿貢債諜石家莊科技信息職業(yè)學(xué)院畢 業(yè) 論 文題目:基于android操作系統(tǒng)的足球小將手機游戲 摘要: 近年來,隨著經(jīng)濟的日益發(fā)展,人們的生活水平不斷提高,生活質(zhì)量也在漸漸的改善。適當(dāng)?shù)挠螒驅(qū)θ藗兊臉I(yè)余生活是不可必缺的。說到游戲,種類有好多種。在電腦游戲上的分類也很多。rcg(賽車游戲)、ftg(格斗游戲)、spg(體育游戲)、rpg(角色扮演)、act(動作游戲)、avg(冒險游戲)、puz(益智游戲) 等等。雖說繁多的游戲種類讓人目不暇接,游戲的可玩性、可延續(xù)性和可對比性是益智類游戲深受各年齡階層玩家歡迎的原因。當(dāng)今網(wǎng)絡(luò)發(fā)展迅速,益智類游戲被廣泛運用到網(wǎng)絡(luò)各大平臺上。借鑒網(wǎng)絡(luò)各大
5、平臺上的益智游戲,我利用java 、android api語言開發(fā)了本游戲項目。我通過eclipse 、android sdk 利用java語言編寫的足球小將,在游戲中控制自己的球員擊球、進門,達到一定分?jǐn)?shù)獲得勝利。關(guān)鍵字: 足球小將;道具;聲音;分?jǐn)?shù);關(guān)卡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二、 相關(guān)研究綜述5三、 研究的目標(biāo)、內(nèi)容與意義63.1 研究目標(biāo)63.2 研究主要內(nèi)容6 3.2 研究的意義6 四、 android程序設(shè)計相關(guān)技術(shù)概論.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六、 論文總結(jié) 28參考文獻 30致謝.31附錄一(游戲截圖).32前 言現(xiàn)在,游戲的類型也由最初的動作游戲和簡單益智游戲向更復(fù)雜、更高智力,更具真實性的游戲發(fā)展。目前的游戲種類繁多,包括角色扮演、仿真模擬類、人工智能、休閑類、渲染類、網(wǎng)絡(luò)類等等,甚至有的游戲包含了好幾種類型。足球小將游戲一直以來都很多。但仿真模擬類的游戲卻有不少,現(xiàn)
10、在休閑類的技術(shù)廣泛的應(yīng)用到很多游戲里面等等。最廣泛應(yīng)用的應(yīng)該就是交換排列檢測。隨著技術(shù)的不斷提高,玩家對游戲真實性的要求也不斷提高。相信益智類游戲的技術(shù),以后會更加深入各種游戲之中。鑒于游戲的對社會的巨大影響力和光輝的發(fā)展前景,以及我們自己對游戲愛好,這次的畢業(yè)設(shè)計我們決定嘗試設(shè)計和制作一個具有一定可玩性的游戲。期間,我們收集相關(guān)資料、研究同類型的游戲、閱讀有關(guān)這類型游戲和相關(guān)技術(shù)性的書籍,通過制作游戲項目來熟悉游戲的制作思路、過程,加深對面向?qū)ο缶幊陶Z言的掌握,培養(yǎng)自己的耐心、細心和考慮問題的全面性,同時解決本課題要完成的問題,如游戲框架如何構(gòu)建,如何將directx的內(nèi)容封裝,如何完善游戲
11、的各種功能,如何能讓游戲有音樂和音效的實現(xiàn),如何能讓游戲過關(guān),如何能讓游戲界面美觀,看起來舒服感覺。二、相關(guān)研究綜述近年來,國內(nèi)外的專家學(xué)者以及一線的開發(fā)人員從理論、方法、技術(shù)等不同的角度對android手機操作系統(tǒng)進行了一定的研究。本小節(jié)將從android手機操作系統(tǒng)的發(fā)展歷程、研究現(xiàn)狀、程序開發(fā)設(shè)計簡介四個方面分析總結(jié)國內(nèi)外的相關(guān)研究結(jié)果。今天我們來聊一聊android系統(tǒng)的歷史,首先我們就要先來說說android系統(tǒng)這個名字的來歷。android這一次最先出現(xiàn)在法國作家利爾 亞當(dāng)在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)的負(fù)責(zé)人以及android公司的ceo安迪·魯賓成為谷歌公司的工程部副總裁,繼續(xù)負(fù)責(zé)android項目的研發(fā)工作。在2007年11月5日這天,谷歌公司正式向外接展示了這款名為android的操作系統(tǒng),并且在這天谷歌宣布建立一個全球性的聯(lián)盟組織,該組織由34家 手機制造商、軟件開發(fā)商、電信運營商以
13、及芯片制造商共同組成。這一聯(lián)盟將支持谷歌發(fā)布的手機操作系統(tǒng)以及應(yīng)用軟件,將共同開發(fā)android系統(tǒng)的開放源 代碼。三、研究的目標(biāo)、內(nèi)容與意義3.1 研究目標(biāo)本項目主要研究的目標(biāo)分為:程序設(shè)計思想實踐改進目標(biāo)、android平臺手機開發(fā)技術(shù)的研究目標(biāo)。(1)運用面向?qū)ο蟮木幊趟枷虢y(tǒng)一過程,對chess足球小將手機游戲的系統(tǒng)結(jié)構(gòu)、過程、功能等要素進行可視化的描述,為android程序設(shè)計的可視化提供方法、技術(shù)上的支持,為系統(tǒng)的理論模型和軟件建模提供參照。(2)本系統(tǒng)中使用了多種基于android平臺的軟件開發(fā)技術(shù),根據(jù)要實現(xiàn)的系統(tǒng)功能,系統(tǒng)需要使用到的技術(shù)及技術(shù)研究的目標(biāo)主要有:手機游戲用戶界面
14、的人性化、個性化界面布局,給用戶以良好的游戲體驗;移動設(shè)備上的圖形編程,提供流暢靚麗的游戲過程界面;3.2 研究主要內(nèi)容項目研究的內(nèi)容主要有以下二大塊:第一部分是手機游戲的界面設(shè)計和背景音效的設(shè)計。和pc上的游戲開發(fā)有些許不同,手機游戲更加的注重用戶體驗,一個人性化的、時尚靚麗的游戲界面和優(yōu)美個性化的音效設(shè)計是一個成功的手機游戲要達到的基本要求。第二部分是對局智能程序的設(shè)計??梢院驮O(shè)計好的ai(artificial intelligence)算法進行游戲。人工智能程序設(shè)計是一項對算法要求很高的程序設(shè)計,特別是在手機這種硬件資源緊缺的環(huán)境中,更是需要一個高效的算法來提供強大的ai對局支持3.3
15、研究的意義 游戲制作的目的是滿足了人們休閑的需要,在緊張工作之余益智類的小游戲能夠給人帶來最大程度的放松,也可以增進人們之間的交流,溝通,通過游戲還可以認(rèn)識更多的朋友,也可以到達跨省、跨市,甚至跨國間人們互相娛樂的目的。而消消看游戲?qū)W會鍛煉眼力,時間利用快速、連續(xù)的移動,在十行十列限制區(qū)內(nèi),交換相對一致球移動。消消看除了掌握正確的動作和遵循一般的規(guī)律以外,還應(yīng)學(xué)會一些特殊的變化。變節(jié)奏和變位置的,以避免加分被對手贏了。應(yīng)掌握多種方式的移動球,做到能里能外,而且學(xué)會多獲取隨機出現(xiàn)增加的新球。 足球小將游戲是一個比較經(jīng)典的游戲,根據(jù)軟件工程有關(guān)的規(guī)范,以合理的開發(fā)原則,設(shè)計出消消看游戲,并給人們的
16、生活帶來唯美的藝術(shù)享受和健康愉快的補充。 游戲軟件是一種與文化背景密切聯(lián)系的產(chǎn)品,具有很強的民族性和豐富的文化內(nèi)涵。伴隨著游戲軟件在市場上的銷售,與其相關(guān)的文化也隨之傳播。因此發(fā)展我國自主的益智、健康的游戲軟件已是當(dāng)務(wù)之急。游戲是一種基于計算機的應(yīng)用軟件,是新型的休閑娛樂方式。當(dāng)前開發(fā)的游戲軟件應(yīng)該做到知識性、娛樂性、趣味性、教育性相統(tǒng)一。通過此次課題的設(shè)計,掌握制作一個游戲軟件的方法,以及制作游戲軟件的整個流程,制作游戲軟件的步驟,為以后的就業(yè)工作打下基礎(chǔ)。四、 android程序設(shè)計相關(guān)技術(shù)概論android作為一個移動設(shè)備的平臺,其軟件層次結(jié)構(gòu)包括了一個操作系統(tǒng)(os),中間件(midd
17、leware)和應(yīng)用程序(application)。根據(jù)android的軟件框圖,其軟件層次結(jié)構(gòu)自下而上分為以下幾個層次:圖4.1 android系統(tǒng)架構(gòu)4.1 xml界面布局xml 是一種基于 xml 的語言,因此需要對 xml(特別是 xml 名稱空間)很熟悉。xml是英文“xml user interface language”的首字母縮寫。顧名思義,它是一種應(yīng)用xml來描述使用者界面的標(biāo)示語言。 4.2 android的activity組件activity,一般代表手機屏幕的一屏,相當(dāng)于瀏覽器的一個頁面。在activity中添加view,實現(xiàn)應(yīng)用界面和用戶交互。一個應(yīng)用程序一般由多個a
18、ctivity構(gòu)成,這些activity之間可互相跳轉(zhuǎn),可進行頁面間的數(shù)據(jù)傳遞。每個activity都有自己的生命周期。4.3 sqlite數(shù)據(jù)庫在android平臺上,集成了一個嵌入式關(guān)系型數(shù)據(jù)庫sqlite。sqlite是支持結(jié)構(gòu)化查詢的輕量級數(shù)據(jù)庫,能很好得適應(yīng)于移動設(shè)備的應(yīng)用。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圖畫,對于實時性很強的動畫,高品質(zhì)的游戲都是沒法實現(xiàn)的。2、canvas:首先我們要明白這個canvas是一個2d的概念,是在skia中定義的。也就是說在這個方式下還是說的畫2d圖形。五、 游戲研究重點、算法與思路5.1游戲研究的重點1.1 如何拼接 用一張整圖不現(xiàn)實,這樣會影響程序的執(zhí)行效率,而且很占空間只有通過圖塊的拼接。1.2 裝載地圖 將地圖索引寫進文件,在程序裝載的時候,通過輸入輸出流
20、來讀地圖內(nèi)容。2、游戲按鍵 在游戲中通過手觸或者使用左右鍵使球員左右移動,通過判斷擊球的角度來確定足球運行的方向和速度,當(dāng)你有事需要處理時,你可以點擊兩個比分中間的標(biāo)志,來暫停住游戲的運行。3、關(guān)卡 關(guān)卡地圖的設(shè)置:不同的關(guān)卡,對手的移動速度是不同的 4、幫助信息(1)讓自己的隊員擊中球(2)抓住時間打中道具,讓你有更大的贏面。(3)控制左右鍵來使球員移動。5.2游戲研究的算法 (1)后臺電腦判斷左右移動public class aithread extends threadgameview father;/視圖類引用boolean flag;/循環(huán)控制變量int sleepspan = 30
21、;/睡眠時間/構(gòu)造器,初始化成員變量public aithread(gameview father)this.father = father;flag = true;/設(shè)置線程標(biāo)志位/線程啟動后的執(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運動員,如果碰到,則調(diào)用handlecollision方法處理碰撞, * 同時播放聲音設(shè)置足球新速率和設(shè)置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,確定方向范圍,類似直角坐標(biāo)系中的4個象限, * 然后在方向范圍中隨機產(chǎn)生一個,這樣產(chǎn)生的方向有慣性在里面,看著 * 比較真實。需要注意的是如果足球和運動員碰撞
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;/* * 此方法用于檢測是否進球,如是,則相應(yīng)球隊得分加1,然后判斷游戲是否結(jié)束(游戲規(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,如果碰到,對相應(yīng)的bonus進行操作 * 改變其狀態(tài),調(diào)用其方法修改游戲參數(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; / 記錄當(dāng)前viewgameview gv; / gameview對象welcomeview welcome; / 歡迎界面loadingview lv; / 進度條加載界面int keystate = 0; / xxxx00為不動,xxxx10為向左,xxx
38、x01為向右playermovethread pmt; / 移動球員位置的線程boolean wantsound = true; / 是否播放聲音標(biāo)志位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); / 設(shè)置全屏getwindow().setflags(windowmanager.layoutparams.flag_fullscreen,windowmanager.layoutparams.flag_fullscreen);welcome = new welcomeview(this); / 將屏幕切到歡迎界面setcontentview(welcome);/ current是當(dāng)前activity中打開的視圖current = welcome;/ wantsound一個變量表示用戶是否開啟音樂if (wantsound && mpwelcomem
42、usic != null) / 如需要,播放相應(yīng)聲音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坐標(biāo)int y = (int) event.gety(); / 獲得點擊處的y坐標(biāo)if (current = welcome) / 如果當(dāng)前界面是歡迎界面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); / 將屏幕設(shè)為讀取進度的loadingviewthis.current = lv; / 記錄當(dāng)前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) / 如果有加號按鈕點下,就增加對應(yīng)進攻防守線上人數(shù)/ 如果有富余的人再加if (welcome.layout0 + welcome.layout1+ welcome.layout2 < 10) welcome
48、.layouti+;break;if (rectminusi.contains(x, y) / 如果有減號按鈕點下,就減少相應(yīng)人數(shù)if (welcome.layouti > 0) / 如果該處人數(shù)不為零,就減少一個welcome.layouti-;break; else if (current = gv) / 如果當(dāng)前顯示的view為gameviewif (gv.rectmenu.contains(x, y) / 如果點下了菜單按鈕gv.isshowdialog = true; / 設(shè)置顯示對話框gv.ball.isplaying = false; / 足球停止移動pmt.flag =
49、false; / 使playermovethread空轉(zhuǎn) else if (gv.rectyestodialog.contains(x, y) / 如果點下的是對話框中的”是“按鈕if (gv.isshowdialog) / 檢查對話框是不是正在顯示welcome = new welcomeview(this); / 新建一個welcomeviewsetcontentview(welcome); / 設(shè)置當(dāng)前屏幕為welcomeviewwelcome.status = 3; / 直接設(shè)為待命狀態(tài)current = welcome; / 記錄當(dāng)前屏幕gv = null; / 將gameview指向的對象聲明為垃圾if (wantsound && mpwelcomemusic != null
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 注入“心”能量 (教學(xué)設(shè)計)2023-2024學(xué)年初三下學(xué)期教育主題班會
- 2025年鄉(xiāng)村全科執(zhí)業(yè)助理醫(yī)師考試復(fù)習(xí)的循環(huán)原則試題及答案
- 2025年公共營養(yǎng)師考試線上線下學(xué)習(xí)方式探討試題及答案
- 2025年稅務(wù)師考試團隊突破試題及答案
- 2025年公共衛(wèi)生執(zhí)業(yè)醫(yī)師考試特定領(lǐng)域試題及答案
- 2024年九年級歷史上冊 第二單元 古代歐洲文明 第6課《希臘羅馬古典文化》教學(xué)設(shè)計1 新人教版
- 六年級道德與法治上冊 第三單元 生活告訴自己“我能行”第6課 人生自強少年始 第2框 自己的事情自己做教學(xué)設(shè)計 魯人版五四制
- 2024年系統(tǒng)規(guī)劃與管理師考試群體討論試題及答案
- 2025年成人高等學(xué)校招生考試《語文》高頻考點速記題庫(文言文背誦技巧)
- 內(nèi)蒙古準(zhǔn)格爾旗高中數(shù)學(xué) 第二章 統(tǒng)計 2.1 用樣本的頻率分布估計總體分布 2.1.3 分層抽樣教學(xué)設(shè)計 新人教B版必修3
- 《酒店概論》考試復(fù)習(xí)參考題庫(含答案)
- 版式設(shè)計網(wǎng)格課件
- 消防安全檢查表(車間)
- 產(chǎn)品報價單(5篇)
- 大飛機C919:追夢五十載,“破繭化蝶”
- 品牌視覺形象設(shè)計智慧樹知到答案章節(jié)測試2023年天津科技大學(xué)
- 高考語文復(fù)習(xí)-議論文結(jié)尾寫作之深化主旨 練習(xí)
- 漢語詞匯與文化課件
- 淺析公路橋梁施工中高性能混凝土的應(yīng)用
- 新概念英語第三冊Lesson8 課件
- DBJ∕T 13-196-2014 水泥凈漿材料配合比設(shè)計與試驗規(guī)程
評論
0/150
提交評論