Drop links or images here to add them to the editor.
Een woordspel bestaat erin om een zin te raden. Als startpunt krijgt de speler hiertoe een string te zien, waarin alle
letters van de te raden zin door een '-'-teken vervangen zijn. De te raden zin bestaat enkel uit kleine letters en spaties.
De speler kan volgende acties ondernemen:
- een medeklinker kopen: dit kost 1 punt, en de speler krijgt nu op elke plaats waar de medeklinker voorkomt, deze letter te zien
- een klinker (a, e, i, o, u) kopen: dit kost 5 punten, en de speler krijgt nu ook die klinker te zien
- een oplossing suggereren: indien de oplossing fout is, kost dit 10 punten, indien correct levert dit het resterend aantal punten op
Het initieel aantal punten wordt berekend als het aantal verschillende medeklinkers vermeerderd met 5 keer het aantal verschillende klinkers.
Programmeer in de klasse RaadZin het volgende:
- een constructor met 1 string-argument, namelijk de oplossing van het raadsel
- de methode
__str__() levert het raadsel aan de speler. Bij aanvang is dit een voorstelling van de oplossing, waarin alle letters
door '-'-tekens vervangen zijn. Wanneer letters gekocht werden, worden deze niet langer door '-'-tekens vervangen
- de methode
waarde() levert het aantal punten dat een correcte oplossing zou opleveren (de berekeningswijze wordt hierboven geschetst)
- de methode
koop() vertoont volgende gedrag:
- indien het argument een string is die een nog niet gekochte medeklinker bevat (dus 1 letter), dan wordt die letter niet langer gemaskeerd voor de gebruiker in
de
__str__()-methode, maar vermindert de waarde met 1 punt
- idem voor een klinker (a, e, i, o of u), maar nu vermindert de waarde met 5 punten
- in alle andere gevallen (de argumentstring bevat 1 gekochte letter, de argumentstring bevat meerdere karakters, de argumentstring bevat geen letters, ...) is de waarde
ongewijzigd
het resultaat van de methode is de huidige waarde van het raadsel (m.a.w. na de aankoop)
- de methode
poging() heeft 1 string-argument en vertoont volgende gedrag:
- indien de oplossing volledig correct is, is het resultaat van de methode
True en gebeurt er verder niets
- indien de oplossing niet volledig correct is, is het resultaat van de methode
False en vermindert de waarde van het raadsel met 10 punten
Voorbeeld
r = RaadZin('oost west thuis best')
print(r) #---- ---- ----- ----
print(r.waarde()) #25
print(r.koop('e')) #20
print(r) #---- -e-- ----- -e--
print(r.koop('o')) #15
print(r.koop('t')) #14
print(r) #oo-t -e-t t---- -e-t
print(r.poging('west oost thuis best')) #False
print(r.waarde()) #4
print(r.poging('oost west thuis best')) #True