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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

8、e():將菜單信息中的字體風(fēng)格的設(shè)置值轉(zhuǎn)換成能夠被函數(shù)調(diào)用識(shí)別的值5.2 利用位圖操作類設(shè)計(jì)游戲菜單類歸納:到目前為止,游戲引擎已經(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)用實(shí)例準(zhǔn)備圖片素材:5.3 游戲菜單類應(yīng)用實(shí)例拷貝3個(gè)圖片素材文件到項(xiàng)目的res目錄中,分別命名:“menubkg.

9、jpg”“redroundbtn.png”“button.png”;菜單項(xiàng):“新游戲”、“關(guān)于”、“幫助”、“退出游戲”;將上一章構(gòu)建的項(xiàng)目拷貝一個(gè)副本,然后打開(kāi)副本項(xiàng)目中的GdiplusTest.h頭文件,在其中基本代碼的基礎(chǔ)上,添加T_Menu.h頭文件引用語(yǔ)句,并定義一個(gè)T_Menu類對(duì)象。具體實(shí)現(xiàn)請(qǐng)參見(jiàn)教程和代碼工程。 5.3 游戲菜單類應(yīng)用實(shí)例最終實(shí)現(xiàn)的效果:5.3 游戲菜單類應(yīng)用實(shí)例將菜單項(xiàng)水平居中方式布局的代碼:/ 水平居中布局的坐標(biāo)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)用實(shí)例將菜單項(xiàng)階梯方式布局的代碼:/ 階梯布局的坐標(biāo)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)用實(shí)例將菜單項(xiàng)雙行雙列方式的布局的代碼:/ 2行2列坐標(biāo)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)用實(shí)例將菜單項(xiàng)圖片改為圓形按鈕圖像,修改對(duì)應(yīng)的文字顏色,產(chǎn)生上面四種同樣布局的圓形菜單項(xiàng)的效果:/ 圓形按鈕菜單項(xiàng)btn_width = 120;/ 菜單項(xiàng)圖片寬btn_height = 120;/ 菜單項(xiàng)圖片高normalClr = Color:White;/ 正常狀態(tài)文字顏色focusClr = Color:Yellow;/ 選中狀態(tài)文字顏色/ 菜單項(xiàng)圖片t_menu.SetBtnBmp(L

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論