photogabble/draughts

shubhendusaurabh/draughts.js的PHP端口

dev-master 2018-11-27 10:46 UTC

This package is auto-updated.

Last update: 2024-08-27 23:54:32 UTC


README

draughts.js的PHP端口draughts.js

Build Status License Gitmoji

关于此包

这是一个用于棋子生成/验证、棋子放置/移动和和棋检测的PHP检查器库。对于编写多人跳棋游戏的服务器端实现非常有用。它已从JavaScript实现移植而来,由@shubhendusaurabh完成。您可以在这里查看此项目的贡献者列表。

安装

使用composer安装:composer require photogabble/draughts

示例用法

以下代码将玩一局完整的跳棋游戏,每次移动都是随机选择的,并输出每一步的结果

$draughts = new Draughts();
echo $draughts->ascii();
while (!$draughts->gameOver())
{
    $moves = $draughts->generateMoves();
    $move = $moves[array_rand($moves, 1)];
    $draughts->move($move);
    echo $draughts->ascii();
}

PDN查看器

在开发此端口的过程中,我发现这个PDN查看器对于帮助我理解PDN结构以及作为此库生成的PDN的视觉调试器来说非常有价值。

公共API

构造函数

Draughts类的__construct方法接受一个可选的string参数,该参数定义了初始棋盘配置,格式为Forsyth-Edwards Notation

// Board defaults to the starting position when call with no parameter
$draughts = new Draughts;

// Pass in a FEN string to load a particular position
$draughts = new Draughts('W:W31-50:B1-20');

ascii(bool $unicode = false): string

返回包含当前位置ASCII图的字符串。

reset(): void

将棋盘重置为初始起始位置。

generateFen(): string

返回当前位置的Forsyth-Edwards Notation(FEN)字符串。

gameOver(): bool

如果没有剩余的移动或没有棋子规则,游戏结束,则返回true。否则,返回false

inDraw(): bool

开发中,见问题#4

inThreefoldRepetition()

开发中,见问题#5

move(Move $move): ?Move

尝试在棋盘上执行移动,如果移动是合法的,则返回一个Move对象,否则返回null

generateMoves(int $square = null): array

返回从当前位置出发的合法移动列表。该函数接受一个可选参数,用于控制单格移动生成。

turn(): string

返回当前轮到哪一方移动。

undo(): ?Move

撤销最后一步半移动,如果成功,则返回一个Move对象,否则返回null

get($square): string

返回方格上的棋子。

remove(int $square): string

移除方格上的棋子。

put(string $piece, int $square): bool

将棋子放在方格上,如果放置有效,则返回true,否则返回false

getHistory(bool $verbose = false): array

返回包含当前游戏移动的列表。

setHeader(array $values = []): array

更新头部属性。

loadPDN(string $pdn, array $options = [])

加载存储在 便携式跳棋记法 中的游戏走法。Options 是一个可选参数,包含一个 'newline_char',它是一个表示正则表达式的字符串(不应进行预转义)并且默认值为 '\r?\n')。如果 pdn 解析成功则返回 true,否则返回 false

非原创

这最初是 shubhendusaurabh/draughts.js 的 PHP 版本。