We bouwen een klasse GanzenSpel. Dit spel bevat een aantal vakjes, genummerd van 0 t.e.m. $$n-1$$. Elke speler start op vakje met nummer 0, en kan via het werpen van een dobbelsteen naar een ander vakje gaan. Per speler wordt dan ook bijgehouden waar hij/zij zich bevindt.

Het bord bevat een aantal speciale vakjes. Een speciaal vakje wordt gekenmerkt door een geheel getal (dus positief of negatief) $$g$$. Als een speler op een speciaal vakje terechtkomt, wordt zijn/haar positie bijkomend aangepast door bijkomend $$g$$ vakjes vooruit te gaan, indien $$g > 0$$ of door $$-g$$ vakjes achteruit te gaan indien $$g<0$$. Deze regel wordt maar 1 keer toegepast: een speler kan in een beurt maar 1 keer van een speciaal vakje genieten (met andere woorden, als een speler vanuit een speciaal vakje op een ander speciaal vakje terecht komt, dan blijft de speler op dit 2de speciale vakje). Indien een speler door een worp op een onbestaand vakje zou terecht komen, dan wordt deze beurt genegeerd.

Programmeer in de klasse GanzenSpel het volgende:

Voorbeeld

g = GanzenSpel(20, ['Jan', 'An'],{3:3, 6:5, 15:-5, 19:-19})
print(g) 		#[20,[('Jan', 0), ('An', 0)]]
g += ('Jan', 2) 
print(g)		#[20,[('Jan', 2), ('An', 0)]]
g += ('Jan', 1)
print(g)		#[20,[('Jan', 6), ('An', 0)]]
g += ('An', 6)
print(g)		#[20,[('Jan', 6), ('An', 11)]]
g += ('An', 4)
print(g)		#[20,[('Jan', 6), ('An', 10)]]
g += ('Jan', 6)
g += ('Jan', 6)
print(g)		#[20,[('Jan', 18), ('An', 10)]]
g += ('Jan', 1)
print(g)		#[20,[('Jan', 0), ('An', 10)]]
g.reset()
g += ('An', 5)
g += ('Jan', 3)
print(g)		#[20,[('Jan', 6), ('An', 5)]]