最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php設(shè)計(jì)模式之策略模式實(shí)例分析【星際爭(zhēng)霸游戲案例】

 更新時(shí)間:2020年03月26日 08:44:04   作者:DavidHHuan  
這篇文章主要介紹了php設(shè)計(jì)模式之策略模式,結(jié)合星際爭(zhēng)霸游戲案例形式分析了php策略模式相關(guān)原理、用法及操作注意事項(xiàng),需要的朋友可以參考下

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

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

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

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

策略模式(Strategy)示例:

為了使代碼不至于過(guò)長(zhǎng),一部分類的定義不在此寫(xiě)出,如果要調(diào)試,請(qǐng)用字符串等方式替代new。

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

    //部隊(duì)
    public $army;

    //建筑
    public $building;

    //人口供給
    public $supply;

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

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

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

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

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

      //四個(gè)蟲(chóng)族農(nóng)民
      for($i=0; $i<4;$i++)
      {
        $player->army[] = new Drone();
      }
    }

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

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

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

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

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

  //初始化的控制類
  class initialController 
  {
    //構(gòu)造函數(shù),參數(shù)為玩家的數(shù)組
    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);
      }
    }
  }

  //假設(shè)兩個(gè)蟲(chóng)族,一個(gè)人族
  $playerArray = array(
    new player('zerg'), 
    new player('zerg'), 
    new player('terran'),
  );

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

用途總結(jié):策略模式可以將不同情況下的算法封裝,根據(jù)具體的情況調(diào)用。

實(shí)現(xiàn)總結(jié):需要一個(gè)接口,規(guī)定算法規(guī)范,使用者(比如初始化來(lái))只要調(diào)用對(duì)應(yīng)的算法就可以了。

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 微信推送功能實(shí)現(xiàn)方式圖文詳解

    微信推送功能實(shí)現(xiàn)方式圖文詳解

    這篇文章主要介紹了微信推送功能實(shí)現(xiàn)方式,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • php讀取excel文件示例分享(更新修改excel)

    php讀取excel文件示例分享(更新修改excel)

    這篇文章主要介紹了php讀取excel文件示例,還有更新修改功能,需要的朋友可以參考下
    2014-02-02
  • Laravel框架之blade模板新手入門(mén)教程及小技巧

    Laravel框架之blade模板新手入門(mén)教程及小技巧

    Blade 是 laravel 提供的一個(gè)簡(jiǎn)單強(qiáng)大的模板引擎。下面這篇文章主要給大家介紹了關(guān)于Laravel框架之blade模板新手的入門(mén)教程以及一些使用的小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • PHP集成百度Ueditor 1.4.3

    PHP集成百度Ueditor 1.4.3

    我們?cè)谧鲰?xiàng)目的時(shí)候經(jīng)常要遇到編輯器問(wèn)題,就目前來(lái)看百度編輯器還是首選,今天我們就來(lái)看下如何在php中集成百度Ueditor,有相同需要的小伙伴參考下吧
    2014-11-11
  • PHP表單提交后引號(hào)前自動(dòng)加反斜杠的原因及三種辦法關(guān)閉php魔術(shù)引號(hào)

    PHP表單提交后引號(hào)前自動(dòng)加反斜杠的原因及三種辦法關(guān)閉php魔術(shù)引號(hào)

    一般空間商提供的服務(wù)器空間默認(rèn)PHP 指令 magic_quotes_gpc是on的,也就是打開(kāi)的。我們通常用stripslashes() 函數(shù)刪除自動(dòng)添加的反斜杠。
    2015-09-09
  • Zend Framework入門(mén)教程之Zend_Registry組件用法詳解

    Zend Framework入門(mén)教程之Zend_Registry組件用法詳解

    這篇文章主要介紹了Zend Framework入門(mén)教程之Zend_Registry組件用法,結(jié)合實(shí)例形式分析了Zend_Registry組件實(shí)現(xiàn)對(duì)象注冊(cè)的設(shè)置、獲取、判斷、刪除等操作常用技巧,需要的朋友可以參考下
    2016-12-12
  • php生成圖片驗(yàn)證碼-附五種驗(yàn)證碼

    php生成圖片驗(yàn)證碼-附五種驗(yàn)證碼

    這篇文章主要給大家講解php生成圖片驗(yàn)證碼,包括數(shù)字驗(yàn)證碼、數(shù)字和字母驗(yàn)證碼、中文驗(yàn)證碼、仿google驗(yàn)證碼、算術(shù)驗(yàn)證碼,實(shí)現(xiàn)此功能主要通過(guò)GD庫(kù),生成一張帶有驗(yàn)證碼的圖片,并把驗(yàn)證碼存在session中,本文講解的比較全面,需要的朋友可以參考下
    2015-08-08
  • Yii框架布局文件的動(dòng)態(tài)切換操作示例

    Yii框架布局文件的動(dòng)態(tài)切換操作示例

    這篇文章主要介紹了Yii框架布局文件的動(dòng)態(tài)切換操作,結(jié)合實(shí)例形式分析了Yii框架控制器動(dòng)態(tài)切換布局的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-11-11
  • PHP新建類問(wèn)題分析及解決思路

    PHP新建類問(wèn)題分析及解決思路

    這篇文章給大家介紹php新建類相關(guān)問(wèn)題分析及解決辦法,涉及到php新建類相關(guān)知識(shí),本文介紹的非常詳細(xì),非常具有參考借鑒價(jià)值特此分享供大家參考
    2015-11-11
  • ThinkPHP中where()使用方法詳解

    ThinkPHP中where()使用方法詳解

    where方法可以用于對(duì)數(shù)據(jù)庫(kù)操作的結(jié)果進(jìn)行篩選。即SQL查詢語(yǔ)句中的where子句。本文給大家介紹ThinkPHP中where()使用方法詳解,感興趣的朋友參考下
    2016-04-04

最新評(píng)論

内黄县| 舞阳县| 临海市| 泽库县| 偏关县| 虎林市| 四子王旗| 聊城市| 汉川市| 抚州市| 珠海市| 曲阜市| 平塘县| 孝昌县| 崇文区| 桐梓县| 古田县| 浦县| 青岛市| 余干县| 嘉禾县| 桃园县| 陇南市| 武汉市| 邯郸县| 京山县| 班戈县| 建始县| 泾阳县| 汉寿县| 裕民县| 庆云县| 锦屏县| 赣州市| 仲巴县| 望江县| 南雄市| 称多县| 扬中市| 惠东县| 盐边县|