追蹤
兔子也會的遊戲設計
關於部落格
一個推廣XNA與OGRE的園地,當然還有其他關於遊戲設計的主題,歡迎有興趣的同好交流指教
  • 104790

    累積人氣

  • 1

    今日人氣

    0

    追蹤人氣

策略模式

//策略模式
using System;

namespace Strategy
{
    ///
    /// Class1 的摘要描述。
    /// 主控台測試部分
    ///
    class Client
    {
        ///
        /// 應用程式的主進入點。
        ///
        [STAThread]
        static void Pause()
        {
            Console.WriteLine("Press Enter To Continue....");
            Console.ReadLine();
        }

        static void Main(string[] args)
        {
            //建立一位打者叫做barryBonds
            BaseballPlayer player1 = new BarryBonds();
            //可以改變它的行為模式
            //player1.SetSwingPosture(new NormalPosture());
            //揮棒
            player1.Swing();
            Pause();
        }
    }
    //抽象類別 野手類別
    abstract class BaseballPlayer
    {
        protected SwingPosture posture;
        public void Swing()
        {
            posture.Swing();
        }
        public void SetSwingPosture(SwingPosture posture)
        {
            this.posture = posture;
        }
    }
    //繼承類別 有個叫做barrybonds的野手
    class BarryBonds : BaseballPlayer
    {
        //設定他的打擊姿勢
        public BarryBonds()
        {
            posture = new StarPosture();
        }
    };

    //
    //把容易變動的部份抽出來 利如揮棒姿勢 許多人都不一樣 但是也有一樣的 所以另外封裝
    //

    //揮棒姿勢的介面
    interface SwingPosture
    {
        void Swing();
    };

    //實作揮棒姿勢 這是正常的揮棒姿勢
    class NormalPosture : SwingPosture
    {

        #region SwingPosture 成員

        public void Swing()
        {
            Console.WriteLine("我用正常姿勢揮棒");
        }

        #endregion

    }
    // 這是明星的揮棒姿勢
    class StarPosture : SwingPosture
    {

        #region SwingPosture 成員

        public void Swing()
        {
            Console.WriteLine("我用明星姿勢揮棒");
        }

        #endregion

    }

}

相簿設定
標籤設定
相簿狀態