enygma / adventurelib
Python 'adventurelib' 库的 PHP 版本
dev-master
2019-03-20 14:46 UTC
Requires
- php: >=7.0
This package is auto-updated.
Last update: 2024-09-21 03:16:57 UTC
README
PHP Adventurelib 库是 Python adventurelib 库的 PHP 实现,尽可能地保持功能的一致性。
两种语言在功能实现上存在差异,导致接口略有不同,但库的精神是一致的:提供一个简单的结构来创建基于文本的冒险游戏。
制作简单游戏
以下是一个创建单房间游戏的示例。在一个 PHP 文件中(例如 game.php
)放置以下内容
<?php require_once __DIR__.'/vendor/autoload.php'; $game = new \Adventurelib\Game(); $game->addRoom( new \Adventurelib\Room('Test Room 1', 'Just a basic room with not much in it') ); $game->run(); ?>
然后你可以在命令行中运行这个游戏: php game.php
。你将看到一个等待你输入的 '>prompt'。在这样一个简单的游戏中,只包含一个命令:`help`。
添加命令
要添加额外的命令,使用 \Adventurelib\Command
类创建一个实例。第一个参数是命令匹配模式,第二个参数是当命令被调用时执行的闭包。例如,要添加一个 "look" 命令来显示当前房间的信息,你可以使用以下代码
<?php $look = new \Adventurelib\Command('look', function($game) use ($cli) { $room = $game->getCurrentRoom(); echo $room."\n"; // List out items in the room $itemList = []; foreach ($room->items as $item) { $itemList[] = $item->getName(); } echo "You see ".implode(", ", $itemList); // List the exits echo 'You can exit '.implode(', ', array_keys($room->getExits())); }); $game->addCommand('look', $look); ?>