We gaan een applicatie bouwen waarmee we 5 dobbelstenen kunnen werpen. De dobbelstenen gaan we visualiseren door ze te tekenen op het canvas. In het laatse deel van de opdracht ga je bepalen of er Yahtzee gegooid is.
We hebben drie klassen nodig voor deze opdracht: een klasse Yahtzee, wat het spel voorstelt, een klasse Cup, wat het bakje voorstelt waarin de dobbelstenen zitten (of te wel een verzameling van dobbelstenen) en een klasse Dice dat een enkele dobbelsteen voorstelt.
Maak een klasse Dice met een roll()
methode die een willekeurig getal van 1-6 teruggeeft. Maak vervolgens een klasse Cup waarin 5 dobbelstenen worden gerold. De klasse Yahtzee maakt vervolgens gebruik van deze Cup klasse om een nieuwe ronde te beginnen.
In de map images
vind je afbeeldingen van alle zijden van een dobbelsteen. Maak eerst een draw(int x, int y, int width)
methode in de klasse Dice die één dobbelsteen kan tekenen op een bepaalde locatie. Maak hierbij gebruik van de plaatjes uit de images
map.
Maak vervolgens een draw()
methode in de Cup klasse waarmee alle dobbelstenen getekend kunnen worden. De klasse Yahtzee dient tenslotte ook een methode draw()
te hebben die de dobbelstenen van de huidige ronde tekent én de gevonden combinatie (komen we zo op terug).
Als alle dobbelstenen gelijk zijn dan is er sprake van Yahtzee. Als er Yahtzee gegooid is, print het dan in het scherm. Schrijf hiervoor een methode isYathzee()
in de klasse Cup die bepaalt of er in die ronde inderdaad sprake is van Yahtzee. Gebruik deze methode vervolgens in de draw()
methode van de klasse Yahtzee om dit onderschrift te tekenen.
Onderstaand het sequence diagram dat dit uitbeeld met een mogelijk algoritme, je kant het controlleren natuurlijk op een andere manier oplossen.
Alle mogelijke combinaties voor Yahtzee vind je hier.. Dit is een behoorlijk pittige oefening! Begin daarom simpel en werk dit steeds verder uit. Begin bijvoorbeeld met four-of-a-kind en three-of-a-kind en maak hier, vergelijkbaar met de isYahtzee()
methoden eigen methoden voor. Implementeer tenslotte de methode determineCombination()
methode aan die een String representatie teruggeeft die aangeeft wat de hoogste mogelijke combinatie is.
Hints: