atsmacode / poker-game
基于PHP的扑克游戏
Requires
- atsmacode/card-games: ^2.0
- doctrine/dbal: ^3.5
- laminas/laminas-diactoros: ^2.24
- laminas/laminas-servicemanager: ^3.19
- monolog/monolog: ^1.22 || ^2.0 || ^3.0
- symfony/console: 5.4.* || ^6.0
- symfony/http-kernel: 5.4.* || ^6.2
Requires (Dev)
- phpunit/phpunit: ^9.5
- dev-main
- v4.0.1
- v4.0.0
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.1
- v1.0.0
- dev-waiting
- dev-PKR-auth
- dev-PKR-kernel
- dev-PKR-log
- dev-PKR-min
- dev-PKR-ref
- dev-PKR-hands
- dev-PKR-vis
- dev-PKR-schema
- dev-PKR-config
- dev-PKR-doctrine
- dev-PKR-requests
- dev-PKR11
- dev-PKR10
- dev-PKR9
- dev-P8
- dev-P7
- dev-P6
- dev-P5
- dev-P4
- dev-P3
- dev-action-fixes
- dev-card-consts
This package is auto-updated.
Last update: 2024-09-25 14:54:54 UTC
README
一个由数据库驱动,提供逻辑以驱动基本德州扑克游戏的软件包。
它可以通过composer拉取,用于父前端软件包内,但也可以作为一个API用于独立容器。
关于它如何工作的简要描述是
- SitController启动一个新的手牌
- PlayerActionController接受一个包含正在玩的手牌信息和最后发生的事情(最后行动的是谁以及他们采取了什么行动)的请求
- 此数据传递给ActionHandler,它会根据需要更新所有玩家的状态,并返回一个包含当前手牌所有信息的GameState对象
- GameState传递给GamePlay类,该类决定手牌下一步应该发生什么
- 根据下一步是什么,逻辑被委派给相应的HandStep接口,执行每个事物的适当过程
- 玩家仍在街道上投注
- 应该发一张新的街道牌
- 所有投注都已在河牌上叫齐,我们已经达到了摊牌
- 应该开始新的一手牌
- 如果我们已经到达摊牌,Showdown类将通过调用HandIdentifier来确定赢家,HandIdentifier根据活动的牌的排名(例如,一对K的手牌中,K是活动牌)和踢子来确定玩家手中的每一手牌的排名
- 返回更新后的GameState
这绝对不是一个完成的扑克游戏。以下是一些它还没有做的事情
- 分割和边池
- 全压注
- 无限注投注
- 游戏赢家/输家与手牌赢家/输家相反
- 递增盲注和前注
测试主要基于功能测试,我在这里设置了一系列场景。
文档
我保存了一些使用Lucid Charts计划和绘制更改的示例
改进
规划
环境
PHP
8.1.3
MySQL
8.0.13
命令
Linux
构建测试数据库
dev/builddb
运行单元测试套件
dev/phpunit
单个Drop、Create和Seed命令。对于生产环境请移除'-d true'
php dev/PokerGameApp.php app:create-database -d true
php dev/PokerGameApp.php app:build-card-games -d true
php dev/PokerGameApp.php app:build-poker-game -d true
Windows
删除、创建和填充所有表格
.\dev\builddb.bat
运行单元测试套件
.\dev\runtests.bat
单个Drop、Create和Seed命令。对于生产环境请移除'-d true'
php .\dev\PokerGameApp.php app:create-database -d true
php .\dev\PokerGameApp.php app:build-card-games -d true
php .\dev\PokerGameApp.php app:build-poker-game -d true
Laragon
使用Laragon,以下示例路径运行PHP可能很有用
C:\laragon\bin\php\php-8.1.3-nts-Win32-vs16-x64/php
配置
您需要添加poker_game.php以配置您的本地数据库凭据和日志路径,如下所示
<?php
return [
'poker_game' => [
'db' => [
'live' => [
'servername' => 'localhost',
'username' => 'DB_USER',
'password' => 'DB_PASSWORD',
'database' => 'poker_game',
'driver' => 'pdo_mysql',
],
'test' => [
'servername' => 'localhost',
'username' => 'DB_USER',
'password' => 'DB_PASSWORD',
'database' => 'poker_game_test',
'driver' => 'pdo_mysql',
],
],
'logger' => [
'path' => '/your/log/file'
]
],
];