freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于j2me的java游戲坦克大戰(zhàn)的開發(fā)畢業(yè)設(shè)計(jì)論文-閱讀頁

2025-07-03 14:39本頁面
  

【正文】 ySprite對象的內(nèi)存空間。在構(gòu)造函數(shù)自己調(diào)用了線程的start后,程序?qū)㈤_始循環(huán)運(yùn)行,直至跳出while的循環(huán)。當(dāng)敵人坦克完全死亡時(shí)(enemyNum為0),需調(diào)用System類的currentTimeMillis()賦值給結(jié)果的時(shí)間。當(dāng)然,如果當(dāng)前已是最后一關(guān),就不會(huì)再轉(zhuǎn)回。圖35 游戲結(jié)束的畫面如果游戲未結(jié)束,則需判斷屏上坦克是否已小于還剩坦克的總數(shù),如果是這樣,就需要再提供一輛坦克。以在兩秒鐘內(nèi)反復(fù)閃現(xiàn)兩次為一個(gè)生命周期。這樣可提示玩家具體敵人將在什么時(shí)刻出現(xiàn),以便做好準(zhǔn)備。本程序設(shè)置的兩次坦克出現(xiàn)的最小間隔為2秒。效果如圖45所示。在出現(xiàn)正式畫面前設(shè)置了一個(gè)loading state*字樣的單獨(dú)屏幕,調(diào)用了loadinglevel()函數(shù),并停滯了1500毫秒,提示用戶做好準(zhǔn)備。在繪圖的render()過程中,除了要重繪坦克、地圖、子彈外,還會(huì)在右邊空白處繪出一個(gè)生命統(tǒng)計(jì)欄。該三維欄的上方為白色,下方為黑色,就創(chuàng)造了立體感。在允許敵人出現(xiàn)前,需要檢測給即將出現(xiàn)的敵人分配一個(gè)數(shù)組序號。游戲的最終運(yùn)行狀態(tài)如圖47所示。EnemeySprite和UserSprite都繼承了該類以簡化結(jié)構(gòu)。構(gòu)造函數(shù)中創(chuàng)建了每個(gè)坦克必須擁有的一顆子彈,這些子彈就將只跟隨自己的坦克調(diào)動(dòng)。在setBulletDirection()中,將根據(jù)坦克當(dāng)前的方向確定子彈出膛后的方向,其中setRefPixelPosition()將子彈的參考點(diǎn)設(shè)置在其未變形狀態(tài)的底部,setXY()將其放置到炮口的位置,setTransform()將其圖片方向轉(zhuǎn)到需要使用的位置。它返回一個(gè)boolean值,提供給go()函數(shù),做進(jìn)一步的判斷。在得到障礙物屬性后,判斷其序號是否與草相同,或是否為空(序號為0)。 玩家坦克的功能屬性 構(gòu)造函數(shù)中需要將坦克方向設(shè)置為向上,因?yàn)閯偝霈F(xiàn)時(shí)就是這樣的狀態(tài)。需要聯(lián)系的還有自身坦克、地圖。因?yàn)樽訌検菍儆谔箍说模膶傩孕枰?dāng)前的坦克保持一致。最終調(diào)用其start()開始子彈自己的線程。無論子彈是屬于敵人還是玩家的,它都必須記錄自己的來源和攻擊的對象。這樣,它才能有掃描的目標(biāo)。die()、resetPosition()、getLife()都是很簡短的函數(shù),但卻提供必不可少的功能。在go()函數(shù),每個(gè)方向在走前都須用if (canPass(UP)amp。!collidesEnemy())檢測是否可以行走。collidesEnenmy檢測是否前方有坦克阻礙行動(dòng)。在collidesEnemy()函數(shù)中,將有一個(gè)for循環(huán)按照敵人數(shù)組的序號依次檢測6次。否則,當(dāng)玩家向上走,而有敵人從左方向右走,并且已經(jīng)碰撞到玩家坦克時(shí),玩家坦克會(huì)因?yàn)楸慌卸ㄒ雅c敵人發(fā)生碰撞而不允許前進(jìn)。這樣的判斷必須排除在考慮范圍外。 敵人坦克的功能屬性 由于和UserSrite同屬于一個(gè)TankSprite的繼承類,其功能就與UserSprite有很大的相似之處,但也有其自身的特別屬性。 首先,EnemySprite繼承了Runable接口。因此,它可以運(yùn)行在單獨(dú)的線程中。此函數(shù)由BattleCanvas調(diào)用。Random random=new Random(())。此時(shí)返回的值的范圍就確定在1~4之間,正好對應(yīng)四個(gè)方向。getRandomStep()的原理類似: Random random=new Random(())。只是需要乘以每秒會(huì)刷新的屏幕的次數(shù)。每個(gè)敵人還需要擁有一個(gè)內(nèi)部的所有敵人的數(shù)組元素。 collidesWithOtherTank()將檢測是否與其他坦克(包括敵人和玩家)。if(i==number)break 。collidesInOtherTank()雖與上面的函數(shù)很相似,但仍有一些細(xì)微不同,那就是不需要在檢測前設(shè)置被檢測方的矩形區(qū)域。此函數(shù)用來檢測是否在剛出現(xiàn)時(shí)就與其他坦克發(fā)生碰撞的。在運(yùn)行的線程中,需在每前進(jìn)的一步驟中循環(huán)做下列事件:如果坦克已死亡,立刻退出。如果不是剛出現(xiàn)(由isBeginner決定),判斷是否與將其他坦克發(fā)生碰撞,就向當(dāng)前方向前進(jìn)一步驟,否則,將需要循環(huán)檢測的當(dāng)前隨機(jī)步數(shù)減少為原先的2/3(為了加速離開的時(shí)間)。當(dāng)隨機(jī)發(fā)炮數(shù)減少到0時(shí),就進(jìn)行發(fā)炮的動(dòng)作。當(dāng)所有的步驟走完后,因?yàn)樾枰D(zhuǎn)動(dòng)方向,于是,調(diào)用一次隨機(jī)取得方向的函數(shù)再次獲值。在go()函數(shù)中首先檢測是否正處于碰撞狀態(tài)中,如果不是,就需要取消Beginner的狀態(tài),因?yàn)椴恍枰狟eginner這樣的特殊身份,讓別的坦克不檢測了。如果是,就不應(yīng)該受到其他坦克的影響而直接改變坐標(biāo),但若不是,就應(yīng)當(dāng)遠(yuǎn)地不動(dòng)。它擁有一個(gè)很重要的變量,isFromEnemy。其主要功能流程圖見圖49。當(dāng)擊中了需要作出反映的物體時(shí),就分別采取措施:擊中草時(shí),由于沒有定義相關(guān)函數(shù),就不會(huì)有任何反映,會(huì)重合在草上正常通過;擊中磚塊時(shí),將產(chǎn)生爆炸,調(diào)用setCell將當(dāng)前塊置為空,并產(chǎn)生爆炸效果。爆炸效果需要將圖片insert進(jìn)第0層,這樣才不至于被其他景物所覆蓋,爆炸結(jié)束后layerManager會(huì)自動(dòng)相應(yīng)調(diào)整。 setShootCheck(EnemySprite enemySprite[]);setUserSprite(UserSprite userSprite);setEnemySprite(EnemySprite enemySprite)都是將相關(guān)的坦克傳入到子彈類里來,以便確認(rèn)來源或攻擊目標(biāo)。amp。amp。amp。這幾項(xiàng)參數(shù)在編寫時(shí)很容易出錯(cuò)。如果程序在子彈已經(jīng)到達(dá)X軸的155坐標(biāo)時(shí)仍允許子彈繼續(xù)運(yùn)行,子彈將一次性向右運(yùn)行2個(gè)象素,到達(dá)157點(diǎn)。地圖的tiledLayer對象中并不存在序號為20的塊,最大只為19。 子彈運(yùn)行中,將用collidesWith(tiledLayer,true)測試是否碰撞上了地圖。這將針對四個(gè)不同的方向分別以象素級檢測。 如果沒有擊中物體,就繼續(xù)檢測是否擊中了某輛坦克。當(dāng)來自玩家時(shí),將首先檢測所有的敵人發(fā)出的子彈,當(dāng)發(fā)生子彈間的碰撞時(shí),用戶的子彈將被移除,雖然按照道理敵人的子彈同時(shí)也應(yīng)被移除,但敵人子彈是運(yùn)行在另一線程中的,應(yīng)當(dāng)由它自己來控制為好,用戶的子彈只需要管理好自己的狀態(tài)就可以了。 如果是來自敵人的子彈,將同樣檢測與玩家子彈的碰撞,及與玩家坦克的碰撞如有碰撞,玩家生命數(shù)減少一位,位置重置。因?yàn)閘ayerManager的remove函數(shù)并不會(huì)真正將層移除。如果不放置到屏外,敵人坦克仍會(huì)被阻擋,子彈仍會(huì)再次擊中用戶坦克。為了能控制一輛坦克在同一時(shí)間只能發(fā)射一發(fā)子彈,在子彈生命運(yùn)行結(jié)束時(shí)候,()恢復(fù)坦克繼續(xù)發(fā)炮的能力。 記分系統(tǒng)記分系統(tǒng)的功能指定在ScoreScreen類內(nèi)。在BattleCanvas請求調(diào)入分?jǐn)?shù)統(tǒng)計(jì)的屏幕時(shí),將首先調(diào)用initRs()初始化一些環(huán)境變量。隨后將分別建立ByteArrayOutputStream 和DataOutputStream以便實(shí)現(xiàn)多字段的記錄。score=()將所得的被寫入的數(shù)據(jù)流輸送到score的字節(jié)數(shù)組中。getScore()函數(shù)得到所需要序號的分?jǐn)?shù)。使用它只是為了將記錄的指針向后推移到可以讀出分?jǐn)?shù)字段的位置。(i+1,record,0,)將把已讀出的當(dāng)前位置的記錄寫入到下一條中,當(dāng)發(fā)現(xiàn)移動(dòng)完畢后當(dāng)前序號即為所需要插入的位置時(shí),(name), (score),(i,record,0,),將記錄寫入。drawList()函數(shù)繪畫出當(dāng)前的屏幕分?jǐn)?shù)。效果如圖39顯示。在這個(gè)在刷新屏幕時(shí)(repaint()被調(diào)用)需要執(zhí)行的方法中,設(shè)置了一個(gè)整形的duration,用來記錄完成一關(guān)所用的時(shí)間。每關(guān)的分?jǐn)?shù)被設(shè)置為100000/duration。就不將當(dāng)前關(guān)得到的分?jǐn)?shù)加入到總分的計(jì)算里,否則就調(diào)用totalScore=totalScore+levelScore進(jìn)行累加。如果需要進(jìn)入下一關(guān),則進(jìn)入本關(guān)統(tǒng)計(jì)分?jǐn)?shù)的顯示。按鈕由addCommand()加入,并設(shè)置了mandListener()確定按鍵事件發(fā)生后的動(dòng)作。當(dāng)用戶的分?jǐn)?shù)達(dá)到一定的高度可以寫進(jìn)記錄時(shí),將調(diào)用inputName=new Form(Congratulations)創(chuàng)建一個(gè)新的Form類的屏幕,其中包括一個(gè)TextField,允許用戶輸入自己的姓名,這樣使用getString就可以將輸入讀出,寫入到記錄中。對游戲有關(guān)的各運(yùn)行界面也做了展示。經(jīng)過了細(xì)心的調(diào)試和排錯(cuò)解決了絕大部分的問題。即使是作為操作系統(tǒng)的各種版本的Windows也時(shí)常會(huì)發(fā)生許多類型的錯(cuò)誤和漏洞。目前發(fā)現(xiàn)的bug和未完善的功能列表如下:1. 與敵人對子彈的時(shí)候有時(shí)候可能會(huì)出現(xiàn)當(dāng)敵人死后,自己若仍在原地,子彈會(huì)發(fā)不出去。 3. 子彈和敵人經(jīng)常會(huì)與畫面的刷新的線程不同步,造成畫面閃爍。即使刷屏沒有間隔也不會(huì)提高速度。6. 當(dāng)敵人和自己同時(shí)死亡時(shí),仍會(huì)過關(guān),但Game Over字樣會(huì)出現(xiàn),下一關(guān)坦克不會(huì)出現(xiàn),但可以隱身發(fā)炮。 2. 有時(shí)會(huì)莫名其妙的死機(jī)。 經(jīng)驗(yàn)和感想 坦克大戰(zhàn)作為課程設(shè)計(jì),是本人目前做過的最大的程序設(shè)計(jì)。在兩年的學(xué)習(xí)中做過很多課程設(shè)計(jì),大多規(guī)模很小。因?yàn)槠涓鱾€(gè)模塊間的聯(lián)系十分緊密,代碼重復(fù)執(zhí)行率高,當(dāng)經(jīng)過無數(shù)次的調(diào)試、修改后,能最終看到成品,有無比自豪的心情。大家作品的最終結(jié)果都離不開同一個(gè)模式。游戲程序最大限度的利用了硬件條件,因此展現(xiàn)出的畫面往往多彩絢麗、效果驚人。本課程設(shè)計(jì)建立在Java平臺上,是本人以前未曾接觸過的領(lǐng)域。我在一星期內(nèi)寫了15000字,經(jīng)過了幾次的修改,終于完成了現(xiàn)在的程序設(shè)計(jì)。參考文獻(xiàn)[1] 手機(jī)程序設(shè)計(jì)入門,王森(臺灣),中國鐵道出版社[2] 循序漸進(jìn)Java2教程(第三版),淡文剛、于紅梅譯,人民郵電出版社[3] MIDP 圖形編程簡介,Nokia電子文檔[4] 精通Jbuilder9,飛思科技產(chǎn)品研發(fā)中心,電子工業(yè)出版社,2004[5] Java手機(jī)程序開發(fā),微型爪哇人,中國鐵道出版社,2003[6] J2ME in a Nutshell, Kim Topley,O39。 23 [15] Record Management System Basics, Eric Giguere. Sun Micro.合肥工業(yè)大學(xué)本科畢業(yè)論文 33
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1