Beschrijving
Galgje is een spelletje waarbij een speler letter voor letter de letters van een woord of zin moet raden. Initieel krijgt de speler enkel te zien hoeveel letters het woord of de zin telt. De speler krijgt slechts een beperkt aantal beurten om het woord te raden, waarbij er telkens een beurt verloren gaat als de speler om een letter vraagt die niet in het woord of de zin voorkomt. Doorgaans wordt op basis van een tekening van een galg aangegeven hoeveel fouten de speler reeds heeft gemaakt, en dus onrechtstreeks ook hoeveel fouten hij nog mag maken.

Opgave
Maak een klasse Hangman2 dat je kan gebruiken voor het spelen van een spelletje Hangman (Galgje). De klasse bevat de volgende instantie variabelen:
- Het geheime woord of zin wordt opgeslagen in een array van char met naam teRadenTekst
- De reeds geraden karakters worden opgeslagen in een array van char met naam geRadenTekst. Deze array heeft dezelfde lengte als de instantievariabele teRadenTekst en is partieel gevuld met de reeds geraden karakters. Spaties moeten niet geraden worden en zijn dus steeds toegevoegd aan de array. Bijboorbeeld: teRadenTekst = [a,b,r,a, ,c,a,d,a,b,r,a], geRadenTekst = [a,b,?,a, ,?,a,?,a,b,?,a]
- Het aantal pogingen wordt opgeslagen in de int instantievariabele aantalPogingen
- Het aantal niet correcte pogingen wordt opgeslagen in de int instantievariabele aantalNietCorPogingen
De klasse bevat de volgende methodes:
- Defineer een default constructor met als argument een array van Strings. De contructor zal random een woord of zin halen uit deze array en deze String gebruiken voor het initaliseren van de instantiavariabele teRadenTekst en geRadenTekst. De instantievariabele geRadenTekst is teRadenTekst waarin alle letters vervangen zijn door vraagtekens (spaties blijven gewoon staan). De instantievariabelen aantalPoginingen en het aantalCorPogingen wordt gelijk gesteld aan O.
- Definieer accessor methode voor de instantievariabelen geRadenTekst, aantalPogingen en aantalNietCorPogingen
- De methode raadLetter heeft een char als argument en retourneert true indien de letter wordt gevonden in het woord. Deze methode zal ook de instantievariabelen aanpassen indien nodig. De methode werk enkel voor letters. Indien wordt gezocht naar een niet-letter zullen de instantievariabelen aantalPogingen en aantalNietCorPogingen niet worden gewijzigd.
- De methode isGeraden zonder argumenten die true retourneert indien alle letters van de teRadenTekst gevonden zijn.
Bijkomende info
- een stuk tekst kan letters, hoofdletters en spaties bevatten.
- een gok is hoofdletter ongevoelig, de juiste vorm moet wel in verborgenWoord verschijnen
- een eerder gegokte letter opnieuw proberen mag en heeft invloed op de telling
- gebaseerd op oef 6, pagine 407 - Savitch en Mock
- gebaseerd op dodona oefening https://dodona.ugent.be/nl/exercises/1731116787/
Hierbij nog wat uitleg over de Dodona-testen voor deze oefening:
- test00objectConcept: test of de ingediende klasse de verwachte de klasse definitie heeft (interface/abstracte klasse/klasse/enum/…).
- test01inheritance: test of de ingediende klasse de verwachte superklasse heeft en de verwachte interfaces implementeert.
- test02variables_presence: test of de ingediende klasse de verwachte instantievariabelen en statische variabelen definieert.
- test03variables_staticInitialValue: test of de statische variabelen van de klasse geinitialiseerd worden met de verwachte waarde (indien van toepassing).
- test04constructor: test of de constructor het gewenste effect heeft (indien van toepassing).
- test05methodsPresent: test of de verwachte methodes aanwezig zijn in de ingediende klasse en of de methode definities overeenkomen met de verwachte definities (= test geen effect!).
- test06accessorsMutators: test of de ingediende klasse de al dan niet verwachte accessor- en mutatormethodes definieert en of deze het verwachte effect hebben.
- test07raadLetter: test de raadLetter-methode.
- test08isGeraden: test de isGeraden-methode.