32 lines
1.1 KiB
Python
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
|
|
|