background image

  "Cooper",
  "Cline",
  );

然后就可以从每个数组中选择一个随机元素:echo $male[array_rand($male)] . ' ' . 
$last[array_rand($last)];。要一次性提取多个名称,只需混合数组并根据需要提取。

 

清单 4. 混合名称数组
  shuffle($male);
  shuffle($last);
  for ($i = 0; $i <= 3; $i++) {
  echo $male[$i] . ' ' . $last[$i];
  }

基于此基本概念,我们可以创建保存名字和姓氏的文本文件。如果在文本文件的每一行中

 

存放一个名字,则可以轻松地用换行符分隔文件内容以构建源代码数组。清单 5. 创建名
称的文本文件
  $male = explode('\n', file_get_contents('names.female.txt'));
  $last = explode('\n', file_get_contents('names.last.txt'));

 

构建或查找一些好的名字文件(代码归档 中附带了一些文件),此后我们绝不再需

要为名字烦恼。
场景生成器

利用构建名字生成器使用的相同基本原理,我们可以构建场景生成器。此生成器不但

在角色扮演游戏中十分有用,而且在需要用到伪随机环境集合(可用于角色扮演、即兴创
作、写作等情况)的情况下也十分有用。我最喜欢的游戏之一,Paranoia 

 

在其 GM Pack 

 

中包括了 “任务混合器(mission blender)”。任务混合器可用于在快速滚动骰子时整合
完整任务。让我们整合自己的场景生成器。
考虑以下场景:您醒来后发现自己迷失于丛林中。您知道自己必须赶去纽约,但是不知道
原因。您可以听到附近的狗叫声及清晰的敌方搜寻者的声音。您浑身发冷、不住颤抖,而且
没有武器。该场景中的每一句话都介绍场景的特定方面:
“您醒来后发现自己迷失于丛林中” — 这句话将建立设置。
“您知道自己必须赶去纽约” — 这句话将描述目标。
“您可以听到狗叫声” — 这句话将介绍敌人。
“您浑身发冷、不住颤抖,而且没有武器” — 这句话将添加复杂度。
就像创建名字和姓氏的文本文件一样,首先分别创建设置、目标、敌人和复杂度的文本文
件。代码归档中附带了样例文件。在拥有这些文件后,生成场景的代码与生成名称的代码
基本相同。

 

清单 6. 生成场景
  $settings = explode("\n", file_get_contents('scenario.settings.txt'));
  $objectives = explode("\n", file_get_contents('scenario.objectives.txt'));
  $antagonists = explode("\n", file_get_contents('scenario.antagonists.txt'));
 

 

$complicati****

 

=

 

explode("\n", 

file_get_contents('scenario.complicati****.txt'));
  shuffle($settings);
  shuffle($objectives);