HGE教程翻譯(7)

2021-05-24 12:01:30 字數 3040 閱讀 5718

成千上萬的野兔

這篇教程示範hge渲染多種混合模式。

建立精靈

我們跳過所有的技術細節直接來到動作。首先建立並初始化一對精靈,用於

"game objects"

和背景。注意背景精靈是如何從小的

64x64

圖塊建立並在底部上色。

htexture tex, bgtex;

hgesprite *spr, *bgspr;

tex=hge->texture_load("zazaka.png");

spr=new hgesprite(tex,0,0,64,64);

spr->sethotspot(32,32);

bgtex=hge->texture_load("bg2.png");

bgspr=new hgesprite(bgtex,0,0,800,600);

bgspr->setblendmode(blend_coloradd | blend_alphablend);

bgspr->setcolor(0xff000000,0);

bgspr->setcolor(0xff000000,1);

bgspr->setcolor(0xff000040,2);

bgspr->setcolor(0xff000040,3);

初始化遊戲物件陣列

現在我們建立陣列,儲存

"game objects"

的屬性並用任意值填充。

#define max_objects 2000

struct sprobject

;

sprobject*  pobjects;

int         nobjects;

pobjects=new sprobject[max_objects];

nobjects=1000;

for(i=0; i

改變混合模式

setblend函式使用乙個0到

4的int變數來調整遊戲物件陣列的混合模式。

void setblend(int blend)

;

static dword sprcolors[5][5]=

,

,

,

,

};

if(blend>4) blend=0;

nblend=blend;

spr->setblendmode(sprblend[blend]);

for(int i=0;i

}

更新螢幕

framefunc中我們遍歷遊戲物件陣列並計算它們的新位置。

for(i=0; i

pobjects[i].y+=pobjects[i].dy*dt;

if(pobjects[i].y>screen_height || pobjects[i].y<0)

pobjects[i].scale+=pobjects[i].dscale*dt;

if(pobjects[i].scale>2 || pobjects[i].scale<0.5)

pobjects[i].rot+=pobjects[i].drot*dt;

}

渲染螢幕

renderfunc中我們遍歷遊戲物件陣列並渲染它們。

hge->gfx_beginscene();

bgspr->render(0,0);

for(i=0; i

->gfx_endscene();  hge

使用up

和down

鍵調整精靈的數量,空格鍵改變混合模式,esc退出。

HGE教程翻譯(3)

這次我們會學習使用 hge的一些幫助類。首先,包含所有需要的標頭檔案並宣告 hge全域性指標,大多數幫助類都需要它。include include include include hge hge 0 現在宣告 hge物件。hgesprite spr hgesprite spt hgefont fnt...

HGE教程翻譯(4)

渲染紋理 首先我們宣告渲染物件的控制代碼和配合使用的精靈。hgesprite tar htarget target gfxrestorefunc 函式。bool gfxrestorefunc 在renderfunc中我們首先渲染所有的素材到紋理,在 gfx beginscene 中詳細指定渲染物件。...

HGE教程翻譯(5)

使用曲面變換 在這個教程中我們學習如何使用曲面變形,一種可以建立水面 透鏡 紙張甚至實時的變化。我們使用靜態的紋理,但你可以渲染你的整個遊戲場景到乙個紋理,通過扭曲網格來達到一些很酷的實時特效。首先包含標頭檔案和變數的宣告。include include include hge hge 0 htex...