7 Animationen: "world.ss"
Note: This is documentation for the "world.rkt" teachpack that goes
with the German textbook
Die Macht der
Abstraktion.
Dieses Teachpack ermöglicht, kleine Animationen und Spiele zu programmieren.
Es enthält alle Prozeduren aus dem
image-Teachpack.
Eine
Welt (Name:
world) ist die Repräsentation des Zustands,
der durch die Animation abgebildet wird.
(one-of "enter" "leave" "motion" "left-down" "left-up" "middle-down" "middle-up" "right-down" "right-up")
Eine Mausereignis-Art (Name: mouse-event-kind)
bezeichnet die Art eines Maus-Ereignisses:
"enter" bedeutet, daß der Mauszeiger gerade
in das Fenster hinein bewegt wurde. "leave" bedeutet, daß der
Mauszeiger gerade aus dem Fenster heraus bewegt wurde.
"motion" bedeutet, daß der Mauszeiger innerhalb des
Fensters bewegt wurde. Die anderen Zeichenketten bedeuten, daß der
entsprechende Mausknopf gedrückt oder losgelassen wurde.
big-bang : (natural natural number world -> (one-of #t))
|
Der Aufruf
(big-bang w h n w)
erzeugt eine Leinwand mit Breite
w und Höhe
h, startet die Uhr, die alle
n Sekunden
tickt, und macht
w zur ersten Welt.
Der Aufruf
(on-tick-event tock)
meldet
tock
als Prozedur an, die bei jedem Uhren-Tick aufgerufen wird, um aus
der alten Welt eine neue zu machen.
Der Aufruf
(on-key-event change)
meldet
change
als Prozedur an, die bei jedem Tastendruck aufgerufen wird, um aus
der alten Welt eine neue zu machen. Dabei wird als Argument eine
Zeichenkette übergeben, welche die Taste darstellt, also
"a" für die A-Taste etc., sowie
"up",
"down",
"left", und
"right"
für die entsprechenden Pfeiltasten und
"wheel-up" für die
Bewegung des Mausrads nach oben und
"wheel-down" für die
Bewegung des Mausrads nach unten.
Der Aufruf
(on-mouse-event change)
meldet
change
als Prozedur an, die bei jedem Mausereignis aufgerufen wird, um aus
der alten Welt eine neue zu machen. Die
change-Prozedur
wird als
(change w x y k) aufgerufen. Dabei ist
w
die alte Welt,
x und
y die Koordinaten des
Mauszeigers, und
k die Art des Mausereignisses.
Der Aufruf (world->image world->image)
meldet die
Prozedur world->image an, die aus einer Welt
ein Bild macht, das auf der Leinwand dargestellt wird.
Diese Prozedur hält die Welt an und druckt ihr Argument in der REPL aus.