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

正文內(nèi)容

基于vc的坦克大戰(zhàn)游戲開發(fā)論文-免費閱讀

2024-12-14 15:02 上一頁面

下一頁面
  

【正文】 34 致謝 首先感謝我的指導老師,他在我的畢業(yè)設(shè)計過程中提出了指導性的方案和架構(gòu),并指引我閱讀相關(guān)的資料和書籍,使我在不熟悉的領(lǐng)域中仍能迅速掌握新興的技術(shù)。 在本次畢業(yè)設(shè)計的過程中,通過指導老師的耐心指導和自身的學習及努力,使我對游戲編程知 識有了進一步的提高,同時對本次畢業(yè)設(shè)計所涉及的 DirectX也有了一定的認識。對游戲有關(guān)的各運行界面也做了展示。 define SAFE_RELEASE(x) if(x) { xRelease()。 } if( 0 ) input1 |= KEY_LEFT。 else if( KEYDOWN( DIK_RIGHT ) ) input2 |= KEY_RIGHT。 } 30 // 鍵位設(shè)置 if( KEYDOWN( DIK_W ) ) input1 |= KEY_UP。 0x80) //判斷最高比特位是否為 1, 1表示這個鍵被按下。 GetDeviceState 函數(shù)有兩個參數(shù):設(shè)備狀態(tài)數(shù)據(jù)緩沖區(qū)和其緩沖區(qū)的大小。而DISCL_NONEXCLUSIVE 的意思是可以和其他程序同時訪問設(shè)備,而不是獨占式的。 m_pdevKeyboardSetDataFormat( amp。m_pdevKeyboard, NULL )。第三個參數(shù)決定了 DirectInput 返回哪種接口。 ??? 1 創(chuàng)建 DirectInput 對象 設(shè)置 DirectInput 系統(tǒng),即創(chuàng)建一個 DirectInput 對象作為總體的管理者。 break。因為在發(fā)炮期間,坦克的再次發(fā)炮的功能是被鎖定的。 } 子彈的運行和控制 子彈繼承了 CSprite,運行在獨立的線程中。 case DIR_DOWN: m_bullet[0].m_x = m_x + m_width/2 4。 break。 break。 sprite )函數(shù)判斷是否和寶物相交。 m_enemy[i].m_dir = dir。這樣,它們才可以自動檢測自己是否與同伴發(fā)生了碰撞,以便采取躲避、轉(zhuǎn)向等行動。 m_bullet[i].m_y=m_y+m_height/24。 break。 case BONUS_STAR: if( ++ 3 ) = 3。 case BONUS_BOMB: for( i = 0。 player ) { int i。 無論子彈是屬于敵人還是玩家的,它都必須記錄自己的來源和攻擊的對象。 else if( m_y + m_height MAX_Y ) m_y = MAX_Y m_height。構(gòu)造函數(shù)中創(chuàng)建了每個坦克必須擁有的一顆子彈,這些子彈就將只跟隨自己的坦克調(diào)動。 如果玩家已經(jīng)死亡,將“ Game Over”字樣插入到最上層,以免被其他物體覆蓋。 //畫窗口下部 地圖由外部文件讀入。 = OFFSETY。 DDClear( amp。 = OFFSETY。其主邏輯如圖 44 所示。 CTank 類繼承了 CBullet 類,完成對坦克的控制。用戶再次發(fā)射子彈時只是將終止的線程再次激活。 建立好一個基本的 Win32 應(yīng)用程序以后,再建立這個項目所屬的資源文件,方法如下: 11 圖 33 新建資源文件 圖 34 引入頭文件 12 啟動 Class Wizard 以建立存放類信息的文件。一個大廳客戶端通過與大廳服務(wù)器連接程序進行工作,連接程序被安裝到用戶的系統(tǒng)上。游戲要執(zhí)行這些回調(diào)函數(shù),只需要在 DirectPlay 初始化期間傳送回調(diào)函數(shù)指針即可。 DirectPlay 地址 為了傳送消息,每個加入游戲的機器都要有一個唯一的地址。 其他的特性,包括動態(tài)改變調(diào)色板,獨占訪問硬件和分辨率切換等。 DirectDraw 從操作系統(tǒng)所提供的 32 位內(nèi)存尋址和平面內(nèi)存模型中獲益。 最后要指出的是 MFC 類庫在提供的對象的各種屬性和方法都是經(jīng)過謹慎的編寫和嚴格的測試,可靠性很高,這就保證了使用 MFC 類庫不會影響程序的可靠性和正確性。MFC 是在整個 Windows 家族中都是兼容的 ,也就是說,無論是 、Windows95 還是 Windows NT,所使用的 MFC 是兼容 的。 Visual C++ 不僅僅是一個編譯器。 4. 多態(tài)性 多態(tài)性也是面向?qū)ο蟪绦蛟O(shè)計的重要特性之一。 2. 封裝性 封裝是面向?qū)ο蠓椒ǖ?重要的原則。敵方子彈僅需要掃描用戶坦克,而用戶坦克需要在每一步掃描所有的敵方坦克。 圖 11 80 年代中期 器 圖 12 Battle City 的界面 3 Batt e ity 的界面 3 研究內(nèi)容 本文主要的研究內(nèi)容包括: 敵人坦克的轉(zhuǎn)向,出生點的設(shè)置,發(fā)射子彈,獲得寶物后的變化; 玩家坦克的控制,操縱桿的設(shè)置,獲得寶物的變化; 坦克之間的碰撞,坦克與寶物之間的碰撞,子彈之間的碰撞和子彈和坦克之間的碰撞的判斷,子彈發(fā)射時間間隔的控制; 還有關(guān)卡的選擇,通過 page up 和 page down 選擇上一關(guān)或下一關(guān)。 任天堂和 Battle City背景介紹 FC(Family Computer)主機在歐美又稱 Nintendo Entertainment System(可譯作任天堂娛樂平臺即 NES)?,F(xiàn)在使用得比較多的是 版 和 .NET 版 , 不久前 Microsoft 還推出了 Microsoft Visual Studio 2020 版。 游戲軟件業(yè)從誕生到現(xiàn)在,歷經(jīng)幾代的發(fā)展,已進入了一個非常成熟的時期。 I 摘要 坦克大戰(zhàn)是一款非常經(jīng)典游戲,風靡全球,經(jīng)久不衰,是學習面向?qū)ο蟮木幊趟枷氲睦硐雽嵗?。對于我國而言,游戲軟件業(yè)也有快速的發(fā)展,但是 因為很多原因阻礙了這個產(chǎn)業(yè)的發(fā)展,如 游戲軟件研發(fā)人才缺乏, 軟件開發(fā)投入不足; 對青少年的負面影響,一些不健康的游戲軟件導致了社會對游戲軟件的偏見;技術(shù)滯后等情況。隨著版本的提高, Microsoft給我們提供的函數(shù)數(shù)據(jù)庫也越來越方便 ,越來越豐富 了。 FC 主機在游戲業(yè)界造成的巨大沖擊眾所周知,這款主機在當時事實上幾乎占領(lǐng)了世界各地多個國家的整個游戲市場,并使得逐漸沒落的北美游戲市場再度復蘇。 本程序需解決的有關(guān)技術(shù)問題 1. 游戲程序是一項精度要求很高的程序系統(tǒng),因為其代碼利用率很高。這需要對所有的對象有較好的控制。所謂封裝,就是將一個事物包裝起來,使外界不了解它的詳細內(nèi)情。簡單地說,多態(tài)性就是一個接口,多種方式。它是一個全面的應(yīng)用程序開發(fā)環(huán)境,使用它你充分利用具有面向?qū)ο筇匦缘? C++ 來開發(fā)出專業(yè)級的 Windows 應(yīng)用程序。每當新的 Windows 版本出現(xiàn)時 ,MFC 也會得到修改以便使舊的編譯器和代碼能在新的系統(tǒng)中工作。 DirectX的特色 直接讀寫顯存 目前的顯卡上大部分都已經(jīng)內(nèi)置了 8~32M 的顯存, DirectDraw 可以直接讀 6 寫這些顯存,并利用“切換頁”的功能將圖形的性能發(fā)揮得淋漓盡致。DirectDraw 將視頻和系統(tǒng)存儲器視為整塊的空間,而不是碎片的集合。 DirectPlay 的特點: 創(chuàng)建和管理會話。運行游戲客戶端的電腦提供設(shè)備地址,而游戲主機將提供主機的地址。當 DirectPlay 需要通信時,它就自動的調(diào)用回調(diào)函數(shù),并且傳回兩個重要參數(shù)信息:鑒定消息類別 ID 和一個數(shù)據(jù)塊指針,一般是一個結(jié)構(gòu)體。它就像一個鏈,連接了用戶和大廳。 圖 35 步驟 1 選擇是 圖 36 步驟 2 選擇 OK 13 圖 37 步驟 3 選擇 OK 完成以上步驟就可以開始建立應(yīng)用程序和窗口了。在屏幕重繪的主程序中,將在每次的循環(huán)中判斷若干事件。 CPlayer 類繼承了 CTank 類,完成對玩家坦克的控制。 程序中建立了另外的兩個類,分別表述了敵人坦克和玩家坦克的功能。 = + 416。rc, m_dwFillColor )。 = + 416。外部文件分別命名為 level%,利用 CPlane 類中的Creat()函數(shù)將地圖文件讀入程序。效果如圖 45 所示。 為了能提前預測碰撞,調(diào)用了 HitTest( CSpriteamp。 20 玩家坦克的功能屬性 構(gòu)造函數(shù)中需要將坦克方向設(shè)置為向上,因為剛出現(xiàn)時就是這樣的狀態(tài)。在玩家坦克發(fā)射的子彈中,就必須將攻擊對象設(shè)置為所有的敵人。 switch( ) { case BONUS_LIFE: ++。 i m_nMaxEnemys。 break。 case DIR_DOWN: m_bullet[i].m_x=m_x+m_width/24。 } 敵人坦克的功能屬性 由于和 CPlayer 同屬于一個 CTank 的繼承類,其功能就與 CPlayer 有很大的相似之處,但也有其自身的特別屬性。 for( int j = 0。 } break。 if( m_enemy[i].HitTest( m_bonus ) ) EatBonus( m_enemy[i] )。 case BONUS_SHOVEL: ()。 case BONUS_HELMET: ( 10000 )。 m_bullet[0].m_y = m_y + m_height 8。運行如圖 413 如果沒有擊中物體,就繼續(xù)檢測是否擊中了某輛坦克。 坦克運行的控制,通過 Move 函數(shù)實現(xiàn)。 case DIR_RIGHT: m_x += offset。這里通過 DirectInputCreate 函數(shù)完成的: //HINSTANCE hInst; //通過函數(shù)參數(shù)傳遞 //LPDIRECTINPUT m_pDI。第四個參數(shù)是函數(shù)調(diào)用成功后返回的接口指針。 if( FAILED(hr) ) { Destroy()。c_dfDIKeyboard )。 5 獲得鍵盤的訪問 鍵盤屬性設(shè)置完成后,可以調(diào)用 IDirectInputDevice:: Acquire 函數(shù)獲取鍵盤。對于鍵盤來說,永遠都是一塊 256 個無符號字節(jié)的緩沖。 HRESULT hr。 else if( KEYDOWN( DIK_S ) ) input1 |= KEY_DOWN。 if( KEYDOWN( DIK_NUMPAD0 ) ) input2 |= KEY_FIRE。 else if( 0 ) input1 |= KEY_RIGHT。 x = NULL。 33 第 5 章 結(jié)論 本程序的總結(jié)和展望 本程序設(shè)計實現(xiàn)了以 VC++為平臺的坦克大戰(zhàn)游戲的開發(fā),采用從外部文件讀取地圖、自動控制敵人坦克運行的方式進行控制,具有 一定的可玩性和復雜性。在整個設(shè)計過程中我也深深地體會到要把所學的知識理論變成可實際應(yīng)用的系統(tǒng)時所面臨的種種困難,認識到提高運用知識、解決實際問題的能力是十分重要的。 感謝答辯組對本畢業(yè)設(shè)計的考核,如果可以得到專家的認可將對我的學習和工作給予極大的鼓勵。相比一些數(shù)據(jù)庫軟件,游戲的設(shè)計有很多人情色彩和藝術(shù)思想的發(fā)揮,正式商業(yè)的軟件的人性化界面和各個游戲間迥異的結(jié)構(gòu)每每會讓人有去開發(fā)的沖動。 2. 為聲音文件的播放功能還沒有實現(xiàn)。 } 本章小結(jié) 第四章中按照相應(yīng)的步驟描述了所有關(guān)鍵類的具體算法實現(xiàn),引用了相關(guān)函數(shù)進行了具體流程的解釋,并對原理稍復雜的函數(shù)做了詳細的分析。 } 7 關(guān)閉 DirectInput 系統(tǒng) 當應(yīng)用程序結(jié)束前,它要銷毀 IDirectInput 相關(guān)的對象。 retur
點擊復制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1