bissolli / php-match-card-game
使用PHP构建的简单卡牌游戏,让玩家相互对抗,乐趣无穷。最先把自己的手牌出完的人获胜!
v1.0.1
2018-10-06 09:26 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-06 23:21:14 UTC
README
使用PHP构建的简单卡牌游戏,让玩家相互对抗,乐趣无穷。最先把自己的手牌出完的人获胜!
安装
要开始,需要以下Composer包
composer require bissolli/php-match-card-game
或者简单地克隆项目,运行 composer install
并检查 index.php
文件
游戏规则
- 牌组由52张牌组成。
- 每个玩家开始时拥有相同数量的牌(默认:7张)。
- 游戏从牌组的顶部牌开始,这将形成剩余牌组。
- 每个回合,另一个玩家将一张牌放在剩余牌组的顶部。
- 这张牌必须与顶部的牌价值相同或颜色相同。
- 如果玩家不能放置牌,则应从牌组中抽取一张新牌,并跳过他的回合。
- 第一个没有任何牌的玩家获胜。
用法
开始游戏的第一步是实例化Game类,这将成为我们的"游戏管理器",并准备好洗牌的牌组。
$game = new \Bissolli\CardGame\Game();
一旦游戏准备就绪,我们需要添加玩家 - 只要牌组支持,你可以添加任意数量的玩家。记住,每个玩家开始时有7张牌,牌组总共有52张牌。
$playerA = new \Bissolli\CardGame\Models\Player('Freek'); $playerB = new \Bissolli\CardGame\Models\Player('Bas'); $playerC = new \Bissolli\CardGame\Models\Player('Henk'); $playerD = new \Bissolli\CardGame\Models\Player('Pieter'); $game->addPlayers([ $playerA, $playerB, $playerC, $playerD ]); // Adding one by one also works // $game->addPlayers($playerA); // $game->addPlayers($playerB); // ...
只要牌组准备就绪并且玩家已经登记,让我们为每个玩家发7张牌。
$game->serveCards();
要开始游戏并将牌组的顶部牌移动到剩余牌组
$game->start();
从现在起,我们都可以使用以下方法
// To get the current card // @return \Bissolli\CardGame\Models\Card $game->getCurrentCard(); // To get all the players // @return array of \Bissolli\CardGame\Models\Player $game->getPlayers(); // To play a card - add the the leftover deck and set as current $game->playCard(Card $card); // Get deck // @returns DeckManager $game->getDeck(); // Get leftover deck // @returns DeckManager $game->getLeftOverDeck(); // Get players name - comma separated $game->stringfyPlayers();
下面是Card模型可用方法
// Get card's face $card->getFace(); // Get card's color $card->getColor(); // Get card's suit $card->getSuit(); // Get card's full name (face + suit) $card->toString();
下面是Player模型可用方法
// Get player's name $player->getName(); // Get player's hand // @return array of Card $player->getHand(); // Add card to player's hand $player->addCardToHand(Card $card); // Get player's hand as string $player->stringfyHand(); // See if there is a similar card in the player's hand $player->fetchSimilarCard(Card $cardToBeCompared); // Count how many card there is left with the player $player->countHand();
下面是DeckManager可用方法
// Get the list of the cards in the deck $deck->getDeck(); // Shuffle the deck $deck->shuffle(); // Get X random cards from the deck $deck->getRandomCards(int $amount); // Shift the top card from the deck $deck->shiftDeck(); // Add a card to the deck $deck->addCard(Card $card); // Count how many card there is in the deck $deck->count();
输出
您可以在./index.php
中看到一个代码示例,它应该输出如下
Starting game with Freek, Bas, Henk, Pieter Freek has been dealt: 1♠ King♠ 6♦ Jack♠ 9♣ Jack♥ 3♦ Bas has been dealt: 10♠ Queen♦ 10♦ 3♣ Jack♦ 9♠ Jack♣ Henk has been dealt: 6♥ 1♣ 9♦ 1♥ 1♦ 8♦ 6♠ Pieter has been dealt: 7♣ Queen♥ 4♠ 9♥ 2♦ 2♠ 8♣ Top card is: 6♣ Freek plays King♠ Bas plays 3♣ Henk plays 6♠ Pieter plays 2♠ Freek plays Jack♠ Bas plays Jack♦ Henk plays 8♦ Pieter plays 2♦ Freek plays 3♦ Bas plays Queen♦ Henk plays 6♥ Pieter plays Queen♥ Freek plays 6♦ Bas plays 10♦ Henk plays 1♥ Pieter plays 9♥ Freek plays 9♣ Bas plays Jack♣ Henk plays 1♣ Pieter plays 8♣ Freek plays 1♠ Bas plays 9♠ Henk plays 9♦ Pieter does not have a suitable card, taking from deck 4♦ Freek plays Jack♥ Freek has won
作者
许可证
Laravel Cashier是开源软件,许可协议为MIT许可。