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.
mouse-event-kind : signature
(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.
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.
on-tick-event : ((world -> world) -> (one-of #t))
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.
on-key-event : ((world string -> world) -> (one-of #t))
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.
on-mouse-event : ((world natural natural mouse-event-kind -> world) -> (one-of #t))
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.
end-of-time : (string -> world)
Diese Prozedur hält die Welt an und druckt ihr Argument in der REPL aus.