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

正文內(nèi)容

畢業(yè)設(shè)計基于j2me的手機游戲設(shè)計-資料下載頁

2025-06-20 13:10本頁面
  

【正文】 應調(diào)整。擊中鋼筋時,將只產(chǎn)生爆炸效果。 setShootCheck(EnemySprite enemySprite[]);setUserSprite(UserSprite userSprite);setEnemySprite(EnemySprite enemySprite)都是將相關(guān)的坦克傳入到子彈類里來,以便確認來源或攻擊目標。 在線程的循環(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自然會處理,子彈的生命周期結(jié)束,以break退出循環(huán)。 如果沒有擊中物體,就繼續(xù)檢測是否擊中了某輛坦克。這根據(jù)子彈的來源分為兩種情況。當來自玩家時,將首先檢測所有的敵人發(fā)出的子彈,當發(fā)生子彈間的碰撞時,用戶的子彈將被移除,雖然按照道理敵人的子彈同時也應被移除,但敵人子彈是運行在另一線程中的,應當由它自己來控制為好,用戶的子彈只需要管理好自己的狀態(tài)就可以了。如果沒有和子彈發(fā)生碰撞,就檢測是否與敵人碰撞,發(fā)生碰撞時,將敵人從layerManager中移除,并置為null,產(chǎn)生爆炸效果,敵人數(shù)量減少一位,敵人屏幕上數(shù)量減少一位。 如果是來自敵人的子彈,將同樣檢測與玩家子彈的碰撞,及與玩家坦克的碰撞如有碰撞,玩家生命數(shù)減少一位,位置重置。如果玩家生命已死亡殆盡,就需要在進行以上操作的同時將玩家坦克的位置放置到屏幕外的部分。因為layerManager的remove函數(shù)并不會真正將層移除。只是用戶看不見而已。如果不放置到屏外,敵人坦克仍會被阻擋,子彈仍會再次擊中用戶坦克。這將會是很荒唐的場面。為了能控制一輛坦克在同一時間只能發(fā)射一發(fā)子彈,在子彈生命運行結(jié)束時候,()恢復坦克繼續(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)多字段的記錄。(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ù)字段的位置。 分數(shù)統(tǒng)計畫面insertRecord()可以將當前剛剛得到的最高成績記錄到數(shù)據(jù)庫的指定位置,將最后一名排擠出局。(i+1,record,0,)將把已讀出的當前位置的記錄寫入到下一條中,當發(fā)現(xiàn)移動完畢后當前序號即為所需要插入的位置時,(name), (score),(i,record,0,),將記錄寫入。并將所有相關(guān)的InputStream的繼承類用close()關(guān)閉,以便釋放內(nèi)存資源。drawList()函數(shù)繪畫出當前的屏幕分數(shù)。它將所有數(shù)據(jù)庫中的數(shù)據(jù)依次讀出,再使用drawString以固定的格式寫出。效果如圖47顯示。由于ScoreScreen類繼承了Canvas,所以必須有paint()函數(shù)。在這個在刷新屏幕時(repaint()被調(diào)用)需要執(zhí)行的方法中,設(shè)置了一個整形的duration,用來記錄完成一關(guān)所用的時間。時間將根據(jù)BattleCanvas中的beginTime的差除以1000后取整決定。每關(guān)的分數(shù)被設(shè)置為100000/duration。因此完成的時間越短,得到的分數(shù)就越高。,就不將當前關(guān)得到的分數(shù)加入到總分的計算里,否則就調(diào)用totalScore=totalScore+levelScore進行累加。如果通關(guān)或完全死亡后,將提示用戶按pass按鈕跳過該屏。如果需要進入下一關(guān),則進入本關(guān)統(tǒng)計分數(shù)的顯示。僅停留4秒種,供用戶快速參考后便會跳入下一關(guān)的起始畫面。按鈕由addCommand()加入,并設(shè)置了mandListener()確定按鍵事件發(fā)生后的動作。這是低級繪圖屏幕與高級用戶界面相結(jié)合的一個應用。當用戶的分數(shù)達到一定的高度可以寫進記錄時,將調(diào)用inputName=new Form(Congratulations)創(chuàng)建一個新的Form類的屏幕,其中包括一個TextField,允許用戶輸入自己的姓名,這樣使用getString就可以將輸入讀出,寫入到記錄中。 本章小結(jié)第四章中按照相應步驟描述了所有關(guān)鍵類的具體算法實現(xiàn),引用了相關(guān)函數(shù)進行了具體流程的解釋,并對原理稍復雜的函數(shù)做了詳細的分析。對游戲有關(guān)的各運行界面也做了展示。5. 總 結(jié) 本程序的總結(jié)和展望 本程序設(shè)計實現(xiàn)了手機上以J2ME為平臺的坦克大戰(zhàn)游戲的開發(fā),采用從外部文件讀取地圖、自動控制敵人坦克運行的方式進行控制,具有一定的可玩性和復雜性。經(jīng)過了細心的調(diào)試和排錯解決了絕大部分的問題。但幾乎每一個計算機程序都會有這樣那樣的不足,尤其是未經(jīng)過精心維護的非商業(yè)軟件。即使是作為操作系統(tǒng)的各種版本的Windows也時常會發(fā)生許多類型的錯誤和漏洞。本游戲程序?qū)τ诔跎娲祟I(lǐng)域的畢業(yè)設(shè)計課題來說,尤其在開始初期,感覺邏輯復雜,難以控制,因此至今還有一些未能解決的bug。目前發(fā)現(xiàn)的bug和未完善的功能列表如下:1. 與敵人對子彈的時候有時候可能會出現(xiàn)當敵人死后,自己若仍在原地,子彈會發(fā)不出去。 2. 敵人的人工智能變化較少,不夠理想。 3. 子彈和敵人經(jīng)常會與畫面的刷新的線程不同步,造成畫面閃爍。 4. 由于每次子彈發(fā)射和每次坦克的移動的一個象素都會對所有坦克和所有子彈進行一次循環(huán)檢查,并由于同時開的線程比較多,使得本來運行效率就不高的KVM運行異常緩慢。即使刷屏沒有間隔也不會提高速度。 5. 最好有接寶物的設(shè)置,增強可玩性。6. 當敵人和自己同時死亡時,仍會過關(guān),但game over字樣會出現(xiàn),下一關(guān)坦克不會出現(xiàn),但可以隱身發(fā)炮。已經(jīng)解決的重要bug:1. 當發(fā)出子彈到達邊界并同時還在草叢中時會拋出數(shù)組邊界異常。 2. 有時會莫名其妙的死機。 3. 當坦克在草叢中時,對方坦克發(fā)出的子彈不能將其擊毀。 經(jīng)驗和感想這款游戲作為我的畢業(yè)設(shè)計,是本人目前做過的最有意義的程序,這期間對J2ME的學習,使我又回到了初學Java的時候。本科期間做過很多課程設(shè)計,大多規(guī)模很小。在數(shù)據(jù)庫、各種應用軟件和游戲中,我仍覺得對游戲的設(shè)計有極大的熱情。因為其各個模塊間的聯(lián)系十分緊密,代碼重復執(zhí)行率高,當經(jīng)過無數(shù)次的調(diào)試、修改后,能最終看到成品,有無比自豪的心情。大學期間做過學生管理程序等簡單的數(shù)據(jù)庫管理系統(tǒng)的課程設(shè)計,思想大致相似,變化范圍有限,沒有太多自己可發(fā)揮的余地。大家作品的最終結(jié)果都離不開同一個模式。相比一些數(shù)據(jù)庫軟件,游戲的設(shè)計有很多人情色彩和藝術(shù)思想的發(fā)揮,正式商業(yè)的軟件的人性化界面和各個游戲間迥異的結(jié)構(gòu)每每會讓人有去開發(fā)的沖動。本程序打包后體積23K,運行時如進行g(shù)c()內(nèi)存回收可將運行時堆內(nèi)存控制在50K以內(nèi),大小與目前大部分手機的100K左右的可使用內(nèi)存和500K左右的存儲空間。然而,回首80年代的紅白機上的坦克大戰(zhàn)原始游戲,將驚嘆那樣的商業(yè)軟件的巧奪天工。華麗的界面,出色的人工智能,流暢的運行效果、多音效、雙人操作控制,其二進制程序體積僅僅為24K。運行在12MHz,8K內(nèi)存的硬件機器上仍不失流暢性和可玩性。而許多J2ME游戲程序需要200K的運行內(nèi)存空間、200MHz的處理器,仍運行不夠流暢。機器代碼級和基于虛擬機的半解釋性處理的程序在這里得到了最大的對比。參考文獻[1] 孫衛(wèi)琴編著 《JAVA面向?qū)ο缶幊獭? 電子工業(yè)出版社 .[2] 詹建飛等著 《J2ME開發(fā)精解》 電子工業(yè)出版社 .[3] (美)??藸栔? 《》 機械工業(yè)出版社.[4] (美)莫尼遜 著編著 《J2ME手機游戲編程入門》 電子工業(yè)出版社 .[5] (美)梅特斯克,(美)韋克著 《Java設(shè)計模式》 人民郵電出版社 .[6] 張鵬等著 《JAVA手機游戲?qū)嵗謨浴? 海洋出版社 .[7] 陳剛著 《Eclipse從入門到精通》 清華大學出版社 .[8] (美)Ron patton,張小松等譯 《軟件測試》 機械工業(yè)出版社 .[9] (美)哈特姆諾著 《Java技術(shù)精髓》 機械工業(yè)出版社 .[10] .[11] [12] .[13] .[14] .[15] .致 謝首先感謝我的指導老師XX,他在我的畢業(yè)設(shè)計過程中提出了指導性的方案和架構(gòu),并指引我閱讀相關(guān)的資料和書籍,使我在不熟悉的領(lǐng)域中仍能迅速掌握新興的技術(shù)。感謝答辯組對本畢業(yè)設(shè)計的考核,如果可以得到專家的認可將對我的學習和工作給予極大的鼓勵。你們客觀的評價和建議我將牢記在心,在今后的發(fā)展中揚長避短,更加努力的嚴格要求自己。感謝學校在設(shè)計中對我的督促、鼓勵和為我創(chuàng)造的安靜環(huán)境,校園的支持永遠是個人發(fā)展的基石。本科學習中的各科老師對提高我的編程素質(zhì)有很大的幫助,我的同學在設(shè)計完成后對程序的測試,沒有他們,也許就難以發(fā)現(xiàn)一些潛在的錯誤,在此一并表示感謝。謝謝你們!附錄 :package tank。import .*。import .*。import .*。public class BattleCanvas extends GameCanvas implements Runnable{ /** Constructor */private UserSprite userSprite。private LayerManager layerManager。private EnemySprite enemySprite[]。private TiledLayer board。private Sprite gameOver。private ScoreScreen scoreScreen=new ScoreScreen()。private int enemyPosition=1。public static int enemyNum=9。 //total enemy number in current level。public static int enemyOnScreen=0。 //because one tank is served in the initialization.private String level1=/tank/。private String level2=/tank/。public static int currentLevel=1。 //define what level the game is in now.private boolean isLoading=true。 // whether game is in the state loading process。public static long beginTime。public static boolean dead=false。public static boolean pleted=false。public static long endTime。 // used to calculate how much time had been taken on a single level to determine the obtained score./*3 positions are defined at top of the screen each time theenemy es are 1,2,3 will taketurns to e out from these three ports. Default postion is 1. */ public BattleCanvas() throws IOException{ super(true)。 layerManager=new LayerManager()。 board=createTiledLayer()。 createBoard(level1)。 (board)。 userSprit
點擊復制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1