Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Excerpt

Denne oppgaven handler som om klasser for kortspill: Card (kort), CardDeck (kortstokk) og CardHand (korthånd), hvorav de to siste inneholder én eller flere Card-objekter.

...

  • Card(char, int) - konstruktøren initialiserer kortfarge og tallverdi med henholdsvis første og andre argument. Konstruktøren må utløse unntak av typen IllegalArgumentException hvis en (eller begge) av disse verdiene er ugyldige.
  • getSuit() - returnerer kortfargen som en char, en av 'S', 'H', 'D' eller 'C'.
  • getFace() - returnerer tallverdien som en int mellom 1 og 13 (inklusive)

CardDeck-klassen inneholder initielt et visst antall kort av de fire kortfargene S', 'H', 'D' og 'C'. Klassen inneholder standardmetoder for å lese hvor mange og hvilke kort og to metoder for endre tilstand.

Konstruktør:

  • CardDeck(int n) - fyller kortstokken med de n første kortene av hver kortfarge, totalt n * 4 kort, med spar 1, som første kort (nr. 0), hjerter 1 som andre (nr. 1), ruter 1 som tredje (nr. 2), kløver 1 som fjerde (nr. 3), spar 2 som femte (nr. 4), hjerter 2 som sjette (nr. 5) osv.

Lesemetoder:

  • getCardCount() - returnerer hvor mange Card-objekter som CardDeck-objektet inneholder
  • getCard(int n) - returnerer kort nr. n eller utløser et IllegalArgumentException hvis n ikke er gyldig

Endringsmetoder:

  • deal(CardHand, int n) - flytter n kort fra kortstokken (CardDeck-objektet) til korthånda (CardHand-objektet, som er første argument), ved å ta ett og ett kort med høyeste gyldige nr., fjerne det fra CardDeck-objektet og legge det til CardHand-objektet
  • shufflePerfectly() - stokker kortstokken ved å dele den i to like store deler og flette de to delene perfekt, slik at kortet på toppen forblir på toppen og kortet på bunnen forblir på bunnen (se http://en.wikipedia.org/wiki/Out_shuffle)

CardHand-klassen inneholder initielt ingen kort, og inneholder de samme standardmetodene som CardDeck, altså getCardCount() og getCard(int), for å lese hvor mange og hvilke kort den inneholder. I tillegg har den to metoder for å endre tilstand:

  • addCard(Card) - legger argumentet til dette CardHand-objektet
  • play(int n) - fjerner kort nr. n (første kort har nr. 0) fra dette CardHand-objektet (som om det ble spilt ut)