Die Idee war, dass die DrawCanvas-Funktion nicht die verschiedenen Spielobjekttypen kennen muss. So können später weitere Typen (Items, Hindernisse) hinzugefügt werden, ohne das diese Funktion geändert werden muss. Die Reihenfolge ergibt sich ja aus der Array-Sortierung.
So tausche ich möglicherweise drei Variablen (gameMaze, allFigures, viewPort) gegen eine (drawableObjects).

Für die nextStep-Berechnung wollte ich es genauso machen.

Der ViewPort benötigt natürlich den ViewPort nicht. Er würde den Parameter einfach ignorieren. Er sollte nur die gleiche draw-Signatur bereitstellen. Später würde diese dann auch entfernt werden, wenn statt dessen vielleicht ein Level-Objekt übergeben wird.