mirror of
https://github.com/sigmasternchen/php-chess
synced 2025-03-15 07:58:54 +00:00
feat: Add board visualisation
This commit is contained in:
parent
cfc58ec817
commit
1d1877f79e
1 changed files with 42 additions and 0 deletions
|
@ -245,6 +245,48 @@ class Game {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function visualize(): string {
|
public function visualize(): string {
|
||||||
|
$result = " ";
|
||||||
|
|
||||||
|
for ($file = 0; $file < 8; $file++) {
|
||||||
|
$result .= chr(ord('A') + $file) . " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
$result .= "\n";
|
||||||
|
|
||||||
|
for ($rank = 7; $rank >= 0; $rank--) {
|
||||||
|
$result .= ($rank + 1) . " ";
|
||||||
|
|
||||||
|
for ($file = 0; $file < 8; $file++) {
|
||||||
|
$color = ($rank % 2) ^ ($file % 2);
|
||||||
|
$result .= "\033[" . ($color ? 47 : 100) . "m";
|
||||||
|
|
||||||
|
$piece = current(array_filter($this->pieces, fn($p) => $p->getPosition()->equals(new Position($rank, $file))));
|
||||||
|
if ($piece) {
|
||||||
|
if ($piece->getSide() == Side::WHITE) {
|
||||||
|
$result .= "\033[97m";
|
||||||
|
} else {
|
||||||
|
$result .= "\033[30m";
|
||||||
|
}
|
||||||
|
|
||||||
|
$result .= $piece->getShort() . " ";
|
||||||
|
} else {
|
||||||
|
$result .= " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
$result .= "\033[0m";
|
||||||
|
}
|
||||||
|
|
||||||
|
$result .= " " . ($rank + 1) . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$result .= " ";
|
||||||
|
|
||||||
|
for ($file = 0; $file < 8; $file++) {
|
||||||
|
$result .= chr(ord('A') + $file) . " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
$result .= "\n";
|
||||||
|
|
||||||
|
return $result;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue