中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

《XNA游戲開發》在戰機游戲中使用Decorator模式

發布時間:2020-06-16 03:06:05 來源:網絡 閱讀:773 作者:劍了 欄目:開發技術

 在之前的關于XNA的介紹中,我們主要講解了XNA的一些基礎,但是將我們在實現一些簡單游戲時,眾多對象的處理則是一個比較讓人頭痛的問題。

在這里,我們使用裝飾模式來解決在現有對象基礎上的擴展問題。

整個程序包括以下幾個類文件:

Program XNA入口程序

Game1 完成基礎數據加載、卸載,游戲進行時數據的更新、圖型的繪制。

GameEngine 用來定義要擴展對象的職責,可以理解為一個裝飾的標準。

Game 用來維護一個指向GameEngine的引用,可以理解為一個做裝飾的工具。

Map 一個最基本的地圖,也就是說我們要在這個地圖上進行裝飾。

Spirit 我方的飛機,繼承自Game類,將來需要裝載到Map上。

Bullet 我方×××,同上。

Enemy 敵方飛機,同上。

EnemyBullet 敵方×××,同上。

以下為各類之間的關系圖:

《XNA游戲開發》在戰機游戲中使用Decorator模式

需要注意的是,我們在Game的構造方法中,需要定義GameEngine的參數,以便于將來在裝飾疊加時傳值:

        private GameEngine ge;

public Game(GameEngine ge)
{
this.ge = ge;
}

//示列方法,在該方法中需要調用引用對象中的同方法。
public override void Update(KeyboardState input)
{
ge.Update(input);
}
//.......
復制代碼

那么,在繼承Game這個裝飾對象的類中,也需要去訪問父類,也就是Game類的方法,以便得到對應的參數對象,和執行父類的方法:

    class Spirit:Game //繼承父類
{
public Spirit(GameEngine ge)
: base(ge)
{

}

public override void LoadContent(ContentManager content)
{
base.LoadContent(content);
}
}
復制代碼


最后,在Game1中,就可以調用并完成最后的裝飾工作:

?
Game game;
       public Game1()
       {
           GameEngine ge = new Map();//基本的地圖
           game = new Spirit(ge);//我方飛機加載到地圖上
           game = new Bullet(game);//我方×××加載到地圖上
           game = new EnemyBullet(game);//敵方×××加載到地圖上
           game = new Enemy(game);//敵方飛機加載到地圖上
       

完成的效果圖如下:

《XNA游戲開發》在戰機游戲中使用Decorator模式

XNA游戲開發是業余愛好,不清楚在正真的XNA游戲開發種是如何來解決這種問題的。未來WP7中游戲的開發主要以XNA為主,大家可以研究一下,以下是提供的代碼下載:

 

下載地址

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

方城县| 汶川县| 丹寨县| 栖霞市| 贡嘎县| 思南县| 和平县| 宣汉县| 宁津县| 收藏| 英吉沙县| 阿瓦提县| 古蔺县| 兴安盟| 吉首市| 南平市| 涞源县| 永川市| 秀山| 会昌县| 苍溪县| 塘沽区| 桦南县| 建始县| 永寿县| 南木林县| 西青区| 山阴县| 依兰县| 裕民县| 南投市| 武宣县| 浦江县| 肇庆市| 天长市| 永吉县| 五常市| 水城县| 如东县| 古蔺县| 富裕县|