echo roll(20); // roll a twenty-sided die
从这里开始,我们可以继续根据需要一次滚动多个骰子,返回结果数组;也可以一次性
滚动多个不同类型的骰子。但是大多数任务都可以使用这个简单的脚本。
随机名称生成器
如果正在运行游戏、编写故事或者一次性创建大批字符,有时会疲于应付不断出现的新名
字。让我们看一看可用于解决此问题的一个简单随机名称生成器。首先,让我们创建两个
—
简单数组
一个用于名字,一个用于姓氏。
清单 3. 名字和姓氏的两个简单数组
$male = array(
"William",
"Henry",
"Filbert",
"John",
"Pat",
);
$last = array(
"Smith",
"Jones",
"Winkler",
"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