游戲編程導論 Chapter-05_第1頁
游戲編程導論 Chapter-05_第2頁
游戲編程導論 Chapter-05_第3頁
游戲編程導論 Chapter-05_第4頁
游戲編程導論 Chapter-05_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第5章 為引擎添加位圖操作模塊內(nèi)容提綱 5.1 位圖操作類的設(shè)計與實現(xiàn)5.1.1 位圖操作類需求分析5.1.2 位圖操作類的定義5.1.3 位圖操作類的實現(xiàn)5.2 利用位圖操作類設(shè)計游戲菜單類5.2.1 游戲菜單類的需求分析5.2.2 游戲菜單類的定義5.2.3 游戲菜單類的實現(xiàn)5.3 游戲菜單類應(yīng)用實例第5章 為引擎添加位圖操作模塊為游戲引擎框架添加一個重要模塊位圖操作模塊,該模塊將以類的方式進行封裝。由于這個模塊與圖形操作相關(guān),就將這個模塊命名為T_Graphic類。5.1 位圖操作類的設(shè)計與實現(xiàn)5.1.1 位圖操作類需求分析T_Graphic位圖操作類主要提供位圖加載、位圖繪制以及文字繪

2、制等功能。提供以下幾種繪制處理:1.原始位圖的簡單繪制;2.將原始位圖進行縮放繪制;3.將原始位圖進行縮放處理并指定透明度繪制;4.繪制指定背景顏色和透明度的空白位圖;5.讀取原始位圖中的局部區(qū)域,并可對這個局部區(qū)域進行縮放、指定透明度以及旋轉(zhuǎn)或翻轉(zhuǎn)處理后繪制。該處理已經(jīng)實現(xiàn),即PaintRegion()函數(shù);6.逐幀動畫繪制,以PaintRegion()函數(shù)為基礎(chǔ)實現(xiàn)PaintFrame()函數(shù);7. 文字繪制。PaintText()函數(shù)就是處理文字繪制的函數(shù),無需再實現(xiàn)。8.設(shè)備環(huán)境的清除處理。有時需要清除當前設(shè)備環(huán)境中原來圖形的痕跡,以便繪制新的游戲畫面,需要一個專門函數(shù)來執(zhí)行這個任務(wù)。

3、5.1 位圖操作類的設(shè)計與實現(xiàn)5.1.2-5.1.3 位圖操作類的定義和實現(xiàn)位圖操作類分別在T_Graphic.h和T_Graphic.cpp中實現(xiàn)。T_Graphic類定義和實現(xiàn):實現(xiàn)代碼請參見教程類函數(shù)說明:HBITMAP_To_Bitmap()、PaintRegion()、和PaintText()函數(shù)的功能與上一章中闡述的同名函數(shù)一致。這3個函數(shù)可以參見上一章的實現(xiàn)代碼。 T_Graph類中的PaintImage()函數(shù)有3個重載形式:有3個參數(shù)的原型聲明用于原始位圖的簡單繪制;有5個參數(shù)的PaintImage()函數(shù)用于位圖縮放繪制;有6個參數(shù)的PaintImage()函數(shù)可以用指定透

4、明度對原始位圖進行縮放繪制。三個PaintBlank()函數(shù)都可以實現(xiàn)空白位圖的繪制:4個參數(shù)的PaintBlank()函數(shù)將第一個位圖句柄參數(shù)指定的位圖填充最后一個參數(shù)指定的顏色;6個參數(shù)的PaintBlank()函數(shù)采用GDI+實現(xiàn),位圖透明度和顏色是通過其中的Color參數(shù)來指定;7個參數(shù)的PaintBlank()函數(shù)是采用GDI的AlphaBlend()函數(shù)實現(xiàn)相同的效果。CreateBlankBitmap()函數(shù)用于創(chuàng)建指定寬高和顏色的空白位圖;PaintFrame()函數(shù)專門用于動畫播放處理。5.2 利用位圖操作類設(shè)計游戲菜單類游戲菜單一般要求比較個性化,要與游戲內(nèi)容和畫面風格相統(tǒng)

5、一,會采用專門設(shè)計的圖形或圖像來表現(xiàn)。 5.2 利用位圖操作類設(shè)計游戲菜單類以圖片作為菜單項的設(shè)計中,每一個菜單項至少由兩張內(nèi)容相同,但在色調(diào)、顏色、大小或亮度等方面有一定差異的圖片組成。其中一張作為正常顯示用,另一張作為被選中時使用。5.2 利用位圖操作類設(shè)計游戲菜單類5.2.1 游戲菜單類的需求分析T_Menu類專門用于處理游戲開始界面和游戲結(jié)束、升級或暫停界面中的菜單菜單可以以純文字的形式呈現(xiàn),也可以以圖片的形式呈現(xiàn)菜單的位置、菜單項文字、菜單個數(shù)、排列方式或在界面上的具體位置都可以按照要求設(shè)置菜單可以設(shè)置背景,支持純色背景或背景圖片。背景圖片還可以設(shè)置透明度本菜單類可以處理鼠標事件和鍵

