VC++游戲編程
第二章二維游戲的編程技術(shù)
第一節(jié)二維游戲的基本流程和架構(gòu)
:交互和輸出
交互部分:根據(jù)用戶的操作,改變游戲的各種數(shù)據(jù),以反映游戲的當(dāng)前狀態(tài)。
輸出:處理游戲運行中的各種數(shù)據(jù),在輸出設(shè)備上體現(xiàn)游戲的內(nèi)容,包括游戲畫面、游戲音效、游戲提示等。
這兩個部件的執(zhí)行由調(diào)度模塊指揮,簡單的調(diào)度模塊是一個do-while循環(huán),串行執(zhí)行:交互?輸出?再輸出?再渲染?…。當(dāng)然也可以將兩個部件分成不同的線程,并行執(zhí)行。
例如:如果要編寫一個探險類的二維小游戲,一般需要實現(xiàn)這樣的一個場景:代表玩家的小人在地圖上移動,尋找各種物品。游戲采用簡單的調(diào)度模塊,即do-while循環(huán)來控制。渲染部分將游戲窗口分割為若干塊,用地圖填充。然后讀取玩家的位置、方位、狀態(tài)等信息,將角色畫到地圖上。交互部分檢測玩家的輸入,并據(jù)此更改相應(yīng)的數(shù)據(jù)以便輸出時使用。
VC++游戲編程——游戲的編程技術(shù)
,需要做下面的幾個工作:
實現(xiàn)游戲地圖的加載和編輯操作:為角色提供游戲環(huán)境
圖像的半透明技術(shù):在顯示地圖和游戲角色需要
精靈動畫技術(shù):為達(dá)到游戲角色的動態(tài)效果
碰撞檢測:用于檢測游戲場景中的物體是否發(fā)生接觸,使得游戲環(huán)境更加真實。
VC++游戲編程——游戲的編程技術(shù)
VC++游戲編程——游戲的編程技術(shù)
第二節(jié) VC++基本繪圖技巧
一、為什么使用VC++來設(shè)計游戲
:
( Class )數(shù)據(jù)庫
API
二、與其他函數(shù)庫的結(jié)合
SDK ( Kit)
API(Open )
VC++游戲編程——游戲的編程技術(shù)
三、游戲舞臺的坐標(biāo)系統(tǒng)
、窗口、客戶區(qū)
屏幕區(qū)的大小視用戶計算機(jī)所設(shè)置的分辨率而定,如:
VC++游戲編程——游戲的編程技術(shù)
以屏幕左上角為原點,屏幕上的任何位置都可以用一個坐標(biāo)表示,我們稱為屏幕坐標(biāo)。當(dāng)程序中調(diào)用某些以坐標(biāo)點為實參的函數(shù)時,都要傳遞相應(yīng)的屏幕坐標(biāo),如果我們只知道該點在客戶區(qū)中的位置,則必須先將它轉(zhuǎn)換為屏幕坐標(biāo)。轉(zhuǎn)換方法是調(diào)用函數(shù),反之調(diào)用
VC++游戲編程——游戲的編程技術(shù)
四、 MFC( Class) 繪圖類
GDI( )意為“圖形設(shè)備接口”。的架構(gòu)不允許使用者直接存取VGA顯卡上的內(nèi)存,所以在MFC中提供了圖形設(shè)備接口類,用來讓使用者顯示數(shù)據(jù)。
上圖表示GDI類都是從繼承而來,這些類必須在配合設(shè)備上下文(DC, )來使用。這些GDI類的用途如下:
VC++游戲編程——游戲的編程技術(shù)
:該類封裝了一個GDI位圖,提供一個操作位圖的的接口
:該類封裝了一個GDI畫刷,可被選擇為設(shè)備描述表的當(dāng)前畫刷,畫筆為圖形中填滿樣式
CFont:該類封裝了一種GDI字體,可被選擇為設(shè)備描述表的當(dāng)前字體
:該類封裝了一個GDI調(diào)色板,可作應(yīng)用程序和一色彩輸出設(shè)備如顯示器之間的接口
CPen:該類封裝了一種GDI畫筆,可被選擇為設(shè)備描述的當(dāng)前畫筆用vc編寫一個游戲程序,畫筆為圖形外框樣式
CRgn:該類封裝了一GDI域,用于操作窗口內(nèi)的橢圓域或多邊形域。該類一般與CDC類的裁剪成員一起使用
VC++游戲編程——游戲的編程技術(shù)
DC( ,設(shè)備上下文)
可以將其想象成一個圖形繪制的區(qū)域。當(dāng)要在屏幕上繪圖時,應(yīng)用程序就必須先取得“屏幕的DC”才可以進(jìn)行繪圖;當(dāng)使用者要操作其窗口繪圖時,就必須先取得“操作窗口的DC”用vc編寫一個游戲程序,然后再把要繪制的圖形放到各個DC中,這時在該DC所代表的區(qū)域中,就會顯示所繪制的圖形。
VC++游戲編程——游戲的編程技術(shù)
MFC把各種不同的DC類包裝在CDC類中,并提供了許多與繪圖有關(guān)的函數(shù)。