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

正文內(nèi)容

基于java的坦克大戰(zhàn)游戲開(kāi)發(fā)論文(編輯修改稿)

2025-01-06 23:26 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 操作自己的坦克消滅敵人坦克,消滅所有敵人坦克后游戲南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 9 結(jié)束。 基于 Java 語(yǔ)言的各種特性,本軟件使用 Java 語(yǔ)言進(jìn)行開(kāi)發(fā),并最終完成當(dāng)初的設(shè)計(jì)要求,所有的程序以及程序功能如表 31 所示 表 31 程序功能表 程序名 程序功能 游戲的主窗口 坦克的數(shù)據(jù)和方法 炮彈的數(shù)據(jù)和方法 爆炸的數(shù)據(jù)和方法 墻的數(shù)據(jù)和方法 血塊的數(shù)據(jù)和方法 程序 運(yùn)行 流程 程序中炮彈的運(yùn)行和流程 炮彈繼承了 Missile,運(yùn)行在獨(dú)立的線程中 ,它擁有一個(gè)很重要的變量 ,good。它標(biāo)識(shí)了子彈是屬于玩家的還是敵人的 ,這樣可以控制子彈再脫離坦克后的運(yùn)行狀 態(tài)中的行為 ,其中主要功能流程圖見(jiàn)圖 31 流程圖 當(dāng)擊中了需要做出反應(yīng)的物體時(shí) ,就分別采取措施 :擊中墻時(shí) ,子彈生命就結(jié)束 ,不再繼續(xù)畫(huà) .如果沒(méi)有擊中物體 ,就繼續(xù)檢測(cè)是否擊中了坦克 ,這根據(jù)子彈的來(lái)源分為兩種情況 .當(dāng)來(lái)自玩家時(shí) ,檢測(cè)是否與敵人碰撞 ,發(fā)生碰撞時(shí) ,將敵人從List 中移走,并置為空,產(chǎn)生爆炸效果,敵人數(shù)量減少一位,敵人屏幕上數(shù)量減少一位。如果是來(lái)自敵人的子彈,將同樣檢測(cè)與玩家坦克的碰撞,如有碰撞,玩家生命就減少,當(dāng)生命值為 0 時(shí),就死亡了。 下圖為炮彈運(yùn)行的主要流程: 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 10 圖 21炮彈運(yùn)行 流程圖 開(kāi)始 是否出界 擊中墻,不再畫(huà)子 彈 擊中物體 玩家子彈 擊中敵人 敵人子彈 擊中玩家 開(kāi)始 Y Y N N N N N N 消除敵人 消除玩家 Y Y Y Y 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 11 文字描述 敵方坦克運(yùn)行流程 圖 22 敵方 tank 運(yùn)行 流程圖 是否 碰墻 開(kāi)始 可否前進(jìn) 前進(jìn) 是否開(kāi)炮 是否已死 換向 開(kāi)炮 結(jié)束 N N Y Y N N Y 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 12 第三章 系統(tǒng)總體設(shè)計(jì) 主體模塊 該模塊由 文件實(shí)現(xiàn) ,負(fù)責(zé)調(diào)用各個(gè)類。創(chuàng)建游戲窗口。 該類中的變量如表 31 所示。 表 31 Tankclient 類中成員變量表 成員變量描述 變量類型 名稱 整個(gè)游戲的寬度 int GAME_WIDTH 整個(gè)游戲的高度 int GAME_HEIGHT 該類中包 括 lauchFrame( ), paint( ), update( )三個(gè)方法,其功能表如表 32 表 32 Tankclient 類中方法表 方法 功能 備注 lauchFrame() 顯示坦克主窗口 無(wú)備注 paint(Graphics g) 重畫(huà)時(shí)調(diào)用 無(wú)備注 update(Graphics g) 使用雙緩沖消除閃爍現(xiàn)象 無(wú)備注 子彈模塊 該模塊由 文件實(shí)現(xiàn) ,實(shí)現(xiàn)子彈的各個(gè)功能,實(shí)現(xiàn)打坦克,實(shí)現(xiàn)子彈是否活著的功能。 該類中的變量如表 33 所示。 表 33 Missile 類中成員變量表 成員變量描述 變量類型 名稱 子彈在 X 方向上的速度 int XSPEED 子彈在 Y 方向上的速度 int YSPEED 子彈的高度 int HEIGHT 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 13 該類中包括 hitTank( ), Islive( )二個(gè)方法,其功能表如表 34 表 34 Missile 類中方法表 方法名 功能 備注 hitTank(Tank t) 實(shí)現(xiàn)子彈撞坦克的功 能 無(wú)備注 Islive() 實(shí)現(xiàn)判斷子彈是否活著的功能 無(wú)備注 坦克模塊 該模塊由 文件實(shí)現(xiàn) , 創(chuàng)建坦克,打子彈, 打多 發(fā)子彈。處理坦克和墻相撞的問(wèn)題。坦克不能相互穿越。加入主戰(zhàn)坦克的生命值。擊斃敵人坦克。讓坦克更加智能。 該類中的變量如表 35 所示 表 35 Tank 類中成員變量表 成員變量描述 變量類型 名稱 坦克在 X 方向上的速度 int XSPEED 坦克在 Y 方向上的速度 int YSPEED 坦克的高度 int HEIGHT 該類中包括 collidesWithWall( ), Eat( )二個(gè)方法,其功能表如表 36 表 36 Tank 類中方法表 方法名 功能 備注 collidesWithWall(Wall w) 處理坦克和墻相撞的問(wèn)題 無(wú)備注 Eat(Blood b) 坦克吃血,增長(zhǎng)生命 無(wú)備注 墻模塊 該模塊由 文件實(shí)現(xiàn) ,添加兩堵墻, 處理坦克和墻相撞的問(wèn)題 。該類中的變量如表 37 所示。 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 14 表 37 Wall 類中成員變量表 成員變量描述 變量類型 名稱 坦克在 X 方向上的速度 int XSPEED 坦克在 Y 方向上的速度 int YSPEED 坦克的高度 int HEIGHT 該類中包括 collidesWithWall( )一個(gè)方法,其功能表如表 38 表 38 Wall Tank 類中方法表 方法名 功能 備注 collidesWithWall(Wall w) 處理坦克和墻相撞的問(wèn)題 無(wú)備注 血液模塊 該模塊由 文件實(shí)現(xiàn) ,添加必要的方法,讓血塊按照一定軌跡運(yùn)動(dòng),并在一定時(shí)間消失 。 該類中的變量如表 39 所示。 表 39 Blood 類中成員變量表 成員變量描述 變量類型 名稱 血塊在 X 軸的坐標(biāo) Int X 血塊在 X 軸的坐標(biāo) Int Y 血塊的寬度 Int W 血塊的高度 Int H 該類中包括 Move(), islive()二個(gè)方法,其功能 表如表 310 所示。 表 310 Blood Tank 類中方法表 方法名 功能 備注 Move() 處理血塊移動(dòng)的問(wèn)題 無(wú)備注 islive() 判斷血塊是否活著 無(wú)備注 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 15 爆炸模塊 該模塊由 文件實(shí)現(xiàn) ,擊斃一輛坦克后產(chǎn)生爆炸。 該類中的變量如表 311 所示。 表 311 Explode 類中成員變量表 成員變量描述 變量類型 名稱 坦克生死的描述 boolean Live 主類的變量 TankClient Tc 該類中包括 GetDefaultToolkit(), Draw(Graphics)二個(gè)方法,其功能表如表312 表 312 Explode 類中方法表 方法名 功能 備注 GetDefaultToolkit() 拿到的工具包 無(wú)備注 Draw(Graphics) 畫(huà)爆炸現(xiàn)象 無(wú)備注 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 16 第四章 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 游戲窗口與我方坦克 1)窗口 產(chǎn)生一個(gè)窗口 , 添加關(guān)閉窗口的事件處理 , 不允許窗口的大小改動(dòng) 。通過(guò)如下代碼實(shí)現(xiàn)。 圖 41游戲窗口 import .*。 import .*。 public class TankClient extends Frame { public void lauchFrame() { (400, 300)。 (800, 600)。 (TankWar)。 (new WindowAdapter() { public void windowClosing(WindowEvent e) { (0)。 } 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 17 })。 (false)。 setVisible(true)。 } public static void main(String[] args) { TankClient tc = new TankClient()。 ()。 } } 2)畫(huà)出代表坦克的實(shí)心圓 重寫(xiě) paint 方法 。 注意:不要改變?cè)瓉?lái)的前景色 圖 42 單個(gè)坦克 public void paint(Graphics g) { Color c = ()。 ()。 (50, 50, 30, 30)。 (c)。 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 18 } 3)讓坦克動(dòng)起來(lái) 將位置改變?yōu)樽兞?, 啟動(dòng)線程不斷重畫(huà) , 線程重畫(huà)更均勻,更能控制重畫(huà)的速度。按鍵重畫(huà)不能解決子彈自動(dòng)飛行的問(wèn) 題。 每次重畫(huà)改變 Tank 位置 。 注意: x, y 值得含義,指的是小方塊的左上角點(diǎn) 。 圖 43 單個(gè)坦克移動(dòng) private class PaintThread implements Runnable { public void run() { while(true) { repaint()。 try { (100)。 } catch (InterruptedException e) { ()。 } } } } 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 19 4)使用雙緩沖消除閃爍現(xiàn)象 原因 :刷心重畫(huà)頻率太快, paint 方法還沒(méi)有完成,逐條顯示。 解決: 將所有東西畫(huà)在虛擬圖片上,一次性顯示出來(lái)。 圖 44 消除閃爍 public void update(Graphics g) { if(offScreenImage == null) { offScreenImage = (800, 600)。 } Graphics gOffScreen = ()。 Color c = ()。 ()。 (0, 0, 800, 600)。 (c)。 paint(gOffScreen)。 (offScreenImage, 0, 0, null)。 } 5)讓坦克聽(tīng)從我們的指揮 添加鍵盤(pán)監(jiān)聽(tīng)類 KeyMonitor, TankClient 添加鍵盤(pán)監(jiān)聽(tīng)器 , 針對(duì)不 同的鍵改變坦克位置 ,與重畫(huà)線程結(jié)合產(chǎn)生不同方向運(yùn)動(dòng)。 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 20 注意: switch case 語(yǔ)句中 break 語(yǔ)句的運(yùn)用 圖 45 手動(dòng)移動(dòng)坦克 private class KeyMonitor extends KeyAdapter { public void keyPressed(KeyEvent e) { int key = ()。 switch(key) { case : x = 5。 break。 case : y = 5。 break。 case : x += 5。 break。 case : y += 5。 break。 } 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 21 } } 6)將坦克單獨(dú)包裝成類 建立 Tank 類 , 為 Tank 類添加成員變量 x y, 添加 draw 方法,使 Tank 類獨(dú)立, 制自己的畫(huà)法 , 添加 Tank 類處理按鍵的方法 , 根據(jù) Tank 類修改TankClient 類 。 7)讓主戰(zhàn)坦克向 8 個(gè)方向行走 添加記錄按鍵狀態(tài)的布爾量 , 添加代表方向的量(使用枚舉) , 根據(jù)按鍵狀態(tài)確定 Tank方向 , 根據(jù)方向進(jìn)行下一步的移動(dòng)( move)。處理鍵抬起的消息修改 TankClient 相關(guān)代碼 。 圖 46 八方向移動(dòng) public void keyPressed(KeyEvent e) { int key = ()。 switch(key) { case : bL = true。 break。 case : 南京工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 22 bU = true。 break。 case : bR = true。 break。 case : bD = true。 break。 } locateDirection()。 } 子彈 與一輛敵人坦克 1)添加子彈類 添加 Missile 類 , 添加 x,y,dir 等屬性以及常量 .添加構(gòu)造方法 , draw 方法等必要方法 , 根據(jù)不同方向,進(jìn)行不同的運(yùn)動(dòng) , 在 TankClient 中模擬一顆子彈 注意:不一定一次寫(xiě)到位 。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1