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

正文內(nèi)容

基于java的游戲設(shè)計—喜洋洋大戰(zhàn)灰太狼(編輯修改稿)

2025-06-10 20:22 本頁面
 

【文章內(nèi)容簡介】 家時,如果它立即轉(zhuǎn)向,將不會對玩家發(fā)射射向他的子彈,就不構(gòu)成任何威脅,當(dāng)然,也不能永遠(yuǎn)不轉(zhuǎn)向。本程序設(shè)置為:當(dāng)碰撞到 邊界時立即轉(zhuǎn)向 。另外, 灰太狼發(fā)射子彈的 間隔和 行走的速度 都由隨機(jī)數(shù)決定。 喜羊羊與灰太狼 之間由以上道理也不會發(fā)生重疊,但當(dāng)某 灰太狼正從右 方生成而正巧有另一 灰太狼其生成點處,這將導(dǎo)致不可避免的重合,這是允許的。本程序中并未使用過多復(fù)雜的人工智能算 法,如有時間,將可能再此方面加以完善。 子彈的運行和控制 每一個 灰太狼和喜洋洋 都有他自己的一顆子彈,這顆子彈在任何一 個灰太狼和喜洋洋被構(gòu)造時就一直存在,直至此 灰太狼和喜洋洋 生命的結(jié)束,子彈的再次 生成 只是將屏幕上暫時掩蓋的圖象重新置于 灰太狼或喜羊羊的 恰當(dāng)位置,并使其顯示出來,這與現(xiàn)實中每個子彈都是單獨的個體有所不同。 子彈所需要完成的任務(wù)有: 它是一個 不斷重畫 的對象。在其出現(xiàn)在屏幕上的運行周期中,每一步都需要循環(huán)檢測以下條件: 是否與某 灰太狼或喜羊羊發(fā) 生了碰撞,即擊中了 該灰太狼或喜羊羊 。子彈使用的 是 矩形區(qū)域 的碰撞檢測, 當(dāng) 子彈接觸到物體時就碰撞的真值。分為兩種情況,如果此子彈來自于敵方,將只檢測玩家 喜羊羊 ,因為敵方之間的子彈必須允許可以透明的穿過,以保證不會在敵人之間發(fā)生子彈的消減。如果來自玩家,則每一步需掃描所有的 灰太狼 ,檢查是否發(fā)生碰撞,這可能會花費不少的 CPU 時間。 其次,子彈之間需要檢測是否碰撞。敵人之間顯然,如上已經(jīng)提過,不需要檢測,但敵人與玩家之間應(yīng)當(dāng)可以互相消除子彈,以便在狹窄的路口中仍有存活的機(jī)會。玩家的子彈需要在每一步檢測所有敵人的子彈的運行狀態(tài)。這樣較多的運算也將不可避免的耗費大量 CPU時間。 13 子彈對不同障礙物將有不同的反映。對于游戲中設(shè)置的獎品,子彈可以透明的通過,對于敵人則不可以,會發(fā)生爆炸。 內(nèi)存使用的最優(yōu) 化 通常在 MIDP 應(yīng)用程序的手機(jī)執(zhí)行環(huán)境中,所牽涉的內(nèi)存有下列三種: ﹡應(yīng)用程序存儲內(nèi)存 ﹡ RecordStore 存儲內(nèi)存 ﹡執(zhí)行時期內(nèi)存 (Java Heap) 其中前兩種是持久性的內(nèi)存,關(guān)閉電源后還能保持?jǐn)?shù)據(jù)的正確性,通常這兩種內(nèi)存所能存儲的容量是合并計算的,這個上限對每種手機(jī)都不一樣,大部分在一兩百 KB 內(nèi)。在這樣的情況下需要在不影響原有功能的情況下適當(dāng)?shù)目s減 JAR 文件的大小,除了可以克服內(nèi)存空間的限制外,也能大幅度縮短下載的時間(費用也降低了),勢必會有更多的人愿意下載所開發(fā)的程序。其方法有: 第一,就是盡量縮短命名的長度。在應(yīng)用程序內(nèi),對于所建立的類、接口、方法及變量名而言,都需要賦予一個識別的名稱,所命名的名稱每多一個字符就會在類文件內(nèi)多產(chǎn)生一個字節(jié),對于一個較復(fù)雜的應(yīng)用程序而言就會增加為數(shù)不小的數(shù)據(jù)量。所有這些可以借助混淆器來幫助實現(xiàn)。 第二是減少復(fù)雜的程序結(jié)構(gòu),為一些共同的行為建立一個抽象類 (Abstract Class) 來表示繼承的子類的共通性。 第三是減少圖形數(shù)據(jù)的大小。將 PNG 格式的小分辨率圖象合并在一張大的高分辨率圖象中,由于減少了 chunks,將比合并前的總大小減少許多。 混淆器 (Obfuscator)的使用 Java 語言并沒有完全編譯成二進(jìn)制可執(zhí)行文件,編譯出的 .class 文件是一種介于源程序和二進(jìn)制之間的一中基于半解釋的字節(jié)碼,需要虛擬機(jī)來執(zhí)行。它包括了所有的信息。然而這樣會導(dǎo)致 .class 很容易被反編譯為源代碼,從而不能保護(hù)作者的知識成果。目前流行的如 decode,JAD 等反編譯工具可以以很快的速度生成源文件。如果不 加以施行有效的措施,將造成嚴(yán)重的后果。 由此引入混淆器的概念?;煜鲗⒋a中的所有變量、函數(shù)、類的名稱變?yōu)楹喍痰挠⑽淖帜复枺绻狈ο鄳?yīng)的函數(shù)名指示和程序注釋,即使被反編譯,也將難以閱讀。 混淆器的作用不僅僅是保護(hù)代碼,它也有精簡編譯后程序大小的作用。由于以上介紹的減少變量、函數(shù)的命名長度的關(guān)系,編譯后也會從 .class 文件中減少這些冗余的信息。混淆后,體積大約能減少 25%,這對當(dāng)前費用較貴的無線網(wǎng)絡(luò)傳輸是有一定意義的。 為了能與各種 IDE 集成,就像 Java2 SDK 一樣,混淆器采用命令行參數(shù)的形 式,以便可 14 被其調(diào)用。目前流行的 Obfuscator 有 RetroGuard 等。 三 概要設(shè)計 本程序需解決的有關(guān)技術(shù)問題 1. 游戲程序是一項精度要求很高的程序系統(tǒng),因為其代碼利用率很高。一個實時運行的最終作品,每秒都會運行成千上萬行程序,繪圖事件、鍵盤事件都會以極高的頻率在后臺等待響應(yīng),若有絲毫的差別都將很容易導(dǎo)致程序在運行不久后可能出現(xiàn)嚴(yán)重錯誤,甚至死循環(huán)。因此,其邏輯設(shè)計應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計中。 2. 游戲中為了美觀,適用性強(qiáng),可能需要采用外部文件引入 的圖片貼圖,有關(guān)貼圖, 在程序中使用了 update(Graphics g)方法 ,使得解決靜態(tài)或動態(tài)、畫面背景、屏幕刷新的雙緩沖等都有較好的解決方案。 3. 玩家 可以通過鍵盤響應(yīng)事件控制,但敵方則因為是自動運行,就需要有一定其一定的智能性;同時,出現(xiàn)在屏幕上的敵方可能會有較多的數(shù)量,這需要為敵方 設(shè)置一個控制器 (隨機(jī)數(shù) )讓其獨立運行。 游戲的整個過程 需要進(jìn)行適當(dāng)?shù)脑O(shè)置,以免游戲過于簡單,單調(diào)。 4. 對于雙方發(fā)出的子彈的控制也需要對其跟蹤控制,子彈需要處在獨立的線程中。敵方子彈僅需要掃描 玩家 (喜羊羊 ),而 玩家 (喜羊羊 )需要在每一步掃描所有的 怪物 。這需要對所有的對象有較好的控制。另外,子彈在運行過程中也需要實時掃描是否碰撞到了相關(guān)障礙物或屏幕邊界。 5. 雙方在前進(jìn)時也需要考慮到是否碰撞到相關(guān)物體或?qū)Ψ?,以免重疊運行,造成許多物理上不可能的情況,缺乏真實感。每一次刷新頁面、每前進(jìn)一步都需要將所有的周圍環(huán)境都進(jìn)行掃描。 6. 游戲的結(jié)束、開始、動態(tài)信息畫面作為構(gòu)成一個完美程序都是必不可少的重要部分。良好的用戶界面更是吸引用戶的硬指標(biāo),相關(guān)的美術(shù)構(gòu)圖也需要有一定的考慮。 7. 游戲的地圖不可能通過繪圖來解決。否 則,不僅難于控制和處理過多的元素,也會因過多的大型圖片而不能限制程序的大小,失去手機(jī)上程序的原則和 Java 的優(yōu)勢。同時,地圖關(guān)卡不宜保存在手機(jī)有限的內(nèi)存中,而最好采取外部文件的讀入讀出方法。 8. 用戶運行游戲時需要有分?jǐn)?shù)記錄的可能。如何采用合理的記分標(biāo)準(zhǔn),需要進(jìn)行適當(dāng)?shù)脑O(shè)計。記錄分?jǐn)?shù)的存儲方式也需要有較好的解決方案。手機(jī)中由于處理器和內(nèi)存空間、存儲空間都十分有限,其數(shù)據(jù)庫系統(tǒng)與普通 PC 大相徑庭。其數(shù)據(jù)庫結(jié)構(gòu)較為簡單,被稱之為 RMS 系統(tǒng)。 9. Java 是基于虛擬機(jī)的半解釋型編譯系統(tǒng),其執(zhí)行效率較 C++等完全編譯后的程序會低很多,程序如果不進(jìn)行精簡和優(yōu)化,將可能導(dǎo)致運行的不流暢。除開發(fā)過程中對結(jié)構(gòu)上的控制、變量的使用、算法的優(yōu)化等優(yōu)化外,還可以使用混淆器 (Obfuscator)進(jìn)行程序打包后的優(yōu)化。 15 本程序的最終 目標(biāo) 利用 java 的聲音技術(shù)和線程技術(shù)開發(fā)制作一個喜羊羊大戰(zhàn)灰太狼的小游戲。 游戲中玩家可以通過鍵盤控制游戲 中的喜羊羊而進(jìn)行各種操作:發(fā)射子彈打怪物(按空格鍵發(fā)射普通子彈,按 B 鍵發(fā)射“大超”),八個不同的運動方向(上,下,左,右,斜上,斜下,斜左,斜右), 當(dāng)玩家死亡時, 可以按 F2 鍵原地復(fù)活及在游戲過程中,可按 F1鍵打開游戲幫助 ;玩家在游戲過程中可通過殺怪獲得積分,當(dāng)積分達(dá)到一定程度,玩家便可發(fā)射“大超”,當(dāng)玩家打死小怪之后,就有可能“吃”到“食物”,該食物分為 四 種:加血,加分,加人,發(fā)射威力較大的子彈。 當(dāng)玩家殺死怪物達(dá)到一定數(shù)量或所及的分達(dá)到一定數(shù)量時,便出現(xiàn) Boss,當(dāng)玩家殺死 Boss 時,便可升級。如果玩家在游戲過程中失敗 3 次,便結(jié)束游戲。(此時可按 F2 鍵復(fù)活)。 游戲規(guī)則: 1. 玩家通過鍵盤控制 喜羊羊在游戲區(qū)中運動。 2. 當(dāng)喜羊羊碰到怪物子彈或怪物時,便減少血量;當(dāng)喜羊羊的 血量減到為零時, 便 死亡(且減少喜羊羊人數(shù)),當(dāng)喜羊羊的人數(shù)減至零時,游戲便結(jié)束。 實現(xiàn)功能: 1. 游戲功能:玩家可以在游戲區(qū)中控制喜羊羊殺怪物。 2. 狀態(tài)提示功能:玩家能夠在游戲過程中了解喜羊羊血量,得分,等級以及喜羊羊的剩余人數(shù)。 3. 游戲控制:玩家可以通過游戲控制來復(fù)活喜羊羊,繼續(xù)游戲或暫停游戲。 運行環(huán)境 正確安裝配置了 以上 的 Windows 和 Linux 的 PC 機(jī)都可正常運行此游戲。 總體設(shè)計 整個游戲設(shè)計工作中包括:游戲設(shè)計思路,游戲結(jié)構(gòu)以及游戲整體流程。 游戲設(shè)計思路 1. 有一個起始畫面,玩家可進(jìn)入游戲。 2. 玩家 通過鍵盤可實現(xiàn)游戲操作。 3. 玩家通過殺怪獲取積分。 4. 玩家通過方向鍵來改變喜羊羊的移動方向。 5. 當(dāng)喜羊羊的剩余人數(shù)為零時,游戲結(jié)束。 6. 當(dāng)游戲分?jǐn)?shù)達(dá)到一定程度時,就可進(jìn)入下一級游戲。 游戲結(jié)構(gòu) 16 該游戲采用面向?qū)ο蟮脑O(shè)計模式,賦予游戲中的所有物體對象的概念和屬性。運行程序后進(jìn)入游戲,在開始游戲后將先從外部文件載入實物的圖像文件,對背景的所有物 體進(jìn)行繪圖。在主程序運行的線程中,畫面刷新將 以 一定 的頻率對屏幕重繪,實時反映整個游戲的進(jìn)行狀態(tài)。 類的設(shè)計 為了實現(xiàn)實現(xiàn)上述功能,就要對游戲程序進(jìn)行結(jié)構(gòu)設(shè)計,游戲整體包括五個類,分別是: GameStart 類, BaoPo 類, person 類, ZiDan 類, AePlayWave 類,這五個類依照面向?qū)ο蟮脑O(shè)計原則 ,他們都是游戲中的對象。 游戲開始后,先繪制屏幕,并將各個對象實例化。在主程序運行的過程中 ,游戲中的所有對象都應(yīng)該運行在同一個線程下。 對于屏幕重繪, Graphics 類提供了簡單的繪圖功能。它具有 24 位深度色彩的繪制能力,以三原色分別各占一個字節(jié)表示其顏色。程序只能在 paint()函數(shù)中使用 Graphics 繪制 。 游戲 設(shè)計 的 相關(guān) 流程 本游戲的 相關(guān)邏輯處理如下: 17 開始 小怪殺完了嗎 Boss 死了嗎? 進(jìn)入下一關(guān) 小怪沒有死完 繼續(xù)消滅敵人 玩家是否死亡 顯示 GameOver 重繪屏幕 內(nèi)存回收 結(jié)束 Y N Y N N Y Y N 圖 44GameStart 類主要 邏輯處理 流程圖 開始 是否出界 玩家的子彈嗎 是否子彈碰撞 是否擊中任何敵人 敵人的子彈嗎? 是否與玩家的子彈碰撞 是否擊中玩家 結(jié)束 Y Y N 子彈抵消 Y 消除敵人 Y N N N N N 消除玩家 子彈抵消 圖 49 子彈運行的主要功能流程圖 Y Y Y 18 四 類的設(shè)計 設(shè)計 GameStart 類 該類是主程序類,主要實現(xiàn)按鍵控制和游戲業(yè)務(wù)邏輯處理。 ZiDan 類 子彈類,該類是為喜羊羊和灰太狼創(chuàng)造子彈。 PerSon 類 人物類,該類是創(chuàng)造怪物。 BaoPo 類 創(chuàng)造爆炸效果(如玩家子彈擊中怪物時所產(chǎn)生的爆炸效果)。 AePlayWave 類 玩家游戲過程中播放的各種聲音。 五 詳細(xì) 設(shè)計 View 包 GameStart 類 該類包含了游戲所要實現(xiàn) 功能的所有 按鍵 控制和 游戲業(yè)務(wù) 邏輯 處理。 該類通過繼承 Frame 類和使用多線程不斷重畫來繪制 游戲界面 背景圖片 及喜羊羊,灰太狼,子彈 , 屏幕輸出信息 的繪制 , 以及添加鍵盤監(jiān)聽( addKeyListenter()),從而實現(xiàn)按鍵事件,處理 玩家 所觸發(fā)的事件。游戲業(yè)務(wù)處理邏輯包括: 喜羊羊的子彈是否擊中灰太狼,灰太狼是否擊中喜羊羊 , 喜羊羊通過殺灰太狼或吃取食物獲得積分,當(dāng)喜羊羊吃取不同食物時,可以獲得不同 的技能,通過殺 Boss 游戲升級的控制。 處理按鍵事件:根據(jù)按鍵的不同,發(fā)出不同的指令。 上鍵:喜羊羊向
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1