6、盤事件。5.2 利用位圖操作類設(shè)計游戲菜單類5.2.2-5.2.3 游戲菜單類的定義和實現(xiàn)菜單類將分別在T_Menu.h和T_Menu.cpp中實現(xiàn)。T_Menu類的定義和實現(xiàn):實現(xiàn)代碼請參見教程T_Menu類的函數(shù)分類: 信息設(shè)置函數(shù):SetMenuBkg():設(shè)置菜單背景圖片SetBtnBmp():設(shè)置菜單中每個菜單項對應(yīng)的圖片,只要指定圖片文件的路徑和文件名SetMenuInfo():將一個MENU_INFO結(jié)構(gòu)體對象的值賦給T_Menu類中的同類型變量AddMenuItem():置菜單項,菜單項關(guān)鍵信息就是文字內(nèi)容和在界面上的位置5.2 利用位圖操作類設(shè)計游戲菜單類操作函數(shù):DrawM

7、enu():菜單繪制函數(shù);MenuMouseClick():菜單鼠標點擊事件處理函數(shù)MenuMouseMove():菜單鼠標移動事件處理函數(shù)MenuKeyDown():菜單鍵盤事件處理函數(shù)DestroyAll():清空記錄菜單項信息的vector容器中的數(shù)據(jù)菜單索引值的獲取和修改函數(shù):GetMenuIndex():計算當前鼠標光標所在位置是否在某個菜單項的矩形范圍內(nèi),如果是則返回該菜單項的索引號,供菜單繪制時使用SetMenuIndex():設(shè)置菜單當前的索引號供類內(nèi)部使用的私有函數(shù):GetAlignment ():將菜單信息中的對齊方式設(shè)置值轉(zhuǎn)換成能夠被函數(shù)調(diào)用識別的值GetFontStyl

8、e():將菜單信息中的字體風格的設(shè)置值轉(zhuǎn)換成能夠被函數(shù)調(diào)用識別的值5.2 利用位圖操作類設(shè)計游戲菜單類歸納:到目前為止,游戲引擎已經(jīng)具備以下文件T_Config.h頭文件T_Display類(包括T_Display.h和T_Display.cpp文件)T_Engine類(包括T_Engine.h和T_Engine.cpp文件)T_Graph類(包括T_Graph.h和T_Graph.cpp文件)T_Menu類(包括T_Menu.h和T_Menu.cpp文件) 5.3 游戲菜單類應(yīng)用實例準備圖片素材:5.3 游戲菜單類應(yīng)用實例拷貝3個圖片素材文件到項目的res目錄中,分別命名:“menubkg.

9、jpg”“redroundbtn.png”“button.png”;菜單項:“新游戲”、“關(guān)于”、“幫助”、“退出游戲”;將上一章構(gòu)建的項目拷貝一個副本,然后打開副本項目中的GdiplusTest.h頭文件,在其中基本代碼的基礎(chǔ)上,添加T_Menu.h頭文件引用語句,并定義一個T_Menu類對象。具體實現(xiàn)請參見教程和代碼工程。 5.3 游戲菜單類應(yīng)用實例最終實現(xiàn)的效果:5.3 游戲菜單類應(yīng)用實例將菜單項水平居中方式布局的代碼:/ 水平居中布局的坐標x =i*(btn_width+MENU_SPACE)+(wndWidth - 4*btn_width - 3*MENU_SPACE)/2;y =

10、wnd_height-2*btn_height;5.3 游戲菜單類應(yīng)用實例將菜單項階梯方式布局的代碼:/ 階梯布局的坐標x =(wndWidth - btn_width)/2-btn_width+i*(btn_width/2);y = i*(btn_height+MENU_SPACE)+(wnd_height-4*btn_height-3*MENU_SPACE)/2;5.3 游戲菜單類應(yīng)用實例將菜單項雙行雙列方式的布局的代碼:/ 2行2列坐標int col = i%2;int row = i/2; x = col*(btn_width+MENU_SPACE)+(wndWidth - 2*btn

11、_width-MENU_SPACE)/2;y = row*(btn_height+MENU_SPACE)+(wnd_height-2*btn_height-MENU_SPACE)/2;5.3 游戲菜單類應(yīng)用實例將菜單項圖片改為圓形按鈕圖像,修改對應(yīng)的文字顏色,產(chǎn)生上面四種同樣布局的圓形菜單項的效果:/ 圓形按鈕菜單項btn_width = 120;/ 菜單項圖片寬btn_height = 120;/ 菜單項圖片高normalClr = Color:White;/ 正常狀態(tài)文字顏色focusClr = Color:Yellow;/ 選中狀態(tài)文字顏色/ 菜單項圖片t_menu.SetBtnBmp(L

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論