aminyazdanpanah/rush-hour-solver

此软件包已被废弃,不再维护。未建议替代软件包。

🚗 拥挤时段游戏求解器

v0.1.0 2022-08-11 15:41 UTC

This package is not auto-updated.

Last update: 2023-11-12 23:11:21 UTC


README

拥挤时段是一款在6x6方格板(可以更大)上玩的微型滑动板游戏。游戏的目标是通过滑动车辆,将周围交通让开,移动到空白方格上,直到红色的汽车可以开出板右边的出口。请注意,车辆只能向前或向后移动,不能向侧面移动。使用google或这个视频来获得印象。

rush-hour.gif

内容

需求

此软件包版本仅与PHP 8.1或更高版本兼容。

安装

通过 composer 安装此软件包

composer require aminyazdanpanah/rush-hour-solver

或者,直接将依赖项添加到您的 composer.json 文件中

"require": {
    "aminyazdanpanah/rush-hour-solver": "^0.1"
}

快速入门

首先,您需要将软件包包含在您的代码中

require 'vendor/autoload.php'; // path to the autoload file

加载板

有两种方式来加载板。

1. 从数组

use RushHourSolver\BoardLoader;

$board_array = [
    [".", ".", ".", ".", "A", "A"],
    [".", ".", "B", "B", "C", "C"],
    ["r", "r", ".", ".", "E", "F"],
    ["G", "G", "H", "H", "E", "F"],
    [".", ".", ".", "I", "E", "F"],
    [".", ".", ".", "I", "J", "J"],
];

$board_loader = new BoardLoader($board_array);
$board = $board_loader->getBoard();

2. 从文件

use RushHourSolver\BoardLoader;

$board_loader = new BoardLoader();
$board_loader->loadBoardFromFile("/path/to/board.txt");
$board = $board_loader->getBoard();

求解板

use RushHourSolver\BoardSolver;
use RushHourSolver\Enums\Direction;
use RushHourSolver\Enums\Orientation;

$board_solver = new BoardSolver($board);
$solutions = $board_solver->getSolution();

foreach ($solutions as $index => $solution) {
    $vehicle = $solution[0];
    $direction = $solution[1];

    if ($vehicle->getOrientation() === Orientation::HORIZONTAL && $direction === Direction::FORWARD) {
        $direction_name = "Right";
    } elseif ($vehicle->getOrientation() === Orientation::HORIZONTAL && $direction === Direction::BACKWARD) {
        $direction_name = "Left";
    } elseif ($vehicle->getOrientation() === Orientation::VERTICAL && $direction === Direction::FORWARD) {
        $direction_name = "Down";
    } elseif ($vehicle->getOrientation() === Orientation::VERTICAL && $direction === Direction::BACKWARD) {
        $direction_name = "Up";
    } else {
        $direction_name = "Unknown";
    }

    echo "\n" . $index + 1 . ": " . $vehicle->getName() . " -> " . $direction_name;
}

输出

求解板的步骤

output.jpg

贡献和报告错误

我很乐意得到您的帮助来改进、纠正或添加到规范中。请 提交一个问题提交一个pull请求

  • 有关更多信息,请参阅 贡献文件
  • 如果您在此软件包中发现安全漏洞,请参阅 安全文件 以获取更多信息。

致谢

许可

MIT许可(MIT)。有关更多信息,请参阅 许可文件