atsmacode/poker-game

该软件包最新版本(v4.0.1)没有提供许可证信息。

基于PHP的扑克游戏

安装: 145

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:项目

v4.0.1 2023-04-30 09:53 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'
        ]
    ],
];