【基于java的坦克大戰游戲的設計與實現6400字(論文)】_第1頁
【基于java的坦克大戰游戲的設計與實現6400字(論文)】_第2頁
【基于java的坦克大戰游戲的設計與實現6400字(論文)】_第3頁
【基于java的坦克大戰游戲的設計與實現6400字(論文)】_第4頁
【基于java的坦克大戰游戲的設計與實現6400字(論文)】_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

摘要:小巧簡單的小游戲深受人們喜愛,如掃雷、紙牌等經典游戲長期深受用戶的喜愛。此類休閑小游戲可以在娛樂的同時調節游戲愛好者的身心健康。為此,將經典的坦克大戰小游戲進行優化。如增設了部分關卡,調整了攻擊參數,優化了部分參數,設置幾種關卡供使用者靠近,使用多線程增加了對抗的難度等。系統包括游戲開始、關卡選擇、運行選擇等幾個功能模塊,每個模塊在原有基礎上進行了化化與升級。經升級后的小游戲運行流暢、視覺沖擊感強、用戶體驗度好。經游戲愛好者實測,優化后的小游戲易于上手,娛樂性與趣味性增加。關鍵詞:面向對象坦克大戰游戲J2SE1緒論1.1選題的目的和意義P城市現代化的快節奏生活,使得現代人的壓力增長迅速。而長期的工作或學習壓力往往使得人們身習疲憊,需要一種方式來釋放自我的負面情緒或壓力,而游戲往往是最佳的選擇之一。游戲的種類很多,比如角色扮演類、射擊類、策略類、益智類或敏捷類等等,每種游戲都有自己的特點,可以實現相關的功能。以益智為主題的游戲可以鍛煉用戶的邏輯思維;以策略為主題的游戲可以促進游戲愛好者的智力發展;以敏捷為主題的游戲可以提升游戲玩家的敏捷能力。經典的小游戲長盛不衰,比如windows自帶的紙牌類游戲、掃雷游戲,自出現到如今,依然是電腦愛好者的首選游戲。各個大學計算機實驗室,大一新生學習之余往往打開紙牌或掃雷,調節一下情緒,緩解一下壓力。馬里奧游戲歷經幾十發展,依然是年青一代游戲愛好者的選擇之一。經典的飛機大戰、太空翱翔等射擊類游戲也是年青一代游戲愛好者選擇的選擇之一。另一款經典游戲坦克大戰自70年代出品以來,歷經各種機型或版本的變化,現今已然是游戲界的堅挺游戲之一。其以敏捷類為主題,在緩解游戲愛好者壓力的同時還能提升玩家的電腦使用熟練程度、運動的敏捷以及思緒的快速反映,對游戲愛好者來講,是一款不錯的游戲選擇。然而,傳統的坦克大戰小游戲也存在著多多少少不盡人意之處。比如在關卡方面選擇度較小,玩家很容易通關。在對戰坦克方面,系統隨機出現的坦克數量較少,玩家很容易完成攻擊;在攻擊對象方面,也有待優化,比如對象較單一等等。針對這些方面,擬打算對經典坦克大戰游戲進行優化。如增設了部分關卡,調整了攻擊參數,優化了部分參數,設置幾種關卡供使用者靠近,使用多線程增加了對抗的難度等。系統包括游戲開始、關卡選擇、運行選擇等幾個功能模塊,每個模塊在原有基礎上進行了化化與升級。經升級后的小游戲運行流暢、視覺沖擊感強、用戶體驗度好。經游戲愛好者實測,優化后的小游戲易于上手,娛樂性與趣味性增加。1.2系統的優點(1)游戲內容上的優點:坦克大戰游戲的設計內容沒有其他游戲那么復雜,也沒有枯燥而乏味地一直做任務。(4)技術上的優點:使用了多線程的概念,增加了對抗地難度。系統把線程分配給敵方的二十輛坦克,使其能夠單獨運轉。(5)風格上的優點:采用的是軍事化的元素,使界面更加獨特。1.3論文組織結構為了介紹坦克大戰游戲系統的設計與開發,一共分為五大方面來闡述每一階段的工作,從第二章具體布局如下:在第二章中,對開發工具及系統的架構進行簡單介紹,開發工具是eclipse,架構是j2se平臺,并對各個部分進行簡要概述。在第三章中,進行可行性分析,對系統的游戲進行分析,并規則和功能進行簡要介紹。在第四章中,進行總體設計,將坦克大戰游戲系統分為開始和退出、暫停和繼續、游戲級別、幫助四個模塊。同時設計功能模塊,分為堡壘,坦克,墻,森林,爆炸模塊,并對各模塊進行簡要介紹。在第五章中,展示了系統的具體是怎么實現的,并對功能進行詳細介紹。2開發工具及系統架構簡介2.1開發技術概述java編程java開發語言非常類似c編程語言和c++編程語言。java的編程開發語言是單純的面向對象的,它的中心就是保留了c++語言的面向對象的特點。java換掉了c編程語言里易于造成缺口的指針、重載運算符、多重繼承等等性能。加入收回垃圾器性能來接收不能夠被引用而浪費的存儲單元,讓設計開發的工作者不必由于存儲空間大小感到心煩。java發展到目前為止,對比其他的語言來說,屬于成熟語言。它的優點是易于開發,但其操作效率不如C/C++。假設對平臺沒有過高的要求的話,就可以使用java。java與傳統的編譯型運用編程語言和解釋型運用編程語言,它屬于一邊進行編譯一邊又解釋運行的半編譯半解釋型。它第一步把源代碼翻為字節代碼,第二步把代碼利用虛擬機編譯代碼。java目前最多的項目就是web設計,包括各種網站平臺的游戲,運用十分廣泛。c編程c語言是電腦開發編程,它有兩個語言上的優勢,一個是語言高級,另一個就是匯編語言。在19世紀70年代末,不管電腦的體積是大還是小,c編程都能在電腦上運行。c語言于java不同,是面向過程的語言。所以實際上java的開發效率高,c的運行效率高。由于c是基本的語言,對比java更適應計算機。很多軟件設計都是使用c,例如xp操作平臺,linux操作平臺。c++編程c++是c的升級版,結合了java的特點面向對象和c的特點面向過程。所以c++的優點是盡可能地與c相容和面向對象。c++具有c的簡單高效的語言特點,并且從c的身上汲取經驗,實行優化。所以c++相較于c來說更加具有說服力,并且c++的編程平臺可以檢測很多種錯誤。因為c是基本的語言,被人們普遍運用,所以也推動了c++的發展。但是c++編程語言十分繁復,很多人甚至看不懂是什么意思。C++的操作平臺由于其編程語言的難以理解導致運行起來也不簡單。2.2編程語言簡介java是一種能夠面向對象的編程語言,它本身具備的跨平臺的優點深受開發者的歡迎。它分為javase,javaee,javame三個版本。java具備靈活性,還有可移植性和安全性,而且開發效率高。技術開發人員也在使用這門語言,把java技術廣泛應用于個體計算機上。java平臺由java的虛擬機和java應用編程接口(api)兩者一起組成。java平臺被裝置在操作平臺上后,就可以運用java語言來實現編程。如今在很多應用程序里面都在使用java平臺。2.3j2se平臺簡介由于java編程方向的不同,一共劃分成3個樣式,即j2se(標準化),j2ee(企業化),j2me(微縮化)。j2se涵蓋的各種組件,性能體系構造和技術級別,具備通用的規范和原則,因此在j2se體系結構的多個平臺之間具有良好的兼容性。它解決了因公司后臺運用的技術互相之間不兼容,而使公司內部和外部交流變得困難的難題。j2se的體系構造,設計工作人員根據規定的標準,來使用設計開發的編程。而且不同的j2se開發商,都會遵守各種j2se中設定的開發規范,用來保證j2se系統和產品彼此雙方的相容性。換句話說,基于j2se體系構造的編程,能夠在獨立的編程服務器中完成,而且只需要使一小部分的代碼發生變化,就能夠大大增強使用編程平臺的可移植性。2.4MyEclipse軟件簡介以java語言為基底的Eclipse,是一個源代碼開放的軟件開發操作平臺。它自身就是一個框架與服務平臺,利用插件來組成開發的內容,各種插件都被包含在Eclipse中。這個軟件的最顯著的特點是:只需要安裝并且下載作用不同的插件,就能夠進行風格不一的編程設計。Eclipse能夠促進項目的設計進程,是因為它只是作為代碼編程的普通代碼編輯器,它還具有自己主動找到錯誤并且及時糾正錯誤的重要性能。3系統分析3.1可行性分析(1)游戲程序由于它的代碼重復率大,所以需要高精度的軟件編程。被設計開發出來的完整項目,其工作的每秒將運轉千百行代碼。所以,項目的邏輯設計一定要十分嚴謹,并且在設計過程中必須想出所有將要發生的事情和偶然的狀況。(2)游戲開發的時候要導入圖像,達到美觀的效果,增強視覺沖擊感。(3)用戶通過按鍵來管控坦克上下左右的操作,但是由于敵人會自動移動,就得使敵方坦克具有一定的智能性。所以,系統運用多線程的技術把線程分配給每一輛坦克。坦克受線程的控制,能夠自己獨立運轉。(4)對于敵人坦克發射的子彈的管控同樣應該注意,子彈應該位于自己的線程上。敵人的子彈只要求判斷玩家的坦克位置,玩家坦克回回都必須要判斷全部的敵方坦克在哪里。為此,就需要更好地控制界面上的對象。此外,子彈在發射過程中要判斷會不不撞在阻擋物品或界面邊界上。同時,在系統上配置的線程過多可能會降低程序運行速度。(5)隨著兩方坦克的移動,要想一下它們能否會與障礙物或另外的坦克相撞以導致界面上的物體相互疊加在一起,不要導致科學上不現實的情況,使用戶缺少了體驗感。(6)以虛擬機為基礎的半解釋形式的java編程平臺,運行效率要比所有編譯代碼平臺(如C++)的運行效率低得多。如果程序不經過簡化與優化,則系統可能無法順利運行。3.2游戲規則和系統功能介紹 在游戲中,坦克能夠在四個方向上走動。運行過程中,坦克有可能與其他坦克發生碰撞,但它們不會疊加在一起。坦克可以朝四個方位射出子彈,射出的子彈攻擊坦克使坦克爆炸。在游戲里面有阻擋物品,坦克以及子彈不可以越過阻擋物品,如果不小心讓敵人的子彈命中,則血條值就會減小,假設最后血條值是0的話,則坦克一定會爆炸,按F啟動一個新坦克游戲界面,隨機的紅心可以增強血條值。游戲的勝利是坦克來擊敗敵方坦克,而且當二十輛敵方坦克都被擊敗時,游戲完結。坦克大戰這款一對多的游戲模式,歸根結底是用戶操控自己的坦克來攻擊仇敵的坦克。這款游戲的大致性能有,坦克能夠在界面的各個地方移動,而且還可以朝仇敵射出子彈,來攻擊對方,仇敵的坦克可以四個目標方位隨機走動。假設攻擊到了對方的坦克的話,那么對方的坦克就會發生黃色的爆炸。假設自己的坦克被仇敵的坦克攻擊,就會降低血條值,但是吃掉紅心的話,就會增加自己的血條值,繼續攻擊對方。用戶的坦克和對方的坦克不能重復在一起,玩家的坦克在走到游戲界面的邊緣的時候,就不會再繼續前進了。安放阻擋的物品,并且坦克不能越過阻擋的物品。3.3程序運行表 表3.3坦克大戰信息表字段名數據類型長度說明tank行速int100speedtank寬度int100widthtank高度int50heightTank位置int200xy墻int20wall紅心int50blood3.4描述坦克運行流程坦克大戰游戲運用的是面向對象的設計方式,系統把對象分配給游戲里的一切元素。游戲開始時玩家單擊菜單選項,也可以重置游戲界面。玩家管控的坦克在主線程里操作,跟著界面重置的頻率而前行。對方的坦克要在游戲開始的那一刻慢慢添加線程,添加一個坦克便要添加一個線程。如果線程的數量增加到頂峰,便不能容許對方增加坦克。玩家的坦克從游戲開始的時候就被分配一顆子彈,子彈擁有自己的線程。即使如此,如果碰著了障礙物或者是對方的坦克的話,雖然游戲運轉失敗,但是不會去掉子彈對象,光把它的線程結束。玩家第二回射出的子彈,不過是把結束的線程第二次喚醒。在游戲運行過程中,系統要掃描許多問題。例:玩家坦克的血條值是不是沒有了,對方的坦克數量是不是零等等。圖3.4坦克運行流程圖4系統總體設計4.1總體模塊根據對游戲的調查與分析,將坦克大戰游戲系統分為開始和退出、暫停和繼續、游戲級別、幫助四個模塊。坦克大戰游戲系統的模塊劃分如圖4-1所示:圖4.1游戲總體模塊圖系統總體模塊應具有控制恢復,退出,暫停,幫助等功能,所以需要劃分菜單選項。菜單包括恢復,暫停和關閉游戲。上述性能的玩家界面位于TankClient配置方法中,而且運用面板的類方法及其監聽性能,所以十分易于完成。4.2游戲組成游戲大致由堡壘、坦克、墻、森林、爆炸五個方面來組成。具體設計情況如下:(1)坦克坦克是用戶來操作的。tank屬性:行速、tank的尺寸、tank在移動過程中的地址、tank是不是仍在運轉以及方位等。坦克前進的目標,子彈的射出和游戲的開始皆由鍵盤響應。當坦克撞到墻壁,邊界,堡壘和其他障礙物時,必須要改變方向,因此有必要針對坦克中的每個障礙物進行研究。(2)堡壘堡壘的詳細屬性是堡壘的大小、堡壘的地址以及堡壘的方位。坦克射出子彈,保護好自己的堡壘的同時,要求擊敗對方的坦克才能贏取勝利。就像森林和坦克一樣,堡壘也有它們本身的結構模塊。因為游戲可以重新開始,系統必須需要不時地進行判斷堡壘的當前狀況。游戲界面的結尾還包括清屏操作。(3)墻該墻分為基礎墻和鐵墻。子彈會損壞基礎墻,但不會損壞鐵墻。(4)森林森林主要是用于裝飾的,它是不透明的。森林具有兩個屬性:位置、長寬。(5)爆炸坦克爆炸的影響針對每個類別進行了獨立描述。爆炸的性質:地址和生存形態。再一個,游戲界面出現爆炸效果的時候是受玩家控制的。河流、樹木、房屋、墻壁等,它們是通過自己類中調用draw函數進行繪制的,最后,創建一個新的圖形板,并將所有元素添加到該板中。構造接口時,通過接口實例對象的add方法添加接口的元素,并且必須不斷更新和重繪移動的元素。5游戲的具體實現5.1功能(1)菜單項功能用戶點擊菜單選項來開始、結束、暫停、繼續以及運用幫助性能來建造新游戲。系統將詢問用戶是否要繼續使用兩個功能,即開始和結束新游戲。新游戲功能:在此模塊中實現游戲的性能的核心代碼如下所示。publicTankClient() jmb=newMenuBar(); jm1=newMenu("游戲"); jm2=newMenu("暫停/繼續"); jm3=newMenu("幫助"); jm4=newMenu("游戲級別");創建一個菜單,然后有游戲暫停繼續幫助游戲級別的選項。單擊“確定”開始新游戲,然后單擊“取消”返回到原始頁面。(2)確認是否退出:在此模塊中實現是不是要退出的核心代碼如下所示。 Object[]options={"確定","取消"};單擊確定馬上會結束游戲界面,單擊“取消”就結束退出此游戲。(3)在子彈擊中到對手的坦克后爆炸作用:在這個模塊中完成爆炸的核心代碼如下所示。for(inti=0;i<bombTanks.size();i++) BombTankbt=bombTanks.get(i); bt.draw(g);紅色圖像代表了用戶擊中坦克后發生了爆炸。當子彈撞擊基礎的墻壁時,墻壁會隱沒。(4)子彈擊中普通墻:在此模塊中實現子彈打中了普通的墻壁的核心代碼如下所示。publicbooleanhitWall(CommonWallw) if(this.live&&this.getRect().intersects(w.getRect())){ this.live=false; this.tc.otherWall.remove(w); 圖片中帶有橙色箭頭表示子彈打中了基礎墻,墻被毀了。子彈打到普通墻上,就會清除所打中的墻的部分。(5)游戲失敗:在此模塊中實現游戲輸掉跟結束的核心代碼如下所示。publicvoidgameOver(Graphicsg)g.drawString("你輸了!");g.drawString("游戲結束!");游戲失敗后使用gameover()方法完結,該方法將刪除界面上的一切東西。(6)重置游戲在此模塊中實現R鍵重置游戲的核心代碼如下所示。publicvoidkeyPressed(KeyEvente){ intkey=e.getKeyCode(); switch(key){ caseKeyEvent.VK_R: tc.tanks.clear();先是按下R鍵,然后清除之前的游戲記錄,啟動新的游戲頁面。(7)坦克撞到邊緣在此模塊中實現坦克撞到邊緣的核心代碼如下所示。if(x+Tank.width>TankClient.Fram_width) x=TankClient.Fram_width-Tank.width;坦克撞到邊緣的效果,當坦克走到邊界時就停滯不前。(8)在用戶贏得游戲后:在此模塊中實現游戲勝利的核心代碼如下所示。this.otherWall.clear();g.drawString("你贏了!");g.setFont(f);先判斷是不是贏了游戲,如果是的話界面上就會顯示你贏了。結論坦克大戰游戲系統是在windows的操作系統下,在MyEclipse上面編

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論