1.3-Object-Georienteerd-Programmeren

Yahtzee

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.

Implementatie

We hebben drie klassen nodig voor deze opdracht: een klasse Yahtzee, wat het spel voorspelt, een klasse Turn, wat een ronde (of te wel een verzameling van dobbelstenen) voorstelt 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 Turn waarin 5 dobbelstenen worden gerold. De klasse Yahtzee maakt tenslotte per “ronde” een nieuwe Turn instantie aan.

Onderstaand het sequence diagram dat dit uitbeeld.

Visualisatie

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 Turn 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).

Onderstaand het sequence diagram dat dit uitbeeld.

Yahtzee bepalen

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 Turn 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.

Bonus: Overige combinaties bepalen (3 + 1)

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: