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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于java的坦克大戰(zhàn)軟件程序設(shè)計(jì)(完整版)

2025-01-21 09:51上一頁面

下一頁面
  

【正文】 的共同行為 ........................................ 22 玩家坦克的功能屬性 .................................... 23 敵人坦克的功能屬性 .................................... 24 子彈擊中坦克的爆炸 .................................... 25 記分系統(tǒng) .............................................. 27 本章小結(jié) : ............................................. 28 第四章 總 結(jié) ............................................. 28 本程序的總結(jié)和展望 ..................................... 28 經(jīng)驗(yàn)和感想 ............................................ 29 參考文獻(xiàn) ...................................................... 30 4 第 一 章 程序結(jié)構(gòu)、思想和相關(guān)技術(shù) 本程序需解決的有關(guān)技術(shù)問題 1. 坦克大戰(zhàn)是一個(gè)可大可小的游戲,想法靈活可以編寫出很多功能 , 所以需要對(duì)程序的要求量應(yīng)該是巨大的,但是 其代碼利用率很高 ,因此實(shí)際編寫時(shí)也不需要太多的絞盡腦汁 ,可以利用各模塊程序的相近性靈活運(yùn)用 。敵方子彈僅需要掃描用戶坦克,而用戶坦克需要在每一步掃描所有的敵方坦克。如何采用合理的記分標(biāo)準(zhǔn),需要進(jìn)行適當(dāng)?shù)脑O(shè)計(jì)。 在屏幕重繪的主程序中,將在每次的循環(huán)中判斷若干事件 。 jmi2 =new JMenuItem(退出游戲 (E))。 (exit)。當(dāng)然我們的這個(gè)坦克大戰(zhàn)游戲的實(shí)現(xiàn)肯定離不開線程,例如己方坦克是必須要會(huì)移動(dòng)的,那么敵人坦克也要移動(dòng),子彈呢?當(dāng)然也要會(huì)移動(dòng),等等 ? 。 } catch (Exception e) { 7 ()。 break。 //畫出下面的矩形 (x, y+15, 30, 5, false)。 // (x+5, y+10, 10, 10)。 break。 所以本次 程序 是這樣安排的 :當(dāng)碰撞到障礙物或邊界時(shí)立即轉(zhuǎn)向,但 碰到玩家坦克時(shí)需要有一個(gè)等待的時(shí) 間,這個(gè)時(shí)間由碰撞前隨機(jī)取得的在某方向上的持續(xù)行走步數(shù)決定 (程序規(guī)定坦克走一定的路程后必須轉(zhuǎn)向其他方向,不然就不一直按照之前的方向一直走下去) ,當(dāng)發(fā)生坦克間碰撞時(shí),此隨機(jī)數(shù)將在下一次循環(huán)前減少為原來的 2/3,這樣就實(shí)現(xiàn)了加快轉(zhuǎn)向的時(shí)間,避免死鎖在一個(gè)方向上靜止的停留過長的時(shí)間。 ()。 int color。 } public void setY(int y) { = y。 switch() { case 0: //我的坦克向上 //取出所有的敵人坦克 for(int i=0。amp。=et.y+30) { return true。 } if(+20=amp。 case 1: //坦克向右 //取出所有的敵人坦克 for(int i=0。amp。+20=+30) { return true。 } if(+30=amp。 case 2: //坦克向下 //取出所有的敵人坦克 for(int i=0。amp。+30=+30) { return true。 } 16 if(+20=amp。 case 3: //向左 //取出所有的敵人坦克 for(int i=0。amp。+20=et.y+30) { return true。 } if(=amp。 } return b。 最后 子彈對(duì)不同障礙物將有不同的反映。 ()。)。 (saveExit)。 (jmil)。 第 三 章 程序 分析和具體實(shí)現(xiàn) 游戲進(jìn)入前的面板設(shè)計(jì)分析 每個(gè) MIDlet 程序都必須有一個(gè)主類,該類必須繼承自 MIDlet。Alert 對(duì)象用于顯示提示、警告等告之用戶信息的臨時(shí)閃現(xiàn)的屏幕,它可作為setCurrent的參數(shù),提前顯示在最終需要顯示的屏幕前。 在設(shè)置好mandlistener 后,需要調(diào)用 setCommandListener()以將按鈕事件激活 。 本程序設(shè)置為 20毫秒。 還需保存的變量有,游戲開始時(shí)間、結(jié)束時(shí)間(用于統(tǒng)計(jì)分?jǐn)?shù))、敵人的總數(shù)、屏幕上敵人的數(shù)量、下一個(gè)敵人需要出現(xiàn)的位置(總共允許在三個(gè)不同的位置出現(xiàn),分別位于屏幕的左、中、右方)、游戲是否已成功結(jié)束或是否已死亡 。 地圖文件可用十六進(jìn)制的文本編輯器生成,如本程序使用的 Ultraedit。 構(gòu)造坦克時(shí),將把坦克的 png 圖片作為參數(shù)傳遞給 EnemySprite 和 UserSprite,BattleCanvas 中創(chuàng)建坦克僅調(diào)用 createEnemy()和 createUser()實(shí)現(xiàn)。提供新坦克之前,在屏幕上設(shè)置了一個(gè)專用指示的閃光符號(hào) ,它繼承了 Sprite,運(yùn)行在單獨(dú)的線程中。 在檢測用戶輸入的 input()函數(shù)中,當(dāng)按方向鍵時(shí),玩家坦克就將向不同的方向運(yùn)行,這調(diào)用了UserSprite 的 go()函數(shù) ;當(dāng)開炮時(shí),就調(diào)用其fire()函數(shù),作出相應(yīng)的行為。在程序中調(diào)用了 getNullEnemyIndex()進(jìn)行測試,當(dāng)返回為 1 時(shí)說明沒有序號(hào)可以分配,否則,將返回空的序號(hào)。 canPass()函數(shù)將返回坦克是否能夠向前前進(jìn),考慮到的因素有邊界、障礙物。這些都由坦克傳遞給子彈。在 setShootCheck()的參數(shù)中,傳給子彈的是敵人的數(shù)組,子彈的對(duì)象就被確定了。 當(dāng)可以行走時(shí),就在當(dāng)前方向的坐標(biāo)上增加或減少一個(gè)象素。 其主要功能流程圖見圖 48。 return (())%4+1。這樣,它們才可以自動(dòng)檢測自己是否與同伴發(fā)生了碰撞,以便采取躲避、轉(zhuǎn)向等行動(dòng)。如果一出現(xiàn),出口就被堵死,顯然,不能永遠(yuǎn)不出現(xiàn),那就應(yīng)采取其他的辦法,否則兩輛坦克將因?yàn)槎继幵谂鲎矤顟B(tài)中而無法移出。其他的隨機(jī)值也應(yīng)當(dāng)重置。 checkHit(int x,int y)調(diào)用了 getTileIndex(x,y)獲取當(dāng) 前子彈擊中的是什么障礙物,如果返回了 false 就表示沒有擊中任何東西。 (x =5) amp。在隨后的checkHit(RIGHT)調(diào)用中,它將檢測它是否在 x+3點(diǎn),即 160 點(diǎn)擊中了某個(gè)障礙物, 但是 160/8=20。 這根據(jù)子彈的來源分為兩種情況。 這將會(huì)是很荒唐的場面。首先將循環(huán)調(diào)用(NoName) 和 (0),將記錄中的條目的用戶名置為NoName,所有的分?jǐn)?shù)置為 0。并將所有相關(guān)的 InputStream 的繼承類用close()關(guān)閉,以便釋放內(nèi)存資源。因此完成的時(shí)間越短,得到的分?jǐn)?shù)就越高。 本章小結(jié) : 第 三 章中 按照相應(yīng)的步驟 描述了所有關(guān)鍵類的具體算法實(shí)現(xiàn),引用了相關(guān)函數(shù)進(jìn)行了具體流程的解釋,并對(duì)原理稍復(fù)雜的函數(shù)做了詳細(xì)的分析。 2. 敵人的人工智能 變化較少,不夠理想 。 3. 當(dāng)坦 克在草叢中時(shí),對(duì)方坦克發(fā)出的子彈不能將其擊毀。 相比一些數(shù)據(jù)庫軟件,游戲的設(shè)計(jì)有很多人情色彩和藝術(shù)思想的發(fā)揮, 正式商業(yè)的軟件的人性化界面和各個(gè)游戲間迥異的 結(jié)構(gòu)每每會(huì)讓人有去開發(fā)的沖動(dòng)。Reilly publish, 2021 [7] Wireless Tool Kit, MIDP profile,Sun Micro. [8] Developing Games in Java, David Brackeen, New Riders Publishing [9] Game Architecture and Design, Andrew Rollings、 Dave Morris,Coriolis Group Books [10] [11] [12] [13] Borland Jbuilder9 Help documents,Borland corporation. [14] Creating 2D Action Games with the Game API, Sun 公司網(wǎng)頁中的Technical Articles and Tips, Jonathan Knudsen ,及其源代碼。 成功的游戲融合了三維運(yùn)算、人工智能、 音效處理等計(jì)算機(jī)多媒體的精華部分。雖然大學(xué)期間在 TC++下設(shè)計(jì)過一個(gè)俄羅斯方塊的游戲,并且 經(jīng)過反復(fù)的調(diào)試修改也達(dá)到了一定的精確性,但接手這個(gè)題目時(shí)仍感覺十分棘手。 4. 由 于每次子彈發(fā)射和每次坦克的移動(dòng)的一個(gè)象素都會(huì)對(duì)所有坦克和所有子彈進(jìn)行一次循環(huán)檢查,并由于同時(shí)開的線程比較多,使得本來運(yùn)行效率就不高的 KVM 運(yùn)行異常緩慢。 第 四 章 總 結(jié) 本程序 的 總結(jié)和展望 本程序設(shè)計(jì)實(shí)現(xiàn)了手機(jī)上以 J2ME 為平臺(tái)的坦克大戰(zhàn)游戲的開發(fā) ,采用從外部文件讀取地圖 、自動(dòng)控制敵人坦克運(yùn)行的方式進(jìn)行控制,具有一定的可玩性和復(fù)雜性。 如果通關(guān)或完全死亡后,將提示用戶按 pass按鈕跳過該屏。它將所有數(shù)據(jù)庫中的數(shù)據(jù)依次讀出,再使用drawString 以固定的格式寫出。 Score 將被循環(huán)調(diào)用 10 次,將記錄中的 10 個(gè)最高記錄初始化。因?yàn)樵诎l(fā)炮期間,坦克的再次發(fā)炮的功能是被鎖定的。如果沒有和子 彈發(fā)生碰撞,就檢測是否與敵人碰撞,發(fā)生碰撞時(shí),將敵人從 layerManager 中移除,并置為 null,產(chǎn)生爆炸效果,敵人數(shù)量減少一位,敵人屏幕上數(shù)量減少一位。此時(shí) ArrayOutOfBoundException 異常就會(huì)拋出,程序終止運(yùn)行。 (y =5) amp。爆炸效果由 tileExplode(x,y)根據(jù)需要爆炸的坐標(biāo)點(diǎn)生成,其中將一個(gè) Sprite 圖片在界面上閃現(xiàn) 150 毫秒。 在運(yùn)行在某個(gè)方向上,當(dāng)確定為 canPass時(shí),應(yīng)再檢測是否為 Beginner。(由boolean 值 destroyed 決定 ) 。 一個(gè)循環(huán)將依據(jù)敵人的序號(hào)查找 5次。將他們代入需要使用方向的函數(shù)中就可以使用了。因?yàn)閿橙说倪\(yùn)行是自動(dòng)的,需要有設(shè) 定的程序讓它可自己控制,而不像 UserSprite 完全通過 每次輸入的鍵盤信號(hào)來做出反映。有一點(diǎn)非常重要:在檢測前,需要將敵人的檢測矩形區(qū)域設(shè)置為與原來圖片一樣大小。他們可被外部調(diào)用, 以 取得生命值、死亡記數(shù)、重置位置。 接著使用 append()將子彈貼到 layerManager 上顯示出來。 getTileIndex()將檢測傳遞來的象素處是什么類型的障礙物,它將象素除以 8(即障礙物的象素寬度 ),取整,再通過 getCell()得到。 坦克的共同行為 在 TankSprite 中定義了所有坦克 (包括敵方坦克和玩家坦克 )的共同行為和 23 屬性。 效果如圖 46所示 。當(dāng)它閃光完畢后,敵人就會(huì)從閃光位置出現(xiàn)。每次循環(huán)中將檢測是否死亡,屏幕上坦克的數(shù)量,是否該過關(guān)統(tǒng)計(jì)分?jǐn)?shù),檢測用戶輸入的按鍵、重繪整個(gè)屏幕及回收垃圾內(nèi)存 (Gar
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1