photogabble / draughts
shubhendusaurabh/draughts.js的PHP端口
Requires
- php: >=7.1.0
Requires (Dev)
- phpunit/phpunit: 6.*|7.*
This package is auto-updated.
Last update: 2024-08-27 23:54:32 UTC
README
draughts.js的PHP端口draughts.js
关于此包
这是一个用于棋子生成/验证、棋子放置/移动和和棋检测的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 版本。