主頁 > 知識庫 > php設計模式之策略模式實例分析【星際爭霸游戲案例】

php設計模式之策略模式實例分析【星際爭霸游戲案例】

熱門標簽:南京3D地圖標注 重慶外呼電銷系統(tǒng)多少錢 辦理400電話哪家好點 咸陽電銷 嘟嘟云外呼系統(tǒng) 邢臺400電話辦理 濟源百應電銷機器人聯系方式 南寧電話外呼系統(tǒng)線路 正規(guī)電銷機器人系統(tǒng)

本文實例講述了php設計模式之策略模式。分享給大家供大家參考,具體如下:

星際開地圖對戰(zhàn),等5秒鐘進入地圖后,每個玩家都會擁有一個基地,幾個農民等,還會有初始的人口供給。但這些是根據種族的不同而不同。

待解決的問題:我們需要根據種族的不同,而對玩家進行不同的初始化,最好將這些不同的處理方式封裝。

思路:定義初始化的接口,然后制作不同種族的初始化類。

策略模式(Strategy)示例:

為了使代碼不至于過長,一部分類的定義不在此寫出,如果要調試,請用字符串等方式替代new。

?php
  //玩家的類
  class player
  {
    //所屬種族
    public $race;

    //部隊
    public $army;

    //建筑
    public $building;

    //人口供給
    public $supply;

    //構造函數,設定所屬種族
    public function __construct($race)
    {
      $this->race = $race;
    }
  }

  //初始化的接口
  interface initialPlayer 
  {
    //制造初始化的部隊
    public function giveArmy($player);

    //制造初始化的建筑
    public function giveBuilding($player);

    //初始化人口供給
    public function giveSupply($player);
  }

  //蟲族的初始化算法
  class zergInitial implements initialPlayer 
  {
    //制造初始化的部隊
    public function giveArmy($player)
    {
      //一個Overlord
      $player->army[] = new Overlord();

      //四個蟲族農民
      for($i=0; $i4;$i++)
      {
        $player->army[] = new Drone();
      }
    }

    //制造初始化的建筑
    public function giveBuilding($player)
    {
      //一個基地
      $player->building[] = new Hatchery();
    }

    //初始化人口供給
    public function giveSupply($player)
    {
      //蟲族初始人口供給為9
      $player->supply = 9;
    }
  }

  //人族的初始化算法
  class terranInitial implements initialPlayer 
  {
    //制造初始化的部隊
    public function giveArmy($player)
    {
      //四個人族農民
      for($i=0; $i4;$i++)
      {
        $player->army[] = new SVC();
      }
    }

    //制造初始化的建筑
    public function giveBuilding($player)
    {
      //一個基地
      $player->building[] = new Hatchery();
    }

    //初始化人口供給
    public function giveSupply($player)
    {
      //人族初始人口供給為10
      $player->supply = 10;
    }
  }

  //初始化的控制類
  class initialController 
  {
    //構造函數,參數為玩家的數組
    public function __construct($playerArray)
    {
      foreach ($playerArray as $player)
      {
        switch ($player->race)
        {
          case 'zerg':
            $initialController = new zergInitial();
            break;
          case 'terran':
            $initialController = new terranInitial();
            break;
        }

        $initialController->giveArmy($player);
        $initialController->giveBuilding($player);
        $initialController->giveSupply($player);
      }
    }
  }

  //假設兩個蟲族,一個人族
  $playerArray = array(
    new player('zerg'), 
    new player('zerg'), 
    new player('terran'),
  );

  //進行初始化工作
  $initialController = new initialController($playerArray);
?>

用途總結:策略模式可以將不同情況下的算法封裝,根據具體的情況調用。

實現總結:需要一個接口,規(guī)定算法規(guī)范,使用者(比如初始化來)只要調用對應的算法就可以了。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • php設計模式 Strategy(策略模式)
  • 學習php設計模式 php實現策略模式(strategy)
  • PHP設計模式之策略模式(Strategy)入門與應用案例詳解
  • php設計模式之策略模式應用案例詳解
  • PHP設計模式之策略模式原理與用法實例分析
  • PHP實現的策略模式簡單示例
  • PHP策略模式定義與用法示例
  • PHP設計模式之觀察者模式(Observer)詳細介紹和代碼實例
  • php設計模式 Template (模板模式)
  • PHP常用的三種設計模式匯總
  • php設計模式 Proxy (代理模式)
  • PHP設計模式之 策略模式Strategy詳解【對象行為型】

標簽:唐山 黃山 隴南 南通 河南 武漢 平頂山 通遼

巨人網絡通訊聲明:本文標題《php設計模式之策略模式實例分析【星際爭霸游戲案例】》,本文關鍵詞  php,設計模式,之,策略,模式,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php設計模式之策略模式實例分析【星際爭霸游戲案例】》相關的同類信息!
  • 本頁收集關于php設計模式之策略模式實例分析【星際爭霸游戲案例】的相關信息資訊供網民參考!
  • 推薦文章