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

正文內(nèi)容

畢業(yè)設計-基于java的坦克大戰(zhàn)軟件程序設計-資料下載頁

2024-12-04 09:51本頁面

【導讀】“貪吃蛇”、“俄羅斯方塊”這些簡單的游戲曾為一代接一代的游戲玩家所。并且隨著網(wǎng)絡通信技術的迅速發(fā)展,更加有趣、更為生動的游戲?qū)映霾桓F。Java語言面向?qū)ο蟮膬?yōu)勢也使得開發(fā)游戲變得非常容易,同時。eclipse平臺的優(yōu)越性也給了這類游戲程序的設計帶來了很多的優(yōu)點和方便。論文主要介紹了坦克大戰(zhàn)游戲的設計思路和實現(xiàn)過程。對背景的所有物體進行繪圖,然后利用線程以及事件監(jiān)聽機制對物體進行控制,例如坦克,從而實現(xiàn)各種功能,最后就可以構成一個活生生的坦克大戰(zhàn)游戲了。響力,對豐富人們的生活內(nèi)容、提供快捷的資訊起著不可忽視的作用。眼于java語言的優(yōu)點,開發(fā)一款可可供娛樂的游戲程序——坦克大戰(zhàn)?,F(xiàn)嚴重錯誤,甚至死循環(huán)。因此,其邏輯設計應當相當嚴謹,需將所有可能發(fā)生。的事件及意外情況考慮在設計中。數(shù)量,這需要為每個敵方開辟一個線程以便能讓其獨立運行。這需要對所有的對象有較好的控制。方坦克發(fā)出的子彈數(shù)量必須控制,不能一下發(fā)出太多顆。

  

【正文】 ,y)獲取當 前子彈擊中的是什么障礙物,如果返回了 false 就表示沒有擊中任何東西。當擊中了需要作出反映的物體時,就分別采取措施:擊中草時,由于沒有定義相關函數(shù),就不會有任何反映,會重合在草上正常通過;擊中磚塊時,將產(chǎn)生爆炸,調(diào)用 setCell 將當前塊置為空,并產(chǎn)生爆炸效果。爆炸效果由 tileExplode(x,y)根據(jù)需要爆炸的坐標點生成,其中將一個 Sprite 圖片在界面上閃現(xiàn) 150 毫秒。 爆炸效果需要將圖片 insert 進第 0層,這樣才不至于被其他景物所覆蓋,爆炸結束后layerManager 會自動相應調(diào)整。擊中鋼筋時, 將只產(chǎn)生爆炸效果。 setShootCheck(EnemySprite enemySprite[]);setUserSprite(UserSprite userSprite); setEnemySprite(EnemySprite enemySprite) 都是將相關的坦克傳入到子彈類里來,以便確認來源或攻擊目標。 在線程的循環(huán)中 while ( (x 155) amp。amp。 (x =5) amp。amp。 (y =5) amp。amp。 (y 171))作為循環(huán)的條件可以控制子彈出界的范圍。這幾項參數(shù)在編寫 時很容易出錯 。它們反映了象素級處理的技巧。如果程序在子彈已經(jīng)到達 X軸的 155 坐標時仍允許子彈繼續(xù)運行,子彈將一次性向右運行 2 個象素,到達 157 點。在隨后的checkHit(RIGHT)調(diào)用中,它將檢測它是否在 x+3點,即 160 點擊中了某個障礙物, 但是 160/8=20。地圖的 tiledLayer 對象中并不存在序號為 20的塊,最大只為 19。此時 ArrayOutOfBoundException 異常就會拋出,程序終止運行。 子彈運行中,將用 collidesWith(tiledLayer,true)測試是否碰 撞上了地圖。如果為真,就繼續(xù)檢測碰撞上了什么樣的物體。這將針對四個不同的方向分別以象素級檢測。 如果擊中了某樣物體,那么 checkHit 自然會處理,子彈的生命周期結束,以 break 退出循環(huán)。 如果沒有擊中物體,就繼續(xù)檢測是否擊中了某輛坦克。 這根據(jù)子彈的來源分為兩種情況。當來自玩家時,將首先檢測所有的敵人發(fā)出的子彈,當發(fā)生子彈間的碰撞時,用戶的子彈將被移除,雖然按照道理敵人的子彈同時也應被移除,但敵人子彈是運行在另一線程中的,應當由它自己來控制為好,用戶的子彈只需要管理好自己的狀態(tài)就可以了。如果沒有和子 彈發(fā)生碰撞,就檢測是否與敵人碰撞,發(fā)生碰撞時,將敵人從 layerManager 中移除,并置為 null,產(chǎn)生爆炸效果,敵人數(shù)量減少一位,敵人屏幕上數(shù)量減少一位。 如果是來自敵人的子彈,將同樣檢測與玩家子彈的碰撞,及與玩家坦克的碰撞如有碰撞,玩家生命數(shù)減少一位,位置重置。如果玩家生命已死亡殆盡,就需要在進行以上操作的同時將玩家坦克的位置放置到 屏幕外的部分。因為 27 layerManager 的 remove 函數(shù)并不會真正將層移除。只是用戶看不見而已。如果不放置到屏外,敵人坦克仍會被阻擋,子彈仍會再次擊中用戶坦克。 這將會是很荒唐的場面。 為了能控制一輛坦克在同一時間只能發(fā)射一發(fā)子彈,在子彈生命運行結束時候,將調(diào)用 ()恢復坦克繼續(xù)發(fā)炮的能力。因為在發(fā)炮期間,坦克的再次發(fā)炮的功能是被鎖定的。 記分系統(tǒng) 記分系統(tǒng)的功能指定在 ScoreScreen 類內(nèi)。 采用的是手機專用的一種簡化的數(shù)據(jù)庫 RMS。 在 BattleCanvas 請求調(diào)入分數(shù)統(tǒng)計的屏幕時,將首先調(diào)用 initRs()初始化一些環(huán)境變量。 (score,true)創(chuàng)建一個名為“ score”的數(shù)據(jù)庫。 隨后將分別建立 ByteArrayOutputStream 和DataOutputStream 以便實現(xiàn)多字段的記錄。首先將循環(huán)調(diào)用(NoName) 和 (0),將記錄中的條目的用戶名置為NoName,所有的分數(shù)置為 0。 score=()將所得的被寫入的數(shù)據(jù)流輸送到 score 的字節(jié)數(shù)組中。 Score 將被循環(huán)調(diào)用 10 次,將記錄中的 10 個最高記錄初始化。 getScore()函數(shù)得到所需要序號的分 數(shù) 。其中 () ,score=()將分別讀出用戶名和分數(shù),然而前者讀出后并不加以利用,因為在比較分數(shù)的過程中,并不需要用到用戶名。使用它只是為了將記錄的指針向后推移到可以讀出分數(shù)字段的位置。 insertRecord()可以將當前剛剛得到的最高成績記錄到數(shù)據(jù)庫的指定位置,將最后一名排擠出局。 其中 (i+1,record,0,)將把已讀出的當前位置的記錄寫入到下一條中,當發(fā)現(xiàn)移動完畢后當前序號即為所需要插入的位置時, 就再次調(diào)用 (name), (score),(i,record,0,),將記錄寫入。并將所有相關的 InputStream 的繼承類用close()關閉,以便釋放內(nèi)存資源。 drawList()函數(shù)繪畫出當前的屏幕分數(shù)。它將所有數(shù)據(jù)庫中的數(shù)據(jù)依次讀出,再使用drawString 以固定的格式寫出。 效果如圖 39顯示。 由于 ScoreScreen 類繼承了 Canvas,所以必須有 paint()函數(shù)。在這個在刷新屏幕時(repaint()被調(diào)用 )需要執(zhí)行的方法中,設置了一個整形的 duration,用來記錄完成一關所用的時圖 39 分數(shù)統(tǒng)計畫面 28 間。時間將根據(jù) BattleCanvas 中的 beginTime 的差除以 1000 后取整決定。 每關的分數(shù)被設置為100000/duration。因此完成的時間越短,得到的分數(shù)就越高。如果 成立,就不將當前關得到的分數(shù)加入到總分的計算里,否則就調(diào)用 totalScore=totalScore+levelScore進行累加。 如果通關或完全死亡后,將提示用戶按 pass按鈕跳過該屏。 如果需要 進入下一關,則進入本關統(tǒng)計分數(shù)的顯示。 效果如圖 310,僅停留 4 秒種,供用戶快速參考后便會跳入下一關的起始畫面 。 按鈕由 addCommand()加入,并設置了 mandListener()確定按鍵事件發(fā)生后的動作。這是低級繪圖屏幕與高級用戶界面相結合的一個應用。 當用戶的分數(shù)達到一定的高度可以寫進記錄時,將調(diào)用 inputName=new Form(Congratulations)創(chuàng)建一個新的 Form 類的屏幕,其中包括一個TextField,允許用戶輸入自己的姓名,這樣使用 getString 就可以將輸入讀 出,寫入到記錄中。 本章小結 : 第 三 章中 按照相應的步驟 描述了所有關鍵類的具體算法實現(xiàn),引用了相關函數(shù)進行了具體流程的解釋,并對原理稍復雜的函數(shù)做了詳細的分析。 對游戲 有關的 各運行界面也做了展示。 第 四 章 總 結 本程序 的 總結和展望 本程序設計實現(xiàn)了手機上以 J2ME 為平臺的坦克大戰(zhàn)游戲的開發(fā) ,采用從外部文件讀取地圖 、自動控制敵人坦克運行的方式進行控制,具有一定的可玩性和復雜性。經(jīng)過了細心的調(diào)試和排錯解決了絕大部分的問題。 但 幾乎每一個計算機 程序都會有這樣那樣的 不足,尤其是 未 經(jīng)過精心維護的非商業(yè)軟件。即使是作為操作系統(tǒng)的 各種版本的 Windows 也時常會發(fā)生 許多 類型的 錯誤和漏洞。 本游戲程序?qū)τ诔跎娲祟I域的畢業(yè)設計課題來說,尤其在開始初期,感覺邏輯復雜,難以控制,因此至今還有一些未能解決的 bug。 目前發(fā)現(xiàn)的 bug 和未完善的功能 列表如下: 1. 與敵人對子彈的時候有時候可能會出現(xiàn)當敵人死后,自己若仍在原地,圖 310 每關的分數(shù)統(tǒng)計 29 子彈會發(fā)不出去。 2. 敵人的人工智能 變化較少,不夠理想 。 3. 子彈和敵人經(jīng)常會與畫面的刷新的線程不同步,造成畫面閃爍。 4. 由 于每次子彈發(fā)射和每次坦克的移動的一個象素都會對所有坦克和所有子彈進行一次循環(huán)檢查,并由于同時開的線程比較多,使得本來運行效率就不高的 KVM 運行異常緩慢。即使刷屏沒有間隔也不會提高速度。 5. 最好有接寶物的設置 ,增強可玩性 。 6. 當敵人和自己同時死亡時,仍會過關,但 Game Over 字樣會出現(xiàn),下一關坦克不會出現(xiàn),但可以隱身發(fā)炮。 已經(jīng)解決的重要 Bug: 1. 當發(fā)出子彈到達邊界并同時還在草叢中時會拋出數(shù)組邊界異常。 2. 有時會莫名其妙的死機。 3. 當坦 克在草叢中時,對方坦克發(fā)出的子彈不能將其擊毀。 經(jīng)驗和感想 坦克大戰(zhàn)作為 課程 設計,是本人 目前做過的最大的程序 設計 。雖然大學期間在 TC++下設計過一個俄羅斯方塊的游戲,并且 經(jīng)過反復的調(diào)試修改也達到了一定的精確性,但接手這個題目時仍感覺十分棘手。 在兩年的學習中 做過很多課程設計,大多規(guī)模很小。 在數(shù)據(jù)庫、單片機、 各種應用軟件和游戲中,我仍覺得對游戲的設計有極大的熱情 。因為其各個模塊間的聯(lián)系十分緊密, 代碼重復執(zhí)行率高,當經(jīng)過無數(shù)次的調(diào)試、修改后,能最終看到成品, 有無比自豪的 心情。 大學期間做過銀 行取款機、圖書館管理程序等簡單的數(shù)據(jù)庫管理系統(tǒng) 的課程設計 , 思想大致相似,變化范圍有限,沒有太多自己可發(fā)揮的余地。大家作品的最終結果都離不開同一個模式。 相比一些數(shù)據(jù)庫軟件,游戲的設計有很多人情色彩和藝術思想的發(fā)揮, 正式商業(yè)的軟件的人性化界面和各個游戲間迥異的 結構每每會讓人有去開發(fā)的沖動。 游戲程序最大限度的利用了硬件條件,因此展現(xiàn)出的畫面往往多彩絢麗、效果驚人。 成功的游戲融合了三維運算、人工智能、 音效處理等計算機多媒體的精華部分。 本 課程 設計建立在 Java 平臺上,是本人 以前未曾接觸過的領域。憑著探索新知識的熱情 ,我選擇了該題目。 我在一星期內(nèi)寫了 15000字 ,經(jīng)過了幾次的 修改 ,終于完成了現(xiàn)在的程序 設計 。 原先認為不可能的事,我發(fā)現(xiàn),如果有不畏困難的信心和 肯鉆研的勇氣,就一定會完成,甚至達到意想不到的效果。 30 參考文獻 [1] 手機程序設計入門,王森(臺灣),中國鐵道出版社 [2] 循序漸進 Java2 教程(第三版),淡文剛 、 于紅梅 譯,人民郵電出版社 [3] MIDP 圖形編程簡介 ,Nokia 電子文檔 [4] 精通 Jbuilder9,飛思科技產(chǎn)品研發(fā)中心,電子工 業(yè)出版社, 2021 [5] Java 手機程序開發(fā),微型爪哇人,中國鐵道出版社, 2021 [6] J2ME in a Nutshell, Kim Topley, O39。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 ,及其源代碼。[15] Record Management System Basics, Eric Giguere. Sun Micro.
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1