p-chess/chess 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

p-chess/chess

最新稳定版本:v1.0.0

Composer 安装命令:

composer require p-chess/chess

包简介

A PHP chess library that is used for chess move generation/validation, piece placement/movement, and check/checkmate/stalemate detection

README 文档

README

Chess is a PHP chess library used for chess move generation/validation, piece placement/movement, and check/checkmate/stalemate detection - basically everything but the AI.

NOTE: this started as a port of chess.js for PHP, forked from ryanhs/chess.php

Latest Stable Version MIT License

Installation

use composer with composer require p-chess/chess or put in your composer.json

"require": { "p-chess/chess": "^1.0" } 

Example Code

The code below plays a complete game of chess ... randomly.

<?php require 'vendor/autoload.php'; use \PChess\Chess\Chess; use \PChess\Chess\Output\UnicodeOutput; $chess = new Chess(); while (!$chess->gameOver()) { $moves = $chess->moves(); $move = $moves[random_int(0, count($moves) - 1)]; $chess->move($move->san); } echo (new UnicodeOutput())->render($chess) . PHP_EOL;
 +---+---+---+---+---+---+---+---+ 8 | | ♜ | ♘ | | | | | | +---+---+---+---+---+---+---+---+ 7 | ♞ | | | | | | | | +---+---+---+---+---+---+---+---+ 6 | | | | | | | | | +---+---+---+---+---+---+---+---+ 5 | | | | | | | | | +---+---+---+---+---+---+---+---+ 4 | | | | | | ♚ | ♟ | | +---+---+---+---+---+---+---+---+ 3 | ♜ | | | | | | | | +---+---+---+---+---+---+---+---+ 2 | | | | | | | | | +---+---+---+---+---+---+---+---+ 1 | ♔ | | | | ♞ | | | | +---+---+---+---+---+---+---+---+ a b c d e f g h 

Supported output formats

ASCII

Pieces are displayed with corresponding codes (e.g. "p" for pawn, "q" for queen, etc.).

<?php // use... $chess = new Chess(); echo (new AsciiOutput())->render($chess);

Unicode

Pieces are displayed like in the example above.

<?php // use... $chess = new Chess(); echo (new UnicodeOutput())->render($chess);

PNG Image

Pieces are displayed inside a png image.

<?php // use... $chess = new Chess(); $imagine = new \Imagine\Gd\Imagine(); // or \Imagine\Imagick\Imagine() $output = new ImageOutput($imagine, '/your/path/to/images', 480); header('Content-Type: image/png'); echo $output->render($chess);

See dedicated documentation for detailed instructions.

SVG Image

Pieces are displayed inside an SVG image.

<?php // use... $chess = new Chess(); $output = new SvgOutput(); echo $output->render($chess);

HTML

Pieces are displayed inside an HTML table.

See dedicated documentation for detailed instructions.

Performance

There is still a lot to do in this topic.
akondas/php-grandmaster is a good place to start experiment ;)

Chess::move()

iteration mean comment
1 548.819μs initial
2 447.973μs replace fen with json_encode in history position (inThreefoldRepetition cache)
3 340.375μs replace fen with json_encode in generateMoves
4 333.145μs add boardHash calculation on make/undo move
5 25.917μs ???? add cache for moveToSAN method

Other documentation

All classes are documented in the docs directory.

统计信息

  • 总下载量: 2.72k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 45
  • 点击次数: 3
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 45
  • Watchers: 5
  • Forks: 6
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固