遊戲程式設計入門(1) 精靈 ISprite

2021-08-22 03:51:27 字數 2058 閱讀 2198

對於遊戲程式設計而言,我也是個初學者,這個遊戲程式設計入門系列的文章,就當作是我在學習遊戲程式設計的筆記和階段小結吧。我們先從最簡單的「精靈」開始,暫時我們不需要考慮directx或是opengl,不需要考慮3維等等這些複雜情形,直接使用gdi+繪圖功能就可以了。

精靈,是構成遊戲中活動體(比如,飛機、野獸等遊戲人物)的最基本單元,任何乙個活動體都可以由乙個或多個精靈組合而成,每個精靈都是乙個物件例項,它能夠繪製自己、移動(更複雜的還可以旋轉)等等基本動作。

我讓所有的精靈都實現isprite介面,該介面如下:

對應的**如下:

public

inte***ce

isprite

//繪製的裝置

bitmapsource

//精靈表面位圖

imagebackgroundimage

//遊戲背景

pointlocation

void

erase();

void

draw();

void

setdirection(compassdirectionsdir);

void

move();

}public

enum

compassdirections

這個介面也許並不是完整的,隨了實際的深入,可能還會有很多的元素新增進來,甚至compassdirections列舉還可以進一步細分,但是isprite已經有最基本「精靈」功能了。對於大多數簡單的任務,我們已經可以給出isprite的乙個實現:

public

class

sprite:isprite

}private

bitmapsource

=null

;public

bitmapsource

}private

pointlocation

=new

point(0,

0);public

pointlocation

}#region

backgroundimage

private

imagebackgroundimage

=null

;public

imagebackgroundimage

}#endregion

public

void

erase()

public

void

draw()

public

void

setdirection(compassdirectionsdir)

public

void

move()if(

this

.direction

==compassdirections.east)if(

this

.direction

==compassdirections.west)if(

this

.direction

==compassdirections.north)

}#endregion}

我們要特別注意erase方法的實現,所謂erase實際上就是用背景圖對應的區域重新繪製精靈所在的區域表面--這種技巧在遊戲程式設計中是最基本的技巧之一。

當精靈接收到遊戲環境的時鐘脈衝通知時,最常見的方法呼叫組合是:

thesprite.erase();

thesprite.move();

thesprite.draw();

首先,精靈擦除自己,然後依據方向compassdirections移動自己到新的位置,最後在新的位置繪製自己。

所以,當時鐘脈衝連續不斷的到來時,我們就可以看到精靈在移動了,通過我們的遊戲操縱桿或鍵盤我們可以呼叫目標精靈的setdirection方法來指定其要移動的方向。

下篇文章,我們將基於isprite構建乙個最簡單的遊戲示例,在這個示例中,我們可以通過鍵盤的方向鍵來控制遊戲中主角的移動。

遊戲程式設計入門手冊

遊戲製作新人 用什麼語言和編譯器來做遊戲?directx是什麼?學程式設計需要哪些書?我怎樣製作遊戲?哪些書是介紹遊戲開發的?vc好還是c 好?給c 初學者的50個忠告 文獻 程式設計新手真言 具備程式基礎 如何用directx製作2d遊戲?如何使用directinput?如何在遊戲中顯示文字?如何...

遊戲程式設計入門手冊

遊戲製作新人 用什麼語言和編譯器來做遊戲?directx是什麼?學程式設計需要哪些書?我怎樣製作遊戲?哪些書是介紹遊戲開發的?vc好還是c 好?給c 初學者的50個忠告 文獻 程式設計新手真言 具備程式基礎 如何用directx製作2d遊戲?如何使用directinput?如何在遊戲中顯示文字?如何...

程式設計入門1

2017.11.13 決定學程式設計 sikaru總讓我直接看 但我覺得還是要從基礎學起 歐姆定律 光年是計量天體間時空距離的單位,一般被用於衡量天體間的時空距離,其字面意思是指光在真空中沿直線傳播一年的距離,約為94605億千公尺,是由時間和光速計算出來的。真空中的 光速是乙個重要的物理常量 國際...