enygma / adventurelib

Python 'adventurelib' 库的 PHP 版本

dev-master 2019-03-20 14:46 UTC

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