basic mau

This commit is contained in:
2023-03-16 17:11:15 +01:00
parent 4f85f6f793
commit c902493e28
5 changed files with 76 additions and 9 deletions

View File

@@ -3,6 +3,7 @@
public class Deck
{
public List<Card> UnusedDeck = new();
public List<Card> UsedDeck = new();
public Deck()
{
@@ -37,4 +38,9 @@ public class Deck
}
return cards;
}
public void AddCardToUsedDeck(Card card)
{
UsedDeck.Add(card);
}
}

48
Mau/Game.cs Normal file
View File

@@ -0,0 +1,48 @@
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;
}
}

16
Mau/GameState.cs Normal file
View File

@@ -0,0 +1,16 @@
namespace MauMau_Server.Mau;
public class GameState
{
public List<string> Hand { get; set; } = new();
public string CurrentCard { get; set; }
public GameState(Game game)
{
foreach (var card in game.Hand)
{
Hand.Add(card.ToString());
}
CurrentCard = game.CurrentCard.ToString();
}
}

View File

@@ -2,13 +2,13 @@
public class HandDTO
{
public List<string> _cards { get; set; } = new();
public List<string> Cards { get; set; } = new();
public HandDTO(List<Card> cards)
{
foreach (var card in cards)
{
_cards.Add(card.ToString());
Cards.Add(card.ToString());
}
}