Blackjack is een kaartspel dat vooral in casino’s vaak (om geld) wordt gespeeld. Het doel van het spel is om de bank (dealer) te verslaan. Hierbij moet men proberen dichter bij de 21 punten te komen dan de bank. Als de speler boven de 21 punten uitkomt heeft hij verloren, ongeacht wat de bank heeft.
Kaarten met afbeeldingen (boer, vrouw, heer) zijn 10 punten waard. De kaarten 2 - 10 hebben de waarde die zij aangeven. In deze oefening hebben kaarten slechts 1 waarde. De aas bestaat dus niet. Wel harten 1 of klaveren 11. Dat maakt deze oefening haalbaar.
In deze oefening programmeren we de klasse Hand
, een klasse die instanties van de klasse Kaart
verzamelt in een array
. Je maakt in BlueJ het project Blackjack met volgende klassen:
Kaart
: de code van Kanaal
kan je hier1 downloaden.Hand
: kopieer alvast de boilerplate-code uit de indiensectie op deze pagina naar jouw project.Alvorens je aan de opgave begint, loont het de moeite om de werking van de klasse Kaart
te bestuderen.
In de klasse Hand
vind je twee velden:
hand
: een array die maximaal 7 kaarten bijhoudt. De eerste kaart vind je op index 0, de tweede op index 1 enz.indexLaatsteKaart
: houdt de index bij van de laatste kaart die je vraagt aan de deler. Aangezien je bij
aanvang van het spel nog geen kaarten hebt, is de waarde van ìndexLaatsteKaart
bij initialisatie gelijk
aan -1.Programmeer volgende methoden:
void vraagKaart(Kaart)
De gegeven kaart wordt toegevoegd aan array hand
, tenminste als er nog plaats is. Vergeet niet om de
waarde van indexLaatsteKaart
aan te passen.
Kaart laatsteKaart()
Geeft de laatste kaart terug die je aan de deler gevraagd hebt. Heb je nog geen kaart gevraagd, laat dan
null
teruggeven.
void nieuwSpel()
Verwijderd alle kaarten uit array hand
. De instantie van Hand
is klaar om een nieuw spel te starten.
int totaleWaarde()
Geeft de totale waarde van de kaarten in de array hand
terug.
boolean heeft21()
Indien de totale waarde van de kaarten in de array hand
gelijk is aan 21, wordt true
teruggeven. Anders
laat je false
teruggeven.
boolean heeftBlackJack()
Indien de eerste twee kaarten de waarden 10 en 11 hebben (of omgekeerd), dan heb je Blackjack. In dat
geval geef je true
terug. In het ander geval laat je false
teruggeven.
void print()
Toont de kaarten in hand
in het Terminalvenster van BlueJ.
Wikipedia3, 2020