Een beker bevat een aantal $$N \gt 0$$ dobbelstenen, en een speler kan een nieuwe worp realiseren door de beker
leeg te schudden. Elk van de dobbelstenen toont een aantal ogen tussen 1 en 6 (grenzen inbegrepen). De dobbelstenen
zijn genummerd van 0 t.e.m. $$N -1$$.
Bij elke nieuwe worp, kan de speler ervoor kiezen een aantal dobbelstenen apart te houden, waardoor
de volgende worp dus met minder dobbelstenen gebeurt, en de waarde van de dobbelstenen die afzonderlijk
gehouden werden, constant blijft.
In deze oefening bouw je een klasse DobbelWorp
, waarbij je volgende functionaliteit voorziet:
een constructor met 1 argument (natuurlijk en strikt groter dan 0), die het aantal dobbelstenen weergeeft. De initiƫle waarde van elke dobbelsteen staat op 0, en je houdt de waarde van de dobbelstenen best in een lijst bij.
een methode __str__()
: deze methode levert de ingebouwde stringgedaante van een lijst gehele getallen, waarbij
elk geheel getal het aantal ogen op de dobbelsteen aanduidt. Let wel: indien het om een dobbelsteen gaat waarmee niet meer
gegooid wordt (omdat ze door de speler apart gehouden wordt), dan wordt de waarde door een minteken voorafgegaan. Je geeft
de waarde van de dobbelstenen volgens rangnummer van de stenen weer.
de methode nieuwe_worp()
: realiseert een nieuwe worp met de beker dobbelstenen. Hierbij loop je alle dobbelstenen in volgorde af.
Enkel indien met de dobbelsteen nog gegooid mag worden, ken je aan die dobbelsteen een nieuwe waarde toe, die je bekomt via de
methode random.randint()
.
de operator -=
. Het linker operand is hier een object van de klasse DobbelWorp
, het rechter-operand $$w$$ een geheel getal.
Deze operator is bedoeld om een steen uit de beker te halen (of anders gezegd een steen te markeren waarmee niet langer gegooid wordt).
Hierbij kies je de steen met kleinste volgnummer die de waarde $$w$$ vertoont (en waarmee nog gegooid wordt), en je zorgt ervoor dat
de waarde van die steen constant blijft. Vertoont geen van de stenen de waarde $$w$$, dan heeft de operator geen effect.
de methode aantal_beurten()
met twee argumenten $$a$$ en $$w$$, beiden geheel en waarbij $$ a \ge 0$$ en $$ 1 \le w \le 6$$.
De methode gooit via de logica van de methode nieuwe_worp()
, tot er minstens $$a$$ dobbelstenen de waarde $$w$$ vertonen.
Hierbij hou je de waarden van alle dobbelstenen die de waarde $$w$$ vertonen constant. Het resultaat van de methode is een geheel getal dat het aantal
gebruikte beurten weergeeft.
random.seed(100) w = DobbelWorp(5) print(w) #[0, 0, 0, 0, 0] w.nieuwe_worp() print(w) #[2, 4, 4, 2, 6] w -= 2 print(w) #[-2, 4, 4, 2, 6] w -= 6 print(w) #[-2, 4, 4, 2, -6] w -= 2 print(w) #[-2, 4, 4, -2, -6] w = DobbelWorp(6) print(w.aantal_beurten(3, 6)) #3