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

2025-05-29 0 84

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

星际开地图对战,等5秒钟进入地图后,每个玩家都会拥有一个基地,几个农民等,还会有初始的人口供给。但这些是根据种族的不同而不同。

待解决的问题:我们需要根据种族的不同,而对玩家进行不同的初始化,最好将这些不同的处理方式封装。

思路:定义初始化的接口,然后制作不同种族的初始化类。

策略模式(Strategy)示例:

为了使代码不至于过长,一部分类的定义不在此写出,如果要调试,请用字符串等方式替代new。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130
<?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; $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->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);

?>

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

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

希望本文所述对大家PHP程序设计有所帮助。

原文链接:https://www.cnblogs.com/davidhhuan/p/4248199.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 php设计模式之策略模式实例分析【星际争霸游戏案例】 https://www.kuaiidc.com/105522.html

相关文章

猜你喜欢
发表评论
暂无评论