I C# what you did there 🙂
Først kan jeg se at du har Ace på plads 1 (eller faktisk 0 jo), så hvordan har du tænkt dig at vurder hvem der vinder et udspil hvis Ace er en af de spillede kort? Sæt den sidst så den har den højeste enum værdi.
2: Hvor er alle dine klasser? Klasser, klasser, klasser. Card, Deck, Player og Game (glem hand, det har du ikke brug for i dette spil fordi spillet er tabt når Player ikke har flere kort tilbage).
Et Card objekt har en FaceValue og en Suit enum. Det duer ikke at et kort bare er en string. I krig bruges Suit ikke til noget, men du vil gerne bygge en brygbart lib du kan tage med videre.
C# har en fantastisk Generic Collection Lib som indeholder en List. Den har en dynamisk længde, så du ADDer bare og REMOVEr når du fjerner.
Et Deck består af en privat List cardsInDeck. Der er ingen der skal kigge stikke sine fingre i disse kort. Det er Deck klassen selv der styre det helt 100%. Så den har en Draw funktion der returner en type af Card. Dette Card lægges så i en Players Stack med en Take funktion. Players Draw funktion trækker fra Players egen liste. Som jeg vil implementere som en Queue fordi der altid tages fra toppen og vundne kort tages fra bunken.
Prøv at fortælle dig selv en historie om hvordan en af disse titler fungere i virkeligheden. Det forklare ligsom hvordan objektet skal designes for at løse de opgaver det har i den virkelige verden. Object Orienteret Programmering handler netop om at løse problemstillinger fra det virkelige liv i koden.
Prøv at starte med det her. De kan være i een fil eller du kan have det i flere filer. Det må du selv om. I starten er det nok nemmere have have det hele i een fil, men når du har styr på encapsulation, så kan du lægge alt i sine egne filer.
public enum Suit
{
Hearts,
Diamonds,
Clubs,
Spades,
}
public enum FaceValue
{
Two = 2,
Three = 3,
Four = 4,
Five = 5,
Six = 6,
Seven = 7,
Eight = 8,
Nine = 9,
Ten = 10,
Jack = 11,
Queen = 12,
King = 13,
Ace= 14,
}
public class Card
{
public Suit Suit { get; private set; }
public FaceValue FaceValue { get; private set; }
public int IntValue => (int)FaceValue;
public Card(Suit suit, FaceValue faceValue)
{
Suit = suit;
FaceValue = faceValue;
}
public override string ToString()
{
return $"{FaceValue} of {Suit}";
}
}