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

正文內(nèi)容

坦克大戰(zhàn)游戲的改進(jìn)設(shè)計(jì)-資料下載頁(yè)

2025-07-28 18:24本頁(yè)面
  

【正文】 個(gè)接一個(gè)的不斷出現(xiàn),其中這種小的坦克大戰(zhàn)游戲深受新一代人的歡迎。游戲中的坦克要發(fā)揮各自的威力,也“必先利其器” 。對(duì)于坦克來(lái)講,能最大程度發(fā)揮威力的莫過(guò)于坦克的炮彈了,所以《坦克大戰(zhàn)》中加深了這一概念。38第 6 章 本游戲中關(guān)鍵技術(shù)和要改進(jìn)的地方 有關(guān)繪圖的關(guān)鍵技術(shù)游戲繪圖一般需要手動(dòng)編程使用雙緩沖,需要在 paint()方法內(nèi)所想要畫的圖形畫在一張預(yù)先準(zhǔn)備好的背景,等所有繪圖操作都完成后再將背景的數(shù)據(jù)拷貝到實(shí)際的屏幕上。Image 類提供了建立背景的靜態(tài)方法 createImage(int width, int height),再利用 getGraphics()方法取得屬于這個(gè)背景的 Graphics 對(duì)象,所進(jìn)行的繪圖操作都會(huì)作用在背景上,等到全部的繪圖操作完成后,再調(diào)用drawImage()方法將背景的數(shù)據(jù)復(fù)制到實(shí)際顯示的屏幕上。這樣的技術(shù)在繪制動(dòng)畫時(shí)特別有用。繪制動(dòng)畫時(shí)經(jīng)常需要不斷地更新畫面,而更新畫面的操作就是先將屏幕以 fillRect()的方式清除,再將下一張圖片畫在屏幕上,然而反復(fù)的清除及重繪會(huì)造成屏幕的閃爍現(xiàn)象,因此使用雙重緩沖的好處就是在背景進(jìn)行這個(gè)清除及重繪的操作,再將完成的繪圖拷貝到屏幕上,由于用戶看不到清除的操作,因此就不會(huì)出現(xiàn)閃爍的現(xiàn)象了。 Graphics 類Graphics 類提供了簡(jiǎn)單的 2D 繪圖功能。它具有 24 位深度色彩的繪制能力,以三原色分別各占一個(gè)字節(jié)表示其顏色。程序只能在 paint()函數(shù)中使用Graphics 繪制,GameCanvas 可調(diào)用 getGraphics()函數(shù)直接繪制在緩沖區(qū)上,可以在任何時(shí)間請(qǐng)求傳輸?shù)角芭_(tái)。其對(duì)象會(huì)被傳給 Canvas 的 paint()函數(shù),以便最終顯示。 文件系統(tǒng)同種類的數(shù)據(jù)類型打包,以字節(jié)流的形式發(fā)送和接收。區(qū)別記錄的唯一標(biāo)記是他們的 ID 值,作為記錄集的主鍵。第一項(xiàng)記錄的 ID 是 1,其后的每個(gè)記錄 ID 遞增。Record 是以字節(jié)為基本單位來(lái)存放的,所以所有要寫入 record 的數(shù)據(jù)都必須先將其轉(zhuǎn)為字節(jié)才能寫入,從 record 所讀出來(lái)的數(shù)據(jù)也是字節(jié),必須將其轉(zhuǎn)換為原先寫入時(shí)的數(shù)據(jù)類型才有意義。然而讀取或?qū)懭氲淖止?jié)數(shù)組都只能代表一個(gè)字段的信息,如果需要讀取或?qū)懭攵鄠€(gè)字段就必須要將數(shù)據(jù)轉(zhuǎn)換成字節(jié)信息,并且提供適當(dāng)?shù)臋C(jī)制來(lái)分隔這39些信息。主要有兩種方法:。將所有要存放的數(shù)據(jù)用字符串表示,但是在字段和字段之間以一個(gè)特殊的符號(hào)作為分隔。符號(hào)不能和字段內(nèi)的數(shù)據(jù)相同的字符。2.利用輸入/輸出流這一種方法較上一種復(fù)雜,但是較為實(shí)用。方法一中所有的字段只能以字符串的形式存儲(chǔ),要對(duì)這些字段作進(jìn)一步的處理非常麻煩。利用輸入輸出流可以寫入及讀取不同數(shù)據(jù)類型的數(shù)據(jù),做法是在寫入數(shù)據(jù)時(shí)先將一個(gè)DataOutputStream 數(shù)據(jù)流對(duì)象串接到一個(gè) ArrayOutStream 數(shù)據(jù)流對(duì)象,然后再依字段的數(shù)據(jù)類型方法寫入,最后把 ByteArrayOutputStream 內(nèi)的元素?cái)?shù)據(jù)寫入record 中。反之若要讀取數(shù)據(jù),則先要串接一個(gè) DataInputStream 對(duì)象ByteArrayInputStream,依字段的數(shù)據(jù)類方法讀取。 利用緩沖技術(shù)消除閃爍現(xiàn)象(1)產(chǎn)生原因:刷新重畫頻率太快,paint 方法還沒(méi)有完成;要逐條顯示,其實(shí)使用 paint()方法,是要調(diào)用顯存中的東西,如果我們?cè)诋?tank 這,幅畫時(shí),剛畫完一半,就要刷新,即又開始畫下一個(gè)圓了,這樣就出現(xiàn)了閃爍。(2)解決的方法:將所用東西畫在虛擬的圖片上,一次性的顯示出來(lái)。首先就是利用 createimage()方法創(chuàng)建了一個(gè)虛擬的內(nèi)存屏幕,并且設(shè)置了參數(shù),就是虛擬屏幕的大小。要想把虛擬屏幕上的圖片一次性的畫到前方屏幕上的話,一定要利用前面屏幕的畫筆,這個(gè)一定要區(qū)分 Graphics g 是前方顯示屏幕的畫筆,而 graphic 為虛擬屏幕的畫筆,所以要實(shí)現(xiàn)這個(gè)把虛擬屏幕上的圖一次性畫到前方的功能,就要先獲取畫筆,利用 = graphics()來(lái)實(shí)現(xiàn)。同時(shí)要注意畫筆的顏色:Colour = .get colour 是用于保存虛擬屏幕畫筆的原來(lái)顏色。 colour (colour red )是用于設(shè)置顯示屏幕的畫筆的顏色為紅色。在利用 ()來(lái)實(shí)現(xiàn)一次性畫如顯示屏幕時(shí),是通過(guò)查詢找到的適當(dāng)方法。 方法,這里有四個(gè)參數(shù),Draw image (image ing, int x ,int y, image observer ),其中 image ing,是要畫入前方顯示屏幕的虛擬內(nèi)存中的圖片,int x ,int y 坐標(biāo),image observer 是用于觀察圖片的觀察者,這沒(méi)有太大意義,就設(shè)置為空就可以。(3)為防止閃爍現(xiàn)象,要實(shí)現(xiàn) repaint()就要調(diào)用先 update () 再 paint ()方40法,目的是利用 update 方法,先把要畫在前面實(shí)現(xiàn)屏幕上的圖片先畫在后面虛擬的屏幕上,也是就畫在緩存里面, 最后再利用 draw offscreen()一次性,將緩存里面的東西畫到前面屏幕上。這樣就能有效解決閃爍現(xiàn)象。 本程序要改進(jìn)的地方1.游戲程序是一項(xiàng)精度要求很高的程序系統(tǒng),因?yàn)槠浯a利用率很高。一個(gè)實(shí)時(shí)運(yùn)行的最終作品,每秒都會(huì)運(yùn)行成千上萬(wàn)行程序,繪圖事件、鍵盤事件都會(huì)以極高的頻率在后臺(tái)等待響應(yīng),若有絲毫的差別都將很容易導(dǎo)致程序在運(yùn)行不久后可能出現(xiàn)嚴(yán)重錯(cuò)誤,甚至死循環(huán)。因此,其邏輯設(shè)計(jì)應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計(jì)中。2.己方坦克的運(yùn)行可以通過(guò)鍵盤響應(yīng)事件控制,但敵方則因?yàn)槭亲詣?dòng)運(yùn)行,就需要有一定其一定的智能性;同時(shí),出現(xiàn)在屏幕上的敵方可能會(huì)有較多的數(shù)量,這需要為每個(gè)敵方開辟一個(gè)線程以便能讓其獨(dú)立運(yùn)行。Java 的多線程能力為實(shí)現(xiàn)這樣的游戲提供了可能。敵人坦克的運(yùn)行算法也需要進(jìn)行適當(dāng)?shù)脑O(shè)置,以免游戲過(guò)于簡(jiǎn)單,單調(diào)。3.對(duì)于雙方坦克發(fā)出的子彈的控制也需要對(duì)其跟蹤控制,子彈也需要處在獨(dú)立的線程中。敵方子彈僅需要掃描用戶坦克,而用戶坦克需要在每一步掃描所有的敵方坦克。這需要對(duì)所有的對(duì)象有較好的控制。另外,子彈在運(yùn)行過(guò)程中也需要實(shí)時(shí)掃描是否碰撞到了相關(guān)障礙物或屏幕邊界。如此過(guò)多的線程同時(shí)在本來(lái)效率就不高的 KVM 虛擬機(jī)上運(yùn)行,也許會(huì)導(dǎo)致程序的緩慢。4.雙方的坦克在前進(jìn)時(shí)也需要考慮到是否碰撞到相關(guān)物體或?qū)Ψ教箍?,以免重疊運(yùn)行,造成許多物理上不可能的情況,缺乏真實(shí)感。每一次刷新頁(yè)面、每前進(jìn)一步都需要將所有的周圍環(huán)境都進(jìn)行掃描。5.游戲的結(jié)束、開始、動(dòng)態(tài)信息畫面作為構(gòu)成一個(gè)完美程序都是必不可少的重要部分。良好的用戶界面更是吸引用戶的硬指標(biāo),相關(guān)的美術(shù)構(gòu)圖也需要有一定的考慮。如何采用合理的記分標(biāo)準(zhǔn),需要進(jìn)行適當(dāng)?shù)脑O(shè)計(jì)。記錄分?jǐn)?shù)的存儲(chǔ)方式也需要有較好的解決方案。7.Java 是基于虛擬機(jī)的半解釋型編譯系統(tǒng),其執(zhí)行效率較 C++等完全編譯后的程序會(huì)低很多,程序如果不進(jìn)行精簡(jiǎn)和優(yōu)化,將可能導(dǎo)致運(yùn)行的不流暢。除開發(fā)過(guò)程中對(duì)結(jié)構(gòu)上的控制、變量的使用、算法的優(yōu)化等優(yōu)化外,還可以使用混淆器(Obfuscator)進(jìn)行程序打包后的優(yōu)化。8. 目前發(fā)現(xiàn)的 bug 和未完善的功能列表如下:41(1)與敵人對(duì)子彈的時(shí)候有時(shí)候可能會(huì)出現(xiàn)當(dāng)敵人死后,自己若仍在原地,子彈會(huì)發(fā)不出去。(2)敵人的人工智能變化較少,不夠理想。(3)子彈和敵人經(jīng)常會(huì)與畫面的刷新的線程不同步,造成畫面閃爍。(4)由于每次子彈發(fā)射和每次坦克的移動(dòng)的一個(gè)象素都會(huì)對(duì)所有坦克和所有子彈進(jìn)行一次循環(huán)檢查,并由于同時(shí)開的線程比較多,使得本來(lái)運(yùn)行效率就不高的 KVM 運(yùn)行異常緩慢。即使刷屏沒(méi)有間隔也不會(huì)提高速度。(5)最好有接寶物的設(shè)置,增強(qiáng)可玩性。(6)當(dāng)敵人和自己同時(shí)死亡時(shí),仍會(huì)過(guò)關(guān),但 Game Over 字樣會(huì)出現(xiàn),下一關(guān)坦克不會(huì)出現(xiàn),但可以隱身發(fā)炮。 本章總結(jié)本程序設(shè)計(jì)實(shí)現(xiàn)以 J2ME 為平臺(tái)的坦克大戰(zhàn)游戲的開發(fā),自動(dòng)控制敵人坦克運(yùn)行的方式進(jìn)行控制,具有一定的可玩性。經(jīng)過(guò)了細(xì)心的調(diào)試和排錯(cuò)解決了絕大部分的問(wèn)題。但幾乎每一個(gè)計(jì)算機(jī)程序都會(huì)有這樣那樣的不足,尤其是未經(jīng)過(guò)精心維護(hù)的非商業(yè)軟件。即使是作為操作系統(tǒng)的各種版本的 Windows 也時(shí)常會(huì)發(fā)生許多類型的錯(cuò)誤和漏洞。42第 7 章 總結(jié) 本程序的總結(jié)本程序設(shè)計(jì)實(shí)現(xiàn)了以 J2ME 為平臺(tái)的坦克大戰(zhàn)游戲的開發(fā),采用自動(dòng)控制敵人坦克運(yùn)行的方式進(jìn)行控制,具有一定的可玩性和復(fù)雜性。經(jīng)過(guò)了細(xì)心的調(diào)試和排錯(cuò)解決了絕大部分的問(wèn)題。但幾乎每一個(gè)計(jì)算機(jī)程序都會(huì)有這樣那樣的不足,尤其是未經(jīng)過(guò)精心維護(hù)的非商業(yè)軟件。即使是作為操作系統(tǒng)的各種版本的 Windows 也時(shí)常會(huì)發(fā)生許多類型的錯(cuò)誤和漏洞。本游戲程序?qū)τ诔跎娲祟I(lǐng)域的畢業(yè)設(shè)計(jì)課題來(lái)說(shuō),尤其在開始初期,感覺邏輯復(fù)雜,難以控制,因此至今還有一些未能解決的 bug。 經(jīng)驗(yàn)和感想坦克大戰(zhàn)作為課程設(shè)計(jì),是本人目前做過(guò)的最大的程序設(shè)計(jì)。雖然大學(xué)期間在 java 下設(shè)計(jì)過(guò)其他項(xiàng)目,并且經(jīng)過(guò)反復(fù)的調(diào)試修改也達(dá)到了一定的精確性,但接手這個(gè)題目時(shí)仍感覺十分棘手。在五年的學(xué)習(xí)中做過(guò)很多課程設(shè)計(jì),大多規(guī)模很小。在數(shù)據(jù)庫(kù)、各種應(yīng)用軟件和游戲中,我仍覺得對(duì)游戲的設(shè)計(jì)有極大的熱情。因?yàn)槠涓鱾€(gè)模塊間的聯(lián)系十分緊密,代碼重復(fù)執(zhí)行率高,當(dāng)經(jīng)過(guò)無(wú)數(shù)次的調(diào)試、修改后,能最終看到成品,有無(wú)比自豪的心情。大學(xué)期間做過(guò)銀行取款機(jī)、圖書館管理程序等簡(jiǎn)單的數(shù)據(jù)庫(kù)管理系統(tǒng)的課程設(shè)計(jì),思想大致相似,變化范圍有限,沒(méi)有太多自己可發(fā)揮的余地。大家作品的最終結(jié)果都離不開同一個(gè)模式。相比一些數(shù)據(jù)庫(kù)軟件,游戲的設(shè)計(jì)有很多人情色彩和藝術(shù)思想的發(fā)揮,正式商業(yè)的軟件的人性化界面和各個(gè)游戲間迥異的結(jié)構(gòu)每每會(huì)讓人有去開發(fā)的沖動(dòng)。游戲程序最大限度的利用了硬件條件,因此展現(xiàn)出的畫面往往多彩絢麗、效果驚人。游戲設(shè)計(jì)是我以前從未接觸過(guò)的項(xiàng)目,憑著探索新知識(shí)的熱情,我選擇了該題目。43參考文獻(xiàn)[1] 朱福喜. Java 語(yǔ)言程序設(shè)計(jì)[M].北京清華大學(xué)出版社,.[2] 王曉敏.信息系統(tǒng)分析與設(shè)計(jì)[M].北京清華大學(xué)出版社,.[3] 許育誠(chéng).軟件測(cè)試與質(zhì)量管理[M].上海海事大學(xué),.[4] 閻宏.JAVA 與模式[M].北京電子工業(yè)出版社, .[5][美]拉曼.UML 和模式應(yīng)用.機(jī)械工業(yè)出版社,2022[6]王進(jìn).J2EE 框架深度歷險(xiǎn).東南大學(xué)出版社,2022[7]竇萬(wàn)峰.軟件工程方法與實(shí)踐.機(jī)械工業(yè)出版社,2022[8][美]朗博.UML 面向?qū)ο蠼Ec設(shè)計(jì).人民郵電出版社,2022[9]王毅.J2EE 經(jīng)典案例設(shè)計(jì)與實(shí)現(xiàn).電子工業(yè)出版社,2022[10]淡文剛,于紅梅譯.循序漸進(jìn) Java2 教程(第三版) .人民郵電出版社,2022[11]嚴(yán)蔚敏,吳偉民.?dāng)?shù)據(jù)結(jié)構(gòu)(C 語(yǔ)言版) .清華大學(xué)生出版社,2022 [12](美)維斯.?dāng)?shù)據(jù)結(jié)構(gòu)與算法分析(第 2 版) .機(jī)械工業(yè)出版社,2022 [13](美)巴拉赫, (美)蘭寶 著.UML 面向?qū)ο蠼Ec設(shè)計(jì)(第 2 版)2022 [14] 朱明方,吳及.?dāng)?shù)據(jù)結(jié)構(gòu)與算法清華大學(xué)出版社,2022 [15] 佩騰.軟件測(cè)試 (第 2 版) .機(jī)械工業(yè)出版社,2022[16] 袁玉宇.軟件測(cè)試與質(zhì)量保證.北京郵電大學(xué)出版社,2022[17] 趙斌.軟件測(cè)試技術(shù)經(jīng)典教程.科學(xué)出版社,2022
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1