garak/card

一个用于管理通用纸牌游戏的 PHP 库

v0.5.0 2024-04-02 06:30 UTC

This package is auto-updated.

Last update: 2024-09-03 17:08:40 UTC


README

Latest Stable Version Latest Unstable Version License PHP Version Require Maintainability Test Coverage

https://commons.wikimedia.org/wiki/Category:Playing_cards#/media/File:A_pile_of_playing_cards.jpg

介绍

此库提供了一些 VO 类,可以在 Card 相关的应用程序中使用

  • Card:表示一张牌,例如黑桃 A。
  • Rank:表示牌的面值,例如 "A" 或 "7"("T" 用于 10,以保持相同的长度)。
  • Suit:表示牌的花色,例如黑桃或红心。

还有一些更详细、更抽象的类可用。它们是抽象的,因此需要自定义实现来扩展它们

  • Hand:表示一组 Card 对象,通常是分配给玩家的那些
  • HandsTrick:表示一组手牌(例如在扑克中,当玩家展示手牌以宣布赢家时)
  • CardTrick:表示一组牌(例如在桥牌中,一个桥转换的 4 张牌)

安装

只需使用 composer require garak/card

用法

示例

<?php

require 'vendor/autoload.php';

use Garak\Card\Card;
use Garak\Card\Rank;
use Garak\Card\Suit;

$card = new Card(new Rank('A'), new Suit('d'));
echo $card; // will output "Ad"

$card = new Card(new Rank('7'), new Suit('s'));
echo $card->toText(); // will output "7♠"

$card = Card::fromRankSuit('Kh');
echo $card->toUnicode(); // will output "🂾"

您还可以获取一副完整的牌

<?php

require 'vendor/autoload.php';

use Garak\Card\Card;

$orderedCards = Card::getDeck();
$shuffledCards = Card::getDeck(true);
$doubleDeckWithJokers = Card::getDeck(true, 2, true);