bissolli/php-match-card-game

使用PHP构建的简单卡牌游戏,让玩家相互对抗,乐趣无穷。最先把自己的手牌出完的人获胜!

v1.0.1 2018-10-06 09:26 UTC

This package is auto-updated.

Last update: 2024-09-06 23:21:14 UTC


README

使用PHP构建的简单卡牌游戏,让玩家相互对抗,乐趣无穷。最先把自己的手牌出完的人获胜!

Build Status Latest Stable Version Total Downloads License

安装

要开始,需要以下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许可