07 Viele bewegte Kreise

Bewegung am Bildschirm ist immer eine Frage der zugrunde liegenden Graphikbibliothek. Die Turtle erlaubt es aber in gewissem Rahmen Animationen mit mehreren Objekten ablaufen zu lassen. Dazu soll die neue Klasse ANIMKREIS verwendet werden.

Die Vorlage zum Programmieren findest Du hier: prg07_vielbewegung.

Bewegung erfolgt am Bildschirm von einer Position (x1;y1) zu einer Position (x2;y2). Ein kleinster Schritt wäre eine Verschiebung um dx = 1 und dy = 1, also z.B. von Position (2;3) zu Position (3;4). Das wäre eine Bewegung im 45°-Winkel um etwa ein Pixel nach rechts oben. Ein größerer Schritt wäre zum Beispiel eine Verschiebung um dx = 5 und dy = 5, also z.B. von Position (2;3) zu Position (7;8). Dem entspräche eine Bewegung im 45°-Winkel um etwa sieben Pixel (Pythagoras) nach rechts oben.

Aufgabe 1

Ein zusätzliche Attribut speed der Klasse ANIMKREIS soll Werte zwischen (-12,-12) und (12,12) annehmen können. Dazu eignet sich ein so genannter „Setter“, eine Methode, die geeignete Werte als Parameter entgegen nimmt und ein bestimmtes Attribut der Klasse mit diesen Werten belegt.

def set_speed(self, ...):
   self.speed = ...

Probiere es aus.

Exkurs: Hilfreiche Zufallszahlen

Hin und wieder sind Zufallszahlen sehr praktisch, zum Beispiel wenn Geschwindigkeitsvektoren zufällig gesetzt werden sollen. Dazu importiert man das Modul random und kann anschließend verschiedene Funktionen des Moduls aufrufen.

import random

a = random.randint(0,12)   # eine Ganzzahl zwischen 0 und 12
print('a: '+str(a))
b = random.random()        # eine Kommazahl zwischen 0 und 1 
print('b: '+str(b))
c = random.randint(-12,12) # eine Ganzzahl zwischen -12 und 12
print('c: '+str(c)) 

Aufgabe 2

Die Bewegung des Kreises soll nicht bei jedem Aufruf von außen bestimmt werden, sondern in Abhängigkeit von dem Attribut speed mit seinen Komponenten dx und dy erfolgen:

def bewege(self):
   self.loesche()
   dx, dy = self.speed
   self.update(dx, dy)
   self.zeichne()

Aufgabe 3

Im Hauptprogramms sollen 5 Kreise an der Position (0;0) erzeugt werden, die alle jeweils andere, zufällige Geschwindigkeiten haben. Eine Schleife soll diese Kreise anschließend 100 mal jeweils um einen Schritt weiterbewegen.

Nächstes Kapitel: Ende der ersten Einheit

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert