pagrom / poker
dev-master
2018-10-31 12:39 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: ^7.5@dev
This package is not auto-updated.
Last update: 2024-09-26 18:20:28 UTC
README
一个基于PHP的德州扑克库,可以进行手牌计算、判断获胜手牌和准备手牌数据。
安装
composer require pagrom/poker
使用方法
use Pagrom\Poker\Card; use Pagrom\Poker\Combination\WinnerDeterminant; use Pagrom\Poker\Player; use Pagrom\Poker\PokerHelper; use Pagrom\Poker\Table; $pokerHelper = new PokerHelper(); $table = new Table(); $table->addPlayer(new Player('Dean')); $table->addPlayer(new Player('Sam')); $table->dealCards(); $pokerHelper->determineCombinations($table); $winnerDeterminant = new WinnerDeterminant($table); $winners = $winnerDeterminant->getWinners();
配置
见src/config/config.php 使用自定义配置
$pokerHelper = new PokerHelper($customConfig);
占位符将被其值替换
- :priority - 牌的优先级
- :priority_* - 按降序排列的牌的优先级
- :suit - 牌的花色
- :card_* - 牌的名称,按优先级降序排列
- :kicker - 第一踢牌
- :second_kicker - 第二踢牌
手动发牌
$dean = $table->getPlayer('Dean'); $sam = $table->getPlayer('Sam'); $table->dealCard($dean, $pokerHelper->getPriorityByName('Q'), $pokerHelper->getSuitByName('Spade')); $table->dealCard($dean, $pokerHelper->getPriorityByName('A'), $pokerHelper->getSuitByName('Spade')); $table->dealCard($sam, $pokerHelper->getPriorityByName('4'), $pokerHelper->getSuitByName('Spade')); $table->dealCard($sam, $pokerHelper->getPriorityByName('7'), $pokerHelper->getSuitByName('Club')); $table->dealCard($table, $pokerHelper->getPriorityByName('5'), $pokerHelper->getSuitByName('Heart')); $table->dealCard($table, $pokerHelper->getPriorityByName('2'), $pokerHelper->getSuitByName('Spade')); $table->dealCard($table, $pokerHelper->getPriorityByName('2'), $pokerHelper->getSuitByName('Diamond')); $table->dealCard($table, $pokerHelper->getPriorityByName('3'), $pokerHelper->getSuitByName('Heart')); $table->dealCard($table, $pokerHelper->getPriorityByName('4'), $pokerHelper->getSuitByName('Club'));
使用自定义玩家实例
自定义玩家类应实现PlayerInterface接口。特质HasCardsTrait和HasCombinationTrait可以帮助。
use Pagrom\Poker\Interfaces\PlayerInterface; use Pagrom\Poker\Traits\HasCardsTrait; use Pagrom\Poker\Traits\HasCombinationTrait; class CustomPlayer implements PlayerInterface { use HasCardsTrait, HasCombinationTrait; /** * @var string $name */ private $name; /** * @return string */ public function getName(): string { return $this->name; } } $table->addPlayer($customPlayer);
自定义发牌的随机器
$randomizerCallback = function(array $cardsKeys): int { return $cardsKeys[array_rand($cardsKeys)]; }; $table = new Table($randomizerCallback);
获取手牌数据
$handData = $pokerHelper->getCombinationData($winner->getCombination(), $winnerDeterminant)