首页 > 作文

php设计模式之策略模式实例分析【星际争霸游戏案例】

更新时间:2023-04-08 15:02:26 阅读: 评论:0

本文实例讲述了php设计模式之策略模式。分享给大家供大家参考,具体如下:

星际开地图对战,等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 g有关创新的作文ivebuilding($player);    //初始化人口供给    public function givesupply($player);  }  //虫族的初始化算法  class zerginitial implements initialplayer   {    //制造初始化的部队    public function givearmy($player)    {      //一个overlord      $player->army[] = new overlord();      //四个虫族农民 春风尔来     for($i=0; $i<4;$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; $i<4;$i++)      {        $player->army[] = new svc();      }    }    //制造初始化的建筑    public function givebuilding($player)    {      //一个基地      $player-&g中秋 国庆祝福语t;building[] = new hatchery();    }    //初始化人口供给    public function givesupply($player)    {      //人族初始人口供给为10      $player->supply = 10;    }  }  //初始化的控制类  class initialcontroller   {    //构造函数,参数为玩家的数组    public function __construct($playerarray)    {      foreach ($playerarray as $player)      {        switch ($player->race)        {          ca 'zerg':            $initialcontroller = new zerginitial();            break;          ca '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);?>

用途总结:策略模式可以将不同情况下的算法封装,根据具体的情况调用。

实现总结:需要一个接口,规定算法规范,使用者(比如初始化来)只要调用对应的算法就可以了。

本文发布于:2023-04-08 15:02:25,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/f29d4c2911de86ca4e7ef4923d9bd3e0.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:php设计模式之策略模式实例分析【星际争霸游戏案例】.doc

本文 PDF 下载地址:php设计模式之策略模式实例分析【星际争霸游戏案例】.pdf

标签:初始化   人口   种族   算法
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图