Files
2026-11-05 14:23:12 +01:00

32 lines
1.1 KiB
Python

"""Undo (P)
Schauen wir uns noch einmal die funktionale Version der Particle-Klasse aus dem Skript an. Implementieren Sie
diese nach und merken Sie sich bei einem update die Vorversion in einer Liste. Ergänzen Sie eine Methode undo,
die die jeweilige Vorversion zurückliefert. Wie könnte man ein Ausufern der Liste vermeiden (und dann eben nur
ein paar Undos erlauben)? """
class Particle:
def __init__(self, position, velocity=(0, 0), acceleration=(0, 0)):
self.position = position
self.velocity = velocity
self.acceleration = acceleration
self.history = []
def update(self):
new_velocity = (self.velocity[0] + self.acceleration[0],
self.velocity[1] + self.acceleration[1])
new_position = (self.position[0] + new_velocity[0],
self.position[1] + new_velocity[1])
new_particle = Particle(new_position, new_velocity, self.acceleration)
new_particle.history = (self.history + [self])[-3:]
return new_particle
def undo(self):
if self.history:
return self.history[-1]
return self