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

正文內(nèi)容

基于vc的坦克大戰(zhàn)游戲開發(fā)論文-在線瀏覽

2025-01-15 15:02本頁面
  

【正文】 的感覺 .這次在游戲里特別加強(qiáng)了難度 ,敵人坦克的出生地變成了 5個,并且敵人也能夠取得寶物,當(dāng)在雙人模式下,如玩家坦克被己方坦克打到時,會停在那 里一些時間。 I 摘要 坦克大戰(zhàn)是一款非常經(jīng)典游戲,風(fēng)靡全球,經(jīng)久不衰,是學(xué)習(xí)面向?qū)ο蟮木幊趟枷氲睦硐雽?shí)例?,F(xiàn)在面向?qū)ο蟮挠嬎銠C(jī)編程語言很多,都可以編程來實(shí)現(xiàn)。本文用到了碰撞算法,以及敵人坦克的智能控制。 游戲產(chǎn)業(yè)準(zhǔn)確地講應(yīng)該叫做電子娛樂業(yè),是指基于電子技術(shù)、計算機(jī)技術(shù)、軟件技術(shù)、網(wǎng)絡(luò)技術(shù)和無線技術(shù)的新型娛樂產(chǎn)業(yè),分為單機(jī)游戲、網(wǎng)絡(luò)游戲和無線游戲等幾個部分。 游戲軟件業(yè)從誕生到現(xiàn)在,歷經(jīng)幾代的發(fā)展,已進(jìn)入了一個非常成熟的時期。 坦克大戰(zhàn)游戲 是一款風(fēng)靡全球的電視游戲機(jī)和掌上游戲機(jī)游戲,它曾經(jīng)造成的轟動與造成的經(jīng)濟(jì)價值可以說是游戲史上的一件大事。相信大多數(shù)用戶都還記得為它癡迷得茶不思飯不想的那個 坦克大戰(zhàn) 時代。這次練習(xí)的是在 Microsoft Visual C++ 平臺上生成 坦克大戰(zhàn) 游戲?,F(xiàn)在使用得比較多的是 版 和 .NET 版 , 不久前 Microsoft 還推出了 Microsoft Visual Studio 2020 版。 當(dāng)完成時,覺得自己在不知不覺中已跨入了它的大門。 當(dāng)然還有各種應(yīng)用軟件了。由于游戲的流程和內(nèi)部原理很復(fù)雜,所 2 以需要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)、圖形學(xué) …… 學(xué)習(xí)這么多專業(yè)知識需要很大的努力,不過我心中有一個夢想,那么再難的目標(biāo)也能實(shí)現(xiàn)。 任天堂和 Battle City背景介紹 FC(Family Computer)主機(jī)在歐美又稱 Nintendo Entertainment System(可譯作任天堂娛樂平臺即 NES)。這款主機(jī)的性能比當(dāng)時的多數(shù)主機(jī)都要強(qiáng)大,而價格上卻便宜得多。由于其價格便宜且極易使用,經(jīng)過任天堂的改造后又煥發(fā)了全新活力。 Battle City 是其發(fā)售卡帶中的一款力作,設(shè)置了 35 個關(guān)卡,可以雙人操縱,畫面設(shè)置了若干種類的建筑物和阻擋物,以消滅所有敵人為通關(guān)條件,并有接寶物等增加游戲效果的設(shè)置,畫面精美,音效杰出,在 PC 機(jī)的 80386 處理器 仍未面世的當(dāng)時,能在硬件上運(yùn)行這樣的 2D 程序不得不令人驚嘆,難怪常有人說游戲程序是最大限度發(fā)揮硬件水平的載體。 圖 11 80 年代中期 器 圖 12 Battle City 的界面 3 Batt e ity 的界面 3 研究內(nèi)容 本文主要的研究內(nèi)容包括: 敵人坦克的轉(zhuǎn)向,出生點(diǎn)的設(shè)置,發(fā)射子彈,獲得寶物后的變化; 玩家坦克的控制,操縱桿的設(shè)置,獲得寶物的變化; 坦克之間的碰撞,坦克與寶物之間的碰撞,子彈之間的碰撞和子彈和坦克之間的碰撞的判斷,子彈發(fā)射時間間隔的控制; 還有關(guān)卡的選擇,通過 page up 和 page down 選擇上一關(guān)或下一關(guān)。一個實(shí)時運(yùn)行的最終作品,每秒都會運(yùn)行成千上萬行程序,繪圖事件、鍵盤事件都會以極高的頻率在后臺等待響應(yīng),若有絲毫的差別都將很容易導(dǎo)致程序在運(yùn)行不久后可能出現(xiàn)嚴(yán)重錯誤,甚至死循環(huán)。 2. 己方坦克的運(yùn)行可以通過鍵盤響應(yīng)事件控制,但敵方則因?yàn)槭亲詣舆\(yùn)行,就需要有一定其一定的智能性;同時,出現(xiàn)在屏幕上的敵方可能會有較多的數(shù)量,這需要為每個敵方開辟一個線程以便能讓其獨(dú)立運(yùn)行。敵人坦克的運(yùn)行算法也需要進(jìn)行適當(dāng)?shù)脑O(shè)置,以免游戲過于簡單,單調(diào)。敵方子彈僅需要掃描用戶坦克,而用戶坦克需要在每一步掃描所有的敵方坦克。另外,子彈在運(yùn)行過程中也需要實(shí)時掃描是否碰撞到了相關(guān)障礙物或屏幕邊界。每一次刷新頁 面、每前進(jìn)一步都需要將所有的周圍環(huán)境都進(jìn)行掃描。 以上相關(guān)技術(shù)細(xì)節(jié)和整體流程將分別在以下小節(jié)闡述。 2. 封裝性 封裝是面向?qū)ο蠓椒ǖ?重要的原則。在面向?qū)ο蟮姆椒ㄖ校涯承┫嚓P(guān)的代碼和數(shù)據(jù)結(jié)合在一起,形成一個數(shù)據(jù)和操作的封裝體,這個封裝體向外提供一個可以控制的接口,其內(nèi)部大部分的實(shí)現(xiàn)細(xì)節(jié)則對外隱藏,從而達(dá)到對數(shù)據(jù)訪問權(quán)限的合理控制。 3. 繼承性 繼承是軟件復(fù)用的一種方式。它提供了創(chuàng)建新類的一種方法,即從現(xiàn)有類創(chuàng)建新類。 4. 多態(tài)性 多態(tài)性也是面向?qū)ο蟪绦蛟O(shè)計的重要特性之一。在基類中定義的屬性和操作被派生類繼承之后,可能具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為,我們稱之為多態(tài)性。 C++作為一種面對對象的程序設(shè)計語言,也具有這樣的特點(diǎn)。在該環(huán) 境下,用戶可以開發(fā)任何用 C++或 C 語言編寫的程序,包括程序的建立、編輯、瀏覽、保存、打開、編譯、鏈接、調(diào)試和優(yōu)化等。 Visual C++ 不僅僅是一個編譯器。 Visual C++作為一種程序設(shè)計語言,它同時也是一個集成開發(fā)工具,提供了軟件代碼自動生成和 可視化的資源編輯功能。 Visual C++采用的框架是 MFC。你如果選擇了 MFC,也就選擇了一種程序結(jié)構(gòu),一種編程風(fēng)格。MFC 是在整個 Windows 家族中都是兼容的 ,也就是說,無論是 、Windows95 還是 Windows NT,所使用的 MFC 是兼容 的。MFC 也回得到擴(kuò)展,添加新的特性、變得更加容易建立應(yīng)用程序。 MFC 中包含了上成千上萬行正確、優(yōu)化和功能強(qiáng)大的 Windows 代碼。從這點(diǎn)上將, MFC 極大地加快了你的程序開發(fā)速度。 最后要指出的是 MFC 類庫在提供的對象的各種屬性和方法都是經(jīng)過謹(jǐn)慎的編寫和嚴(yán)格的測試,可靠性很高,這就保證了使用 MFC 類庫不會影響程序的可靠性和正確性。 支持硬件加速 DirectX 支持硬 件的加速功能,當(dāng) DirectX 對象建立時,程序會自動去查詢可使用的硬件,程序員就不用去考慮玩家的計算機(jī)設(shè)備。 DirectDraw 提供以下功能: DirectDraw 的硬件抽象層 (HAL)提供的兼容接口可以直接操作顯示硬件,從而獲得最大性能。例如如果顯卡支持硬件位圖影射,那么 DirectDraw 就直接使用硬件影射,從而大大提高了性能。 DirectDraw 從操作系統(tǒng)所提供的 32 位內(nèi)存尋址和平面內(nèi)存模型中獲益。 對于全屏模式的應(yīng)用程序, DirectDraw 使得多后臺緩存 (Back buffers)的換頁 (Page flipping )操作變得極為容易。 支持 3D Zbuffer。 可訪問圖象縮放 (Stretching)硬件。 其他的特性,包括動態(tài)改變調(diào)色板,獨(dú)占訪問硬件和分辨率切換等。 DirectPlay 網(wǎng)絡(luò)通信 DirectPlay 的主要功能是使游戲和網(wǎng)絡(luò)底層分開。 DirectPlay 網(wǎng)絡(luò)服務(wù)提供了多種網(wǎng)絡(luò)連接支持,如 TCP/IP、 IPX、 Modem和 Serial Link。 DirectPlay 協(xié)議的重點(diǎn)是讓程序員可以簡單的發(fā)送消息。 DirectPlay 地址 為了傳送消息,每個加入游戲的機(jī)器都要有一個唯一的地址。 DirectPlay 的地址是一個 URL 字符串,由如下格式構(gòu)成: xdirectplay:/[data string] 在不同的網(wǎng)絡(luò)連接上,它包含發(fā)送消息方和接受方這樣的元素。 DirectPlay 對象之間的通信就是通過組件的接口來完成的。 DirectPlay 通過很多回調(diào)函數(shù)進(jìn)行聯(lián)系。游戲要執(zhí)行這些回調(diào)函數(shù),只需要在 DirectPlay 初始化期間傳送回調(diào)函數(shù)指針即可。 DirectPlay 大廳支持 大廳 (Lobby)主要的任務(wù)是安排角色和布置游戲。比如主持聊天室,發(fā)送新聞和信息,主持商業(yè)買賣等。 DirectPlay 沒有具體的規(guī)定大廳服務(wù)器如何工作,所以可以自行安排。一個大廳客戶端通過與大廳服務(wù)器連接程序進(jìn)行工作,連接程序被安裝到用戶的系統(tǒng)上。 8 本章小結(jié) 第二章介紹了 C++特點(diǎn)、 DirectX 的特色,本程序的開發(fā)環(huán)境及其相關(guān)工具的原理和使用。設(shè)置引入路徑的方法如下: 首先選擇 Tools 菜單中的 Options 選項(xiàng) 這時就打開了 Options 對話框,然后在 Directories 選項(xiàng)卡中的 Show directories for 下拉列表框中選擇 Include files 選項(xiàng),并加入新路徑連接到 DirectX 中的 include 目錄。如圖 32 所示: 圖 32 LIB 引入 這樣,我們以后就不用擔(dān)心 Visual C++會出現(xiàn)編譯程序找不到 DirectX 的 .h與 .lib 的頭文件錯誤。 建立好一個基本的 Win32 應(yīng)用程序以后,再建立這個項(xiàng)目所屬的資源文件,方法如下: 11 圖 33 新建資源文件 圖 34 引入頭文件 12 啟動 Class Wizard 以建立存放類信息的文件。 本章小結(jié) 本章主要講了,如何開始建立游戲項(xiàng)目,其中包括許多準(zhǔn)備工作,包括 DirectX的引入和資源文件的引入。在開始游戲后將先從外部文件載入地圖文件,對背景的所有物體進(jìn)行繪圖。敵方坦克將在游戲開始時逐漸新增線程,每增加一個敵方對象就新增加一條線程,一旦線程數(shù)滿到最大值,就不允許敵人再繼續(xù)出現(xiàn)。用戶再次發(fā)射子彈時只是將終止的線程再次激活。如:用戶坦克的生命是否已完全用盡,敵方坦克數(shù)是否已經(jīng)為零,屏幕上的坦克數(shù)量是否少于仍剩下的坦克數(shù)量等。主程序流程如 圖 41 所示: 系統(tǒng)框架設(shè)計 在這個游戲中,有 11 個核心的類。 Class CBonus Class CBore Class CBullet Class CDirectInput Class CEnemy Class CExplode Class CGame Class CPlane Class CPlayer Class CSprite 主程序 屏幕繪圖 進(jìn)入下一關(guān) 顯示GameOver 開始 敵方需要出坦克時,生成坦克 初始化參數(shù) 游戲結(jié)束條件時 敵人都死亡時 圖 41 本程序的主流程圖 結(jié)束游戲 15 Class CTank 其中 CDirectInput 是 DirectX 中提供的類。 CTank 類繼承了 CBullet 類,完成對坦克的控制。 CEnemy 類繼承了 CTank 類,完成對敵人坦克的控制。 CDirectInput 類完成玩家操縱桿的設(shè)置。當(dāng)選好以后按 Enter 鍵才正式開始 游戲。其主邏輯如圖 44 所示。它們分別為: CEnemy 和 CPlayer。 其他,還需保存的變量有 ,敵人的總數(shù)、屏幕上敵人的數(shù)量、下一個敵人需要出現(xiàn)的位置(總共允許在五個不同的位置出現(xiàn))、游戲是否一成功結(jié)束或是否已死亡。 = OFFSETX。 = OFFSETY。 DDClear( amp。// 畫窗口的中間 圖 43 游戲第一關(guān)界面 17 = 0。 = 0。 DDClear( amp。// 畫窗口的上部 = OFFSETY + 416。 DDClear( amp。 //畫窗口下部 = 0。 = OFFSETY。 DDClear( amp。 //畫窗口的左部 = OFFSETX + 416。 DDClear( amp。 //畫窗口下部 地圖由外部文件讀入。通過Draw( LPDIRECTDRAWSURFACE pdds )和 DrawTree( LPDIRECTDRAWSURFACE pdds )來繪制障礙物。本程序設(shè)置為 4 或 6。構(gòu)造坦克時,將坦克的圖片作為參數(shù)傳遞給 CEnemy 和 CPlayer。 如果玩家已經(jīng)死亡,將“ Game Over”字樣插入到最上層,以免被其他物體覆蓋。在檢測用戶輸入的 ProcessInput ()函數(shù)中,當(dāng)按方向鍵時,玩家坦克就將向不同的方向運(yùn)行,這調(diào)用了 CTank 的 Move()函數(shù);當(dāng)開炮時,就調(diào)用其 Fire()函數(shù),作出相應(yīng)的行為。 enum BONUS { BONUS_LIFE,//如圖 46 BONUS_CLOCK,//如圖 47 BONUS_SHOVEL,//如圖 48 BONUS_BOMB,//如圖 49 BONUS_STAR,//如圖 410 BONUS_HELMET//如圖 411 }。CEnemy 和 CP
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1