亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

《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

安国市| 盐池县| 宁德市| 南康市| 武冈市| 富源县| 盐边县| 嘉禾县| 黄石市| 太和县| 铜陵市| 祁连县| 松溪县| 固原市| 磐石市| 宜川县| 左权县| 丹棱县| 拜泉县| 大足县| 新竹市| 新乐市| 永安市| 保靖县| 安西县| 新河县| 灵丘县| 友谊县| 招远市| 宜都市| 南阳市| 沁阳市| 泉州市| 沈阳市| 民和| 昌图县| 衢州市| 滕州市| 乌兰浩特市| 绍兴县| 定结县|