48 lines
1.3 KiB
C#
48 lines
1.3 KiB
C#
namespace MauMau_Server.Mau;
|
|
|
|
public class Game
|
|
{
|
|
public readonly Deck Deck = new();
|
|
public Card CurrentCard;
|
|
public List<Card> Hand;
|
|
|
|
public Game()
|
|
{
|
|
CurrentCard = Deck.DrawCard();
|
|
Deck.AddCardToUsedDeck(CurrentCard);
|
|
Hand = Deck.DrawCards(8);
|
|
}
|
|
|
|
public void PlayCard(Card card)
|
|
{
|
|
if (!IsCardInHand(Hand, card) || !IsCardPlayable(CurrentCard, card)) return;
|
|
Deck.AddCardToUsedDeck(card);
|
|
Hand.Remove(GetSameCardFromHand(Hand, card));
|
|
CurrentCard = card;
|
|
}
|
|
|
|
private Card GetSameCardFromHand(IEnumerable<Card> hand, Card card)
|
|
{
|
|
return hand.FirstOrDefault(handCard => IsSameCardType(handCard, card) && IsSameCardValue(handCard, card));
|
|
}
|
|
|
|
private bool IsCardPlayable(Card currentCard, Card playedCard)
|
|
{
|
|
return IsSameCardType(currentCard, playedCard) || IsSameCardValue(currentCard, playedCard);
|
|
}
|
|
|
|
private bool IsCardInHand(IEnumerable<Card> hand, Card card)
|
|
{
|
|
return hand.Any(handCard => IsSameCardType(handCard, card) && IsSameCardValue(handCard, card));
|
|
}
|
|
|
|
private static bool IsSameCardType(Card card1, Card card2)
|
|
{
|
|
return card1.CardType == card2.CardType;
|
|
}
|
|
|
|
private static bool IsSameCardValue(Card card1, Card card2)
|
|
{
|
|
return card1.CardValue == card2.CardValue;
|
|
}
|
|
} |