Blad-steen-schaar is een wijdverbreid
nulsomspel
voor twee spelers dat met de hand gespeeld wordt. Het spel wordt gebruikt om te loten, bijvoorbeeld om te bepalen wie
aan de beurt is bij een spel zoals tikkertje, verstoppertje of varianten daarvan. Het voordeel is dat er daarbij geen
derde persoon nodig is (zoals bij het raden van een getal), en ook geen materiaal zoals bij kop of munt en een
dobbelsteen rollen. De uitkomst is onvoorspelbaar, in tegenstelling tot het gebruik van een aftelrijmpje.
Het spel verloopt als volgt.
De twee spelers tellen af en steken tegelijkertijd en zonder aarzeling de hand uit in de vorm van een steen (een vuist),
een schaar (twee uitgestoken vingers) of een blad (een vlakke hand).
Hierbij verslaat de steen de schaar, de schaar het blad en het blad de steen.
Opdracht
In het hoofdprogramma lees je de handgebaren van beide spelers in.
Bepaal de winnaar, en schrijf exact de tekst die hieronder wordt beschreven.
Invoer
Twee regels waarop telkens één van de woorden
blad
,
steen
of
schaar
staat.
De eerste regel geeft aan welk handgebaar speler1 maakt, en de tweede regel welk handgebaar speler2 maakt.
Uitvoer
Een regel die aangeeft welke speler het spelletje wint. Deze regel moet één van de volgende omschrijvingen bevatten:
- gelijkspel
- speler1 wint
- speler2 wint
Probeer het aantal voorwaarden dat moet getest worden om het resultaat te bepalen minimaal te houden.
Voorbeeld
De ingegeven gebaren zijn
schaar en
steen.
Opmerking
Je moet het hoofdprogramma toevoegen in de gegeven procedure
main()
.
Tips
Ik krijg een fout als ik blad
gebruik.
Een letterlijke tekst zet je tussen aanhalingstekens vb. "blad"
Hoe kan ik drie situaties beschrijven met if-else
?
gebruik een elif
Er zijn 9 situaties mogelijk. Gebruik ik dan telkens elif
?
Neen, je kan die 9 situaties groeperen:
- Gelijke input (3 situaties)
- 3 situaties waarin "speler1" wint
- 3 situaties waarin "speler2" wint
Het lukt dus met één extra elif
Hoe beschrijf ik in één voorwaarde de 3 situaties waarin "speler1" wint?
Gebruik een samengestelde voorwaarde:
(speler1 == "blad" and speler2 == "steen") or ...
In VSCode lukt het prima, maar ik gebruik teveel if/elif
volgens de laatste test op
Dodona.
Gebruik maar één if/elif
om alle situaties te beschrijven waarin speler1 wint. Zie vorige
tip.
In Dodona heb ik een opmerking bij Code:
Too many boolean expressions in if statement (6/5)
. Wat nu?
Hier is Dodona te streng - je mag deze opmerking dus negeren.