版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、大學(xué)本科課程設(shè)計題目基于JAVA的橫版2D小游戲姓名學(xué)號2014221119200025專業(yè)年級指導(dǎo)教師職稱2016年12月10日大學(xué)本科畢業(yè)論文(設(shè)計)iTOC o 1-5 h z HYPERLINK l bookmark2 1緒論1 HYPERLINK l bookmark4 1.1課程設(shè)計的目的1 HYPERLINK l bookmark6 1.2課程設(shè)計的內(nèi)容1 HYPERLINK l bookmark8 1.3本程序的難點1 HYPERLINK l bookmark10 2系統(tǒng)的開發(fā)環(huán)境介紹2 HYPERLINK l bookmark12 JAVA知識背景簡介2 HYPERLINK
2、l bookmark14 JAVA語言起源3 HYPERLINK l bookmark16 2.3JAVA技術(shù)簡介5 HYPERLINK l bookmark18 3需求分析7 HYPERLINK l bookmark20 3.1系統(tǒng)目標(biāo)7 HYPERLINK l bookmark22 3.2主體功能7 HYPERLINK l bookmark24 4系統(tǒng)概要設(shè)計8 HYPERLINK l bookmark26 4.1系統(tǒng)功能模塊劃分8 HYPERLINK l bookmark28 4.2程序流程框圖8 HYPERLINK l bookmark30 5主要功能實現(xiàn).101)英雄動作合成102)
3、碰撞檢測.103)繪圖.10 HYPERLINK l bookmark32 6調(diào)試報告10 HYPERLINK l bookmark34 7總結(jié)128附錄12 基于JAVA的橫版2D小游戲1緒論1.1課程設(shè)計的目的隨著社會的進(jìn)步,生活節(jié)奏越來越快,很多人發(fā)現(xiàn)自己在忙碌中丟失了許多童年的樂趣。這款橫版2D射擊小游戲與80、90后們童年常玩的街機小游戲具有相似的畫風(fēng)和游戲玩法,能讓我們找回往日呼朋喚友打街機的豪情壯志。不僅如此,我們還降低了通關(guān)的難度,讓我們在學(xué)習(xí)和工作之余也能較為簡單地體驗通關(guān)的快感。12課程設(shè)計的內(nèi)容本程序是一個有趣且富有挑戰(zhàn)性的2D橫版射擊闖關(guān)類游戲。本游戲為彩色界面,有開場
4、動畫、主菜單等功能,其中主菜單包含有開始游戲、操作說明、制作者三個選項。游戲中英雄與冒險途中所遇到的敵人斗智斗勇,并躲避危險的地雷,最終擊敗boss并通關(guān)游戲。13本程序的難點本游戲有兩個難點:1)動作合成:英雄的動作是由多種動作合成的,其中動作之間的銜接的流暢度非常重要,比如邊跳邊攻擊,邊走邊攻擊等動作。2)碰撞檢測:各種游戲元素之間的碰撞檢測,比如一顆子彈怎樣才算打中目標(biāo)。除此之外,游戲中還有很多障礙物,比如:油桶、沙袋、地雷等,有些障礙物被破壞之后會出現(xiàn)道具。游戲中共有四種不同的道具,英雄吃了不同道具后會得到不同的BUFF。游戲關(guān)卡還有三種小怪,每種小怪都有不同的武器、血量和動作。玩家操
5、作的英雄也有血條、生命數(shù)和子彈數(shù)等狀態(tài)。2系統(tǒng)的開發(fā)環(huán)境介紹2.1JAVA知識背景簡介Java自1995誕生,至今已經(jīng)16年歷史。Java的名字的來源:Java是印度尼西亞爪哇島的英文名稱,因盛產(chǎn)咖啡而聞名。Java語言中的許多庫類名稱,多與咖啡有關(guān),如JavaBeans(咖啡豆)、NetBeans(網(wǎng)絡(luò)豆)以及ObjectBeans(對象豆)等等。SUN和JAVA的標(biāo)識也正是一杯正冒著熱氣的咖啡。據(jù)JamesGosling回憶,最初這個為TV機頂盒所設(shè)計的語言在Sun內(nèi)部一直稱為Green項目。我們的新語言需要一個名字。Gosling注意到自己辦公室外一棵茂密的橡樹Oak,這是一種在硅谷很常
6、見的樹。所以他將這個新語言命名為Oak。但Oak是另外一個注冊公司的名字。這個名字不可能再用了。在命名征集會上,大家提出了很多名字。最后按大家的評選次序,將十幾個名字排列成表,上報給商標(biāo)律師。排在第一位的是SiIk(絲綢)。盡管大家都喜歡這個名字,但遭到JamesGosling的堅決反對。排在第二和第三的都沒有通過律師這一關(guān)。只有排在第四位的名字、得到了所有人的認(rèn)可和律師的通過,這個名字就是Java。10多年來,Java就像爪哇咖啡一樣譽滿全球,成為實至名歸的企業(yè)級應(yīng)用平臺的霸主。而Java語言也如同咖啡一般醇香動人。2.2JAVA語言起源Java語言源于Oak語言,這是SUN公司在一項消費性
7、電子產(chǎn)品軟件發(fā)展方案中采用的語言。Oak的設(shè)計目標(biāo)是用以開發(fā)可靠、緊湊、易于移植的分布式嵌入系統(tǒng)。盡管Oak語言在技術(shù)上頗為成功,但由于商業(yè)上的原因,卻未能在市場的激烈競爭中站穩(wěn)腳跟。然而Internet和WWW日新月異的發(fā)展卻為Oak創(chuàng)造了新的生存空間。Oak經(jīng)過改進(jìn),成為一種非常適合網(wǎng)絡(luò)開發(fā)的獨特語言一一Java,從而脫穎而出,一舉成名。Internet,中譯為“因特網(wǎng)”或“互聯(lián)網(wǎng)”是當(dāng)今最大的國際性計算機互聯(lián)網(wǎng)絡(luò)。它源于美國國防部高級研究計劃局(AdvancedResearchProjectAgency)的網(wǎng)絡(luò)ARPANET,但發(fā)展到今天,已成為一個龐大的全球網(wǎng)。顧名思義,這是一個“網(wǎng)間
8、網(wǎng)”它把各種異構(gòu)網(wǎng)絡(luò)聯(lián)接一起,使位于世界各地、不同網(wǎng)絡(luò)中的人們能夠自由地交換信息。Internet在全球的用戶以千萬計,并在不斷激增;被它直接、間接連通的國家也越來越多。Internet上的協(xié)議標(biāo)準(zhǔn)也日益受到廣泛支持并在不斷地得到擴充。WWW全稱為WorldWideWeb,中譯為“萬維網(wǎng)”“全球網(wǎng)”等,是Internet中最為直觀和富有魅力的資源。它運用超文本(Hypertext)技術(shù)將信息組織成文字、聲音、圖像,用戶可以用瀏覽器讀取這些信息。WWW上信息種類繁多,用戶可以根據(jù)自己的需要在任何時間訪問自己所需的信息。WWW上的信息由頁面組成,頁面中包含超文本鏈接(HypertextLink),
9、把位于不同頁面的相關(guān)內(nèi)容鏈在一起,因而檢索信息非常方便。WWW的發(fā)展也是日新月異,它已不止局限于展示靜止信息,正在不斷增強交互和動態(tài)性。許多商家和企業(yè)也把目光瞄準(zhǔn)了WWW,可以預(yù)料,WWW世界將變得越來越豐富多彩。Internet(含WWW)為人們提供了許多有用的信息,然而,Internet上的用戶使用著各種各樣的計算機,系統(tǒng)軟件和用戶軟件也缺乏兼容性。在這些不兼容的平臺間交換信息,就像對許多語言不通的人講話一樣,是非常困難的。而Java與生俱來的特性剛好可以解決這道電腦界的“世紀(jì)難題”它建立的虛擬環(huán)境運行標(biāo)準(zhǔn)解決了軟件跨平臺執(zhí)行的問題,使不同的平臺都能理解用Java編寫的程序,命名Java語
10、言成了網(wǎng)絡(luò)世界的通用語言。因此,Java在Internet和WWW環(huán)境下如魚得水,迅速風(fēng)靡全球??傊?,Java作為一種獨特的語言,誕生于Internet和WWW蓬勃發(fā)展的時期,可謂恰逢其時。如今的Java與當(dāng)初的Oak語言已不可同日而語。而且,Java技術(shù)的創(chuàng)始者SUN公司采用了一種“開放”策略,將它公諸于眾,更激發(fā)了第三方軟件開發(fā)商的極大熱情,紛紛發(fā)展Java技術(shù)。Java的前景是非常廣闊的。23JAVA技術(shù)簡介Java語言具有鮮明的特點,使它在分布式網(wǎng)絡(luò)應(yīng)用、多平臺應(yīng)用、圖形用戶界面、Web應(yīng)用、多線程應(yīng)用等軟件的開發(fā)中成為方便高效的工具。下面擇要進(jìn)行介紹。1)開發(fā)和使用簡單性。Java的
11、語法風(fēng)格非常近似于C+語言,但刪改了C+中的指針、操作符重載等一些易混淆的地方。在內(nèi)存管理方面又提供了垃圾收集。這使程序員可以在實現(xiàn)程序功能方面投注更多的精力,而無需考慮諸如內(nèi)存釋放等枝節(jié)問題。C+中復(fù)雜而靈活的指針操作往往導(dǎo)致嚴(yán)重的錯誤,一向是開發(fā)調(diào)試人員深感棘手的問題,而這在Java中卻不存在。Java虛擬機還能為程序鏈接本地甚至遠(yuǎn)程的類庫,開發(fā)人員不必關(guān)注其細(xì)節(jié)。2)分布式。Java對TCP/IP協(xié)議(如HTTP、FTP)的支持使Java程序可以輕易地建立網(wǎng)絡(luò)連接,并通過統(tǒng)一資源定位器URL(UniformResourceLocator)訪問遠(yuǎn)程文件,如同訪問本地文件一樣方便。Java的
12、運行時系統(tǒng)能動態(tài)地通過網(wǎng)絡(luò)裝入字節(jié)碼,動態(tài)使用新的協(xié)議控制軟件。3)面向?qū)ο笮?。Java對面向?qū)ο蟮囊笫謬?yán)格,不允許定義獨立于類的變量和方法(函數(shù))oJava以類和對象為基礎(chǔ),任何變量和方法都只能包含于某個類的內(nèi)部。這就使程序的結(jié)構(gòu)更為清晰,為繼承和重用帶來便利。4)安全性。Java將安全性作為第一考慮,設(shè)置了層層防范。首先在編譯時進(jìn)行語法、語義的檢查。鏈接時,還要再進(jìn)行一遍遍譯級的類型檢查,消除間接對象訪問。運行時,Java的運行時系統(tǒng)將進(jìn)行字節(jié)碼檢驗,并記錄對象的存儲情況,將訪問限制在安全范圍之內(nèi)。本地的類與遠(yuǎn)程的類分開運行,阻止遠(yuǎn)程系統(tǒng)對本地系統(tǒng)的破壞。支持Java的瀏覽器還允許用戶
13、控制Java軟件對本地系統(tǒng)的訪問。各種措施的綜合使Java程序的安全性得到保證。5)平臺獨立性和可移植性。Java的應(yīng)用程序接口(API)和運行時系統(tǒng)是可移植性的關(guān)鍵。Java為支持它的各種操作系統(tǒng)提供了一致的API。在API界面上,所有Java程序?qū)⒍疾灰蕾囉谄脚_。Java的運行時系統(tǒng)在解釋執(zhí)行程序時,將字節(jié)碼轉(zhuǎn)化為當(dāng)前機器的機器碼。程序開發(fā)人員無需考慮使用應(yīng)用時的硬件條件和操作系統(tǒng)結(jié)構(gòu),用戶只需有Java的運行時系統(tǒng),就可運行編譯過的字節(jié)碼。6)多線程。Java提供了內(nèi)置的多線程支持,程序中可以方便地創(chuàng)建多個線程,各個線程執(zhí)行不同的工作。這使程序的工作簡單。比如,用不同的線程分別控制聲音和
14、圖像,可以輕易構(gòu)筑聲像交織的復(fù)雜效果,而編程時只要分別安排各線程的工作,不必關(guān)心它們的合作,這也大大促進(jìn)了程序的動態(tài)交互性和實時性。為了控制各線程的動作,Java還提供了線程同步機制。這一機制的內(nèi)部實現(xiàn)基于管程。這一機制使不同線程在訪問共享資源時能夠相互配合,保證數(shù)據(jù)的一致性,避免出錯。3需求分析系統(tǒng)需求分析就是把計劃期間建立的系統(tǒng)可行性分析求精和細(xì)化,分析各種可能的解法,并且分配給各個系統(tǒng)元素。需求分析是軟件定義階段中的第一步,是確定系統(tǒng)必須完成哪些工作,也就是對目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。3.1系統(tǒng)目標(biāo)程序良好運行,并且按照設(shè)計目的預(yù)想的完成具體功能。3.2主體功能玩家運行程
15、序進(jìn)入主菜單,主菜單提供:開始游戲、操作說明、制作小組等三個選項。游戲開始會有開場動畫,玩家坐在汽車內(nèi)攻擊,到達(dá)指定地點后自動跳下。玩家可以通過w和s鍵選擇主菜單三個選項,回車鍵選中。玩家選擇開始游戲后,通過ASD三個鍵控制英雄前進(jìn)后退下蹲等動作,通過JKL鍵完成跳躍換槍射擊等英雄動作。途中會有士兵地雷等,敵人。最終boss為坦克上的指揮官,會召喚摩托車隊玩家進(jìn)行攻擊。游戲過程中會統(tǒng)計玩家獲得分?jǐn)?shù),最終顯示在勝利畫面上。玩家擊敗boss通關(guān)整個地圖,獲得評分。玩家按Esc鍵返回主菜單。4系統(tǒng)概要設(shè)計系統(tǒng)設(shè)計是系統(tǒng)過程中重要的一個環(huán)節(jié),也關(guān)乎到系統(tǒng)的實用性,它的具體任務(wù)是依據(jù)系統(tǒng)分析工作得到的系
16、統(tǒng)功能和信息需求設(shè)計系統(tǒng)的處理流程,確定系統(tǒng)的應(yīng)用軟件結(jié)構(gòu),并對系統(tǒng)應(yīng)用軟件結(jié)構(gòu)的每一功能模塊給出其實現(xiàn)設(shè)計。4.1系統(tǒng)功能模塊劃分以下是各功能模塊的劃分:game類(主類)加載主菜單,碰撞檢測,加載返回詢問框。hero類初始化英雄,加載英雄圖片,英雄動作的組合。enemy類初始化敵人,加載敵人圖片status類加載圖片,繪制游戲狀態(tài)界面其他類播放游戲背景音樂,加載地圖,地雷,摩托車,boss等,結(jié)束游戲。4.2程序流程框圖流程圖如圖4.1所示:開始加載程序主菜單(Menu類)select=l?Esc_flag=0?結(jié)束加載退出詢問窗口圖4.15主要功能實現(xiàn)主要功能如下:1)英雄動作合成:實現(xiàn)
17、方案:先把英雄動作分拆成若干種,遇到不情景時再按照情景進(jìn)行組合。代碼見報告附錄(1)2)碰撞檢測:實現(xiàn)方案:先把游戲元素按照大小在碰撞檢測數(shù)組_map中寫入相應(yīng)數(shù)值,然后再在_map數(shù)組中對每個元素進(jìn)行碰撞檢測。代碼見附錄(2)3)繪圖:實現(xiàn)方案:用了雙緩沖繪圖,可以防止閃爍,然后把游戲元素逐個加上去。代碼見附錄(3)6調(diào)試報告調(diào)試報告如表6.1所示:表6.1遇到的問題原因解決方法用if語句寫的碰撞檢測位置不對。if語句只能檢測某些點的與某些點的碰撞,而且代碼復(fù)雜度咼。把游戲兀素寫入一個碰撞檢測數(shù)組_map中,再用來_map檢測碰撞。碰撞檢測數(shù)組map里面全是0,游戲元素沒有寫入。游戲元素是在
18、repaint階段與入map數(shù)組的,而碰撞檢測在每個類中添加一個drawinmap方法,在碰撞檢是在repaint之前,所以_map里面全是0。測之前調(diào)用它把游戲兀素寫入map數(shù)組。游戲代碼的控制和繪圖混起來了,不利于后面的修改和維護。一開始寫的時候沒有考慮周全。把控制和繪圖分開,對于每個動作:動作本身對游戲元素坐標(biāo)(x,y)的影響;與動作相應(yīng)的繪圖方法;二者分開寫。跳躍時調(diào)用的是set_jump_time()方法,不太安全跳躍動作沒有分解好。把跳躍分解為jump和fall兩個階段,然后對每個階段都有一個初始化方法和控制方法,比如jump有init_jump()方法和jump()方法。英雄跳上
19、障礙物后下不來沒有實時檢測英雄是否在空中添加一個檢測英雄是否在空中的方法is_in_air()。實時調(diào)用。向后飛的子彈碰撞檢測有誤差向后飛的子彈的彈頭在后端,和向前飛的子彈不一樣。修改Bullet類的get_pos()方法,按照子彈的類型和方向返回位置。英雄踩雷時應(yīng)該掉2滴血,但卻把血全掉光了。重復(fù)檢測到同一個雷,重復(fù)掉血。踩到雷后,給雷作一個標(biāo)記。往左走時,英雄腿部和身體不對齊。往左走和往右走不一樣,不能同樣處理。往右走時調(diào)整一下英雄身體的位置。英雄跳躍會穿過障礙物。沒有向卜碰撞檢測。加一個向下碰撞檢測。英雄穿過敵人時會向下掉一點點。敵人會把map數(shù)組里面的地面的數(shù)據(jù)覆蓋掉。把敵人位置往上調(diào)
20、一點點。從障礙物下來后,英雄的槍的位置不太準(zhǔn)。fall_time沒有及時清零。碰到地面后把fall_time清零_map數(shù)組有時會越界。在使用_map數(shù)組前先判斷是否越界敵人死后他打出的子彈也消失了。加載敵人子彈前先判斷了敵人是否存在。把加載敵人子彈前,對敵人存在的判斷去掉。第一種障礙物第一階可以穿過去。英雄的碰撞只用了中點檢測把中點檢測改為線檢測,用一個for循環(huán)從頭掃到腳。人物移動得很快不小心把敵人移動的if語句寫成了while語句,所以一直在跑。把敵人移動的while改成if。7總結(jié)該程序基本上達(dá)到了設(shè)計預(yù)期,玩家可較為完整的體驗該游戲,但是仍存在關(guān)卡過短,游戲節(jié)奏太快等缺點。在設(shè)計的過
21、程中也遇到了許多問題,但是在老師和同學(xué)的幫助下基本解決。通過這次課程設(shè)計,我對JAVA這門編程語言的理解進(jìn)一步加深,對于不了解的知識,又有了新的學(xué)習(xí)。同時在此向幫助過我的老師和同學(xué)表示感謝!1)/初始化跳躍的函數(shù)publicvoidinit_jump()action=2;jump_time=24;v=30;on_land=0;/跳躍控制函數(shù)publicvoidjump()action=2;/保證在空中可以移動if(jump_time+1)%4=0)y-=v;v-=5;/初始化下落的函數(shù)publicvoidinit_fall()action=3;fall_time=24;v=0;on_land=
22、0;/下落控制函數(shù)publicvoidfall()action=3;/保證在空中可以移動if(fall_time+1)%4=0)if(v=0;-i)if(Game.is_in_map(i,hero_pos.x/3)&Game._mapihero_pos.x/3/100!=1)/改break;y=3*i-45-hight;action=0;fall_time=0;on_land=1;if(fall_time=0)if(down_blocked=0)y+=v;elseinti,height=stand0.getHeight(this),width=bodygun_typebody_point/N0
23、.getWidth(this);Pointhero_pos=getDown_pos();for(i=heropos.y/3;i=0;-i)if(Game.isinmap(i,(x+width/2)/3)&Game.mapi(x+width/2)/3/100!=1)/改y=break;3*i-45-height;action=0;fall_time=0;on_land=1;/控制移動的函數(shù)publicvoidrun()action=1;if(direction=1)if(front_blocked=0&(Execute.getDistance()=6300&xGameFrame.DEFAULT_
24、WIDTH-305|x0)x-=3;/獲取槍位置的函數(shù)publicPointget_gun_pos()intattack_width=attackgun_type(ATTACK_TZME-attack_time)/N0.getWidth(this),body_width=bodygun_typebody_point/N0.getWidth(this),squat_hight=squat_stand0.getHeight(this),gun_x=x,gun_y=y+15;if(direction=1)gun_x+=attack_width;elsegun_x+=body_width-attack
25、_width;if(jump_time0|fall_time0)gun_y-=10;if(action=0&squat=1)gun_y+=squat_hight/2;Pointp=newPoint(gun_x,gun_y);returnp;/射擊函數(shù)publicvoidshoot()/時鐘延遲attack_time=ATTACK_TIME;if(Execute.getClk()=0)inti;/統(tǒng)計現(xiàn)在存在的子彈music.shootsound();for(i=0;iBULLET_X_NUM;+i)的個數(shù)if(!bulleti.is_exist()break;if(i0)gun_pos=get
26、_gun_pos();bulleti.set_bullet(gun_pos.x,gun_pos.y,1,4,direction);-shell_num;Execute.setClk(5);/時鐘延遲/切換槍的函數(shù)publicvoidshift_gun()if(Execute.getClk()=0)/時鐘延遲if(gun_type=0)gun_type=1;elsegun_type=0;Execute.setClk(5);/時鐘延遲/重生的函數(shù)publicvoidreborn()-life;hp=6;shell_num=shell_num10?shell_num:10;on_land=1;y=j
27、ump_time=attack_time=0;/初始化英雄死亡的函數(shù)publicvoidinit_die()die_time=DIE_TIME;/檢測英雄是否活著的函數(shù)publicbooleanis_alive()if(hp0)returntrue;returnfalse;/檢測是否在空中的函數(shù)publicbooleanis_in_air()/這個名字不女子/intwidth=body00.getWidth(this);Pointhero_pos=getDown_pos();if(on_land=1&Game.is_in_map(hero_pos.y/3+1,hero_pos.x/3)&Gam
28、e._maphero_pos.y/3+1hero_pos.x/3/100!=1)returntrue;returnfalse;/檢測是否在地上的函數(shù)publicbooleanis_on_land()if(on_land=0)returnfalse;returntrue;/檢測是否在下落的函數(shù)publicbooleanis_fall()if(jump_time=0&on_land=0)returntrue;returnfalse;(2)/檢測是否碰撞的函數(shù)publicstaticintis_collided(Pointp)intx=p.x/3,y=p.y/3;if(x=0&x=0&y134)re
29、turnGame._mapyx/100;return0;/游戲碰撞檢測函數(shù)privatevoidcollision_detection()/車子彈碰撞檢測for(inti=O;iVehicle.BULLET_MAX_NUM;+i)Pointbullet_pos=vehicle.bulleti.get_pos();if(vehicle.bulleti.is_exist()intid,obj=is_collided(bullet_pos);switch(obj)case0:break;case1:id=Game._mapbullet_pos.y/3bullet_pos.x/3%100;barrie
30、rid.setTough(barrierid.getTough()-1);vehicle.bulleti.setFlag(O);break;case3:id=Game._mapbullet_pos.y/3bullet_pos.x/3%100;hero.setScore(hero.getScore()+enemyid.getType()*1000);enemyid.setHp(enemyid.getHp()-1);intn=ra.nextInt(4)+1;music.enemydiesound(n);vehicle.bulleti.setFlag(O);break;/英雄的子彈碰撞檢測for(i
31、nti=0;i0)switch(enemyi.getType()case1:case2:barrierid.setTough(barrierid.getTough()-l);break;case3:barrierid.setTough(barrierid.getTough()-2);break;enemyi.bulletj.setFlag(O);break;case2:if(hero.getHp()0)switch(enemyi.getType()case1:case2:hero.setHp(hero.getHp()-1);break;case3:hero.setHp(hero.getHp()
32、-2);break;if(hero.getHp()=0)hero.init_die();enemyi.bulletj.setFlag(O);break;/坦克子彈碰撞檢測for(inti=O;ivTank.BULLET_MAX_NUM;+i)if(tank.bulleti.is_exist()Pointbullet_pos=tank.bulleti.get_pos();intid,obj=is_collided(bullet_pos);switch(obj)case0:break;case1:id=Game._mapbullet_pos.y/3bullet_pos.x/3%100;if(bar
33、rierid.getTough()0)barrierid.setTough(barrierid.getTough()-3);tank.bulleti.setFlag(O);break;case2:if(hero.getHp()0)hero.setHp(hero.getHp()-3);if(hero.getHp()=0)hero.init_die();tank.bulleti.setFlag(O);break;車碰撞檢測if(hero.getIn_vehicle()=l)Pointvehicle_pos=vehicle.get_vehicle_pos();intid,obj=is_collide
34、d(vehicle_pos);switch(obj)case0:break;case1:id=Game._mapvehicle_pos.y/3vehicle_pos.x/3%100;barrierid.setTough(0);break;case3:id=Game._mapvehicle_pos.y/3vehicle_pos.x/3%100;enemyid.setHp(O);intn=ra.nextInt(4)+1;music.enemydiesound(n);break;英雄碰撞檢測if(hero.getIn_vehicle()=0)前面碰撞檢測intid,obj,blocked=0,hig
35、ht=78;Pointhero_pos=hero.getFront_pos();for(inti=hero_pos.y/3;iv(hero_pos.y+hight)/3;+i)if(Game.is_in_map(i,hero_pos.x/3)id=Game._mapihero_pos.x/3%100;obj=is_collided(newPoint(hero_pos.x,i*3);switch(obj)case1:blocked=1;break;case4:if(mineid.is_exist()hero.setHp(hero.getHp()-2);if(hero.getHp()=0)hero
36、.init_die();mineid.init_bang();break;case5:hero.setScore(hero.getScore()+barrierid.getGift()*5000);switch(barrierid.getGift()case1:hero.setHp(hero.getHp()+1);break;case2:hero.setHp(hero.getHp()+2);break;case3:hero.setShell_num(hero.getShell_num()+1);break;case4:hero.setLife(hero.getLife()+1);barrier
37、id.setGift(0);break;&case6:if(hero.is_alive()tank.motoid.getAttack()=1)hero.setHp(hero.getHp()-3);if(hero.getHp()=0)hero.init_die();tank.motoid.setAttack(0);break;hero.setBlocked(front,blocked);后面碰撞檢測blocked=0;hero_pos=hero.getBack_pos();for(inti=hero_pos.y/3;iv(hero_pos.y+hight)/3;+i)if(Game.is_in_
38、map(i,hero_pos.x/3)id=Game._mapihero_pos.x/3%100;obj=is_collided(newPoint(hero_pos.x,i*3);switch(obj)case1:blocked=1;break;case4:if(mineid.is_exist()hero.setHp(hero.getHp()-2);if(hero.getHp()=0)hero.init_die();System.out.println(hero.getHp();mineid.init_bang();break;case5:hero.setScore(hero.getScore
39、()+barrierid.getGift()*5000);switch(barrierid.getGift()case1:hero.setHp(hero.getHp()+1);break;case2:hero.setHp(hero.getHp()+2);break;case3:hero.setShell_num(hero.getShell_num()+1);break;case4:hero.setLife(hero.getLife()+1);barrierid.setGift(0);break;&case6:if(hero.is_alive()tank.motoid.getAttack()=l
40、)hero.setHp(hero.getHp()-3);if(hero.getHp()=0)hero.init_die();tank.motoid.setAttack(0);break;hero.setBlocked(back,blocked);下面碰撞檢測blocked=0;hero_pos=hero.getDown_pos();obj=is_collided(hero_pos);if(obj=1IIhero_pos.y324)blocked=1;hero.setBlocked(down,blocked);publicvoidupdate(Graphicsg)if(iBuffer=null)iBuffer=createImage(this.getSize().width,this.getSize().height);gBuffer=iBuffer.getGraphics();if(logo_time0)logo.draw(gBuffer);-logo_time;elseif(gameover_time0)gameover.draw(gBuffer);-gameover_time;if(gameover_time=0)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版城市道路監(jiān)控設(shè)備升級改造工程承包合同3篇
- 2024年租賃期滿續(xù)租合同范本:辦公場地續(xù)租標(biāo)的為5年租期
- 二零二五年度體育賽事運營合作合同3篇
- 2025年度辦公樓租賃合同租賃雙方信息變更通知協(xié)議3篇
- 二零二五年度凈水器產(chǎn)品售后服務(wù)網(wǎng)點建設(shè)合同3篇
- 二零二五年度區(qū)塊鏈技術(shù)應(yīng)用開發(fā)合同范本正規(guī)范本2篇
- 派遣員工勞動合同管理制度
- 青島市中外貨物買賣合同
- 2025年同學(xué)聚會的發(fā)言稿范例(2篇)
- 中心供氧系統(tǒng)重大事故應(yīng)急預(yù)案樣本(2篇)
- 教代會會場背景(紅旗)圖片課件
- 腦出血護理查房-中醫(yī)院
- 森林生態(tài)系統(tǒng)固碳現(xiàn)狀、速率、機制和潛力研究實施方案細(xì)則
- 公眾責(zé)任保險知識培訓(xùn)教育課件
- 深基坑事故案例
- 中國茶文化(中文版)
- 02J401鋼梯安裝圖集
- 川省成都市2022屆高二上學(xué)期期末考試:英語
- 人教版小學(xué)三年級語文上冊第三單元集體備課活動記錄
- 消防安全操作規(guī)程
- 水利水電工程危險源辨識與風(fēng)險評價一覽表
評論
0/150
提交評論