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

正文內(nèi)容

基于java的坦克大戰(zhàn)游戲開發(fā)論文-文庫吧資料

2024-12-09 23:26本頁面
  

【正文】 public void draw(Graphics g) { (x, y, w, h)。 = h。 = y。 TankClient tc 。} 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 30 墻、坦克互相穿越、超級炮彈和生命值 1)添加兩堵墻 建 Wall類、建立 Wall對象、畫出來 ; 讓每一顆子彈打擊每一堵墻 .hitWall()方法 注意:子彈速度不能太快,否則很容易穿過墻 ; 讓坦克不能穿過墻 . 要求 :記錄上一次的位置 oldX, oldY; 修改構(gòu)造函數(shù) ; 每次 move 之前紀(jì)錄上一次位置 ; 添加 stay 方法 ; 記錄移動前的位置 ; 當(dāng)撞到時回到移動前的位置 ; 當(dāng)碰到墻的時候 stay。 (m)。 int y = + 。 } public Missile fire() { if(!live) return null。 } step 。 int rn = ()。 if(!good) { Direction[] dirs = ()。 爆炸應(yīng)該存在于集合類中 , TankClient 加入集合 將集合中的爆炸逐一畫出(如果死去就 去除) , 擊斃一輛坦克后應(yīng)產(chǎn)生爆炸 . hitTank 時應(yīng)產(chǎn)生爆炸 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 28 圖 413 爆炸 2)添加多輛坦克 用容器來裝敵人的 Tank 向容器中裝入多輛敵人 Tank, 畫出來 , 運行,不能打掉 , 添加 hitTanks 方法,打一系列 Tank; TankClient 里面每發(fā)子彈都打tanks 3)讓敵軍坦克更加智能 讓敵軍坦克動起來 , 構(gòu)造函數(shù)中可以指定方向 , new 敵軍坦克的時候指定敵軍坦克的方向 ; 讓敵軍坦克向隨機(jī)方向移動 , (Tank)靜態(tài)的,添加隨機(jī)數(shù)產(chǎn)生器 , move 完成后,如果是敵軍坦克的,隨 機(jī)產(chǎn)生一個數(shù),來設(shè)定坦克下一個方向 , (); 讓敵軍坦克向隨機(jī)方向移動隨機(jī)的步驟 , 添加變量,記錄隨機(jī)步驟 , 當(dāng) ==0 時,改變方向,否則,只是隨機(jī)步驟遞減 ; 讓敵軍坦克發(fā)射炮彈 , 本軍炮彈不打本軍 , 炮彈添加好壞 bGood,根據(jù)好壞畫不同顏色 , 修改炮彈的構(gòu)造方法 , 修改 Tank 的 fire 方法 , 修改hitTank 方法,好不能打好,壞不能打壞 ; 敵軍炮火不能太猛烈 。 } 7)將敵人坦克擊斃 Missle 中加入 hitTank(Tank)方法返回布爾類型 , 碰撞檢測的輔助類Rectangle, 為 Tank 和 Missle 都加入 getRect 方法 ,當(dāng)擊中敵人坦克時,坦克被打死,子彈也死, 增加控制 Tank 生死的量 live, 如果死去就不畫了 。 } public Tank(int x, int y, boolean good, TankClient tc) { this(x, y, good)。 = y。 4)打出多發(fā)炮彈 使用容器裝炮彈 , 每當(dāng)抬起 Ctrl 鍵就往容器中加入新的炮彈 , 逐一畫出每一發(fā)炮彈 . 注意:泛型的使用 。 } } } 2)根據(jù)主戰(zhàn)坦克的方向和位置,打出子彈 增加對 Ctrl 鍵的按鍵處理 , 根據(jù)“坦克打出一發(fā)子彈”這句話,來確定Tank 中的方法 fire,其返回值為 Missle, 根據(jù) Tank 方向和位置設(shè)定子彈的方向和位置并 new 出來,然后返回( fire 方法的實現(xiàn)) 注意:掌握面向?qū)ο蟮乃季S方式來確定類應(yīng)該具有的方法 。 y += YSPEED。 break。 break。 case RD: x += XSPEED。 case R: x += XSPEED。 y = YSPEED。 break。 break。 case LU: x = XSPEED。 } private void move() { switch(dir) { case L: x = XSPEED。 (c)。 ()。 = dir。 public Missile(int x, int y, dir) { = x。 int x, y。 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 23 public class Missile { public static final int XSPEED = 10。 } 子彈 與一輛敵人坦克 1)添加子彈類 添加 Missile 類 , 添加 x,y,dir 等屬性以及常量 .添加構(gòu)造方法 , draw 方法等必要方法 , 根據(jù)不同方向,進(jìn)行不同的運動 , 在 TankClient 中模擬一顆子彈 注意:不一定一次寫到位 。 break。 break。 break。 break。 圖 46 八方向移動 public void keyPressed(KeyEvent e) { int key = ()。 7)讓主戰(zhàn)坦克向 8 個方向行走 添加記錄按鍵狀態(tài)的布爾量 , 添加代表方向的量(使用枚舉) , 根據(jù)按鍵狀態(tài)確定 Tank方向 , 根據(jù)方向進(jìn)行下一步的移動( move)。 break。 break。 break。 break。 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 20 注意: switch case 語句中 break 語句的運用 圖 45 手動移動坦克 private class KeyMonitor extends KeyAdapter { public void keyPressed(KeyEvent e) { int key = ()。 (offScreenImage, 0, 0, null)。 (c)。 ()。 } Graphics gOffScreen = ()。 解決: 將所有東西畫在虛擬圖片上,一次性顯示出來。 } catch (InterruptedException e) { ()。 圖 43 單個坦克移動 private class PaintThread implements Runnable { public void run() { while(true) { repaint()。 每次重畫改變 Tank 位置 。 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 18 } 3)讓坦克動起來 將位置改變?yōu)樽兞?, 啟動線程不斷重畫 , 線程重畫更均勻,更能控制重畫的速度。 (50, 50, 30, 30)。 注意:不要改變原來的前景色 圖 42 單個坦克 public void paint(Graphics g) { Color c = ()。 ()。 setVisible(true)。 } 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 17 })。 (TankWar)。 public class TankClient extends Frame { public void lauchFrame() { (400, 300)。 圖 41游戲窗口 import .*。 表 311 Explode 類中成員變量表 成員變量描述 變量類型 名稱 坦克生死的描述 boolean Live 主類的變量 TankClient Tc 該類中包括 GetDefaultToolkit(), Draw(Graphics)二個方法,其功能表如表312 表 312 Explode 類中方法表 方法名 功能 備注 GetDefaultToolkit() 拿到的工具包 無備注 Draw(Graphics) 畫爆炸現(xiàn)象 無備注 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 16 第四章 系統(tǒng)詳細(xì)設(shè)計與實現(xiàn) 游戲窗口與我方坦克 1)窗口 產(chǎn)生一個窗口 , 添加關(guān)閉窗口的事件處理 , 不允許窗口的大小改動 。 表 310 Blood Tank 類中方法表 方法名 功能 備注 Move() 處理血塊移動的問題 無備注 islive() 判斷血塊是否活著 無備注 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 15 爆炸模塊 該模塊由 文件實現(xiàn) ,擊斃一輛坦克后產(chǎn)生爆炸。 該類中的變量如表 39 所示。該類中的變量如表 37 所示。讓坦克更加智能。加入主戰(zhàn)坦克的生命值。處理坦克和墻相撞的問題。 該類中的變量如表 33 所示。 該類中的變量如表 31 所示。 下圖為炮彈運行的主要流程: 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 10 圖 21炮彈運行 流程圖 開始 是否出界 擊中墻,不再畫子 彈 擊中物體 玩家子彈 擊中敵人 敵人子彈 擊中玩家 開始 Y Y N N N N N N 消除敵人 消除玩家 Y Y Y Y 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 11 文字描述 敵方坦克運行流程 圖 22 敵方 tank 運行 流程圖 是否 碰墻 開始 可否前進(jìn) 前進(jìn) 是否開炮 是否已死 換向 開炮 結(jié)束 N N Y Y N N Y 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 12 第三章 系統(tǒng)總體設(shè)計 主體模塊 該模塊由 文件實現(xiàn) ,負(fù)責(zé)調(diào)用各個類。它標(biāo)識了子彈是屬于玩家的還是敵人的 ,這樣可以控制子彈再脫離坦克后的運行狀 態(tài)中的行為 ,其中主要功能流程圖見圖 31 流程圖 當(dāng)擊中了需要做出反應(yīng)的物體時 ,就分別采取措施 :擊中墻時 ,子彈生命就結(jié)束 ,不再繼續(xù)畫 .如果沒有擊中物體 ,就繼續(xù)檢測是否擊中了坦克 ,這根據(jù)子彈的來源分為兩種情況 .當(dāng)來自玩家時 ,檢測是否與敵人碰撞 ,發(fā)生碰撞時 ,將敵人從List 中移走,并置為空,產(chǎn)生爆炸效果,敵人數(shù)量減少一位,敵人屏幕上數(shù)量減少一位。地圖上有隨機(jī)出現(xiàn)的加生命值的血塊,吃恢復(fù)生命值滿,游戲的目的是操作自己的坦克消滅敵人坦克,消滅所有敵人坦克后游戲南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 9 結(jié)束。地圖上有障礙物,坦克和子彈都不能穿越障礙物。 游戲規(guī)則和系統(tǒng)功能介紹 游戲中坦克能向八個方向移動 ,和友方坦克碰到后不能穿越。 6).是基于虛擬機(jī)的半解釋型編譯系統(tǒng),其執(zhí)行效率較 C++等完全編譯后的程序會低很多,程序如果不進(jìn)行精簡和優(yōu)化,將可能導(dǎo)致運行的不流暢。如此過多的線程同時在本來效率就不高的機(jī)器上運行,也許會導(dǎo)致程序的緩慢。這需要對所有的 對象有較好的控制。 4).對于雙方坦克發(fā)出的子彈的控制也需要對其跟蹤控制,子彈也需要處在獨立的線程中。 3).我方的坦克的運行可以通過鍵盤響應(yīng)事件控制,但敵方則因為是自動運行,就需要有一定的智能性;同時,出現(xiàn)在屏幕上的敵方可能性會有較多的數(shù)量,這需要為每個敵方開辟一個線程以便能讓其獨立運行。因此,其邏輯設(shè)計應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件各意外情考慮在設(shè)計中。 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 8 第二章 軟件 需求分析 可行性分析 1).游戲程序是一項精度要求很高的程序系統(tǒng) ,因為其代碼利用率很高。 Eclipse SDK 由 Eclipse 項目生產(chǎn)的工具和來自其它開放源代碼的 第三方軟件 組合而成。 Eclipse SDK(軟件開發(fā)者包)是 Eclipse Platform、 JDT 和 PDE 所生產(chǎn)的組件合并,它們可以一次下載。它提供建造塊和構(gòu)造并運行集成 軟 件開發(fā)工具 的基礎(chǔ)。它主要由 Eclipse 項目、Eclipse 工具項目和 Eclipse 技術(shù)項目三個項目組成,具體包括四個部分組成—— Eclipse Platform、 JDT、 CDT 和 PDE。例如,WebSphere Studio Application Developer 添加了對 JSP、 servlet、 EJB、XML、 Web 服務(wù)和 數(shù)據(jù)庫 訪問的支持。由于 Eclipse 中的南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 7 每樣?xùn)|西都是插件,對于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。 雖然大多數(shù)用戶很樂于將 Eclipse 當(dāng)作 Java IDE 來使用,但 Eclipse 的目標(biāo)不僅限于此。 Eclipse 是一個開發(fā)源碼項 目,它其實是 Visual Age for Java 的替代品,其界面跟先前的 Visual Age f
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1