In diesem Tutorial basteln wir uns selbst ein kleines Autorennen. Wir werden uns dazu ein Auto und eine Rennstrecke bauen, das Auto erst selbst mit einem Lenkrad steuern und es anschließend mit Hilfe von Sensoren automatisch über die Piste manövrieren lassen
Wir kreieren unsere kleine Rennwelt, indem wir ihre Elemente einfach malen. Dazu öffnen wir wie die Ablage (Abbildung 1) und ziehen aus ihr die Malpalette auf die Oberfläche (Abbildung 2). Daraufhin öffnet sich Squeaks Malwerkzeug.

Abbildung 1: Öffnen der Palette
Wir malen unser Auto und übernehmen es mit "keep".

Abbildung 2: Die Malpalette
Wir können das Auto mit einem Links-Klick anheben und beliebig verschieben, ein weiterer Links-Klick lässt es wieder fallen. Das Auto wirft nach dem Anheben einen Schatten, es ist nicht etwa ein rechteckiges Bild, sondern ein freistehendes Symbol. Alt-Klick auf das Auto lässt die sogenannten "Smarties" (Abbildung 3) des Autos erscheinen, außerdem erscheint der Name des Objekts. Zunächst ist das ein Defaultname, den wir nach Linksklick auf den Text in "Auto" ändern.

Abbildung 3: Unser Auto mit "Smarties" und Rotationszentrum
Analog bauen wir uns eine Rennstrecke und setzen das Auto darauf.

Abbildung 4: Unser Auto wird startbereit gemacht
Wir haben unser Auto fertig gebaut, jetzt wird es Zeit, die ersten Fahrtests zu machen. Dazu benutzen wir die graphische Skriptsprache von Squeak namens "E-Toys". Über das "Betrachter"-Smartie (das Auge in Abbildung 3) öffnen wir eine Befehlsleiste, welche die mögliche Befehle für dieses Auto enthält.

Abbildung 5: Die Befehlsleiste des Autos
Hier sehen wir unter anderem "Auto gehe vorwärts um 5" und "Auto drehe dich um 5". Durch "Drag and Drop" lassen sich diese Befehle auf die Oberfläche ziehen. Es entstehen zwei neue Skripte.


Abb. 7: Drehe das Objekt "Auto" um fünf Grad im Uhrzeigersinn
Durch Linksklick auf das Ausrufezeichen links oben im Skript lassen sich die Skripte ausprobieren: das Auto bewegt sich um fünf Pixel nach vorne, bzw. dreht sich um fünf Grad im Uhrzeigersinn. Falls es sich seitlich "vorwärts" bewegt, war seine Richtung falsch eingestellt: Jedes Objekt hat eine interne Richtung, anfangs zwölf Uhr. Das Rotationszentrum eines neuen Objektes befindet sich in der Mitte. Das Zentrum kann aber visuell verändert werden, indem man im Menü des Autos "Richungssmartie" selektiert und anschließend mittels Alt-Linksklick erneut die Smarties des Objektes anzeigt. Der grüne Pfeil kann nun in die Vorzugsrichtung des Objektes gedreht werden. (Abbildungen einfügen)
Wann die Skripte ausgeführt werden sollen, lässt sich über ein Popup-Menü einstellen, welches man über einen Linksklick auf "normal" (Abbildung 8) in der Skriptleiste erhält. Stellen wir dies auf "laufend", wird das Skript jede Sekunde angestoßen; setzen wir aber zunächst beide Skripte auf "angehalten".

Abb. 8: Wann soll das Skript ausgeführt werden
Um alle Skripte innerhalb dieses Projektes mit einem Mal zu starten, zu beenden oder schrittweise auszuführen, gibt es ein eigenes Werkzeug "Skriptkontrolle" (Abb. 9), welches sich in der Ablage "Geräte" befindet. Starten wir alle Skripte über dieses Werkzeug, können wir beobachten, dass das Auto im Kreis fährt. Mit "stop" stoppen wir das Auto.

Abbildung 9: Starte oder stoppe alle Skripte dieses Projekts
Malen wir zunächst ein Lenkrad mit dem Malwerkzeug. Das Auto mit dem Lenkrad zu steuern, bedeutet, es um soviel Grad zu drehen, wie das Lenkrad ausgeschlagen ist.

Abb. 10: Wir drehen das Lenkrad mit seinem Rotations-"Smartie"
Auch auf das Lenkrad öffnen wir eine Befehlsleiste und ziehen mittels "Drag and Drop" die Richtung des Lenkrads auf die Gradangabe (momentan noch 5) des Skriptes, mit welchem wir das Auto rotieren ließen.

Abb. 11: Abbildung 11: Auch Variablen können aus den Vorlagen kopiert werden

Abbildung 12: Drehe dich um die Auslenkung des Lenkrades
Starten wir wieder die Skripte und versuchen das Auto auf der Strecke zu halten, indem wir das Lenkrad drehen. Schwierig, nicht? Was könnten wir tun, um die Steuerung zu verbessern? Vielleicht sollten wir eine Übersetzung einbauen und nur einen Bruchteil der Rotation des Lenkrads zur Steuerung unseres Autos nutzen: Dazu klicken wir auf das Dreieck rechts von "Lenkrads Richtung". Die Kachel erweitert sich um "+1". Wenn wir jetzt auf das "+" klicken, wählen wir aus dem aufgehenden Menü "/" aus, die "1" erhöhen wir mit den Pfeilen auf "5" (Abbildung 13).

Abbildung 13: Das Auto soll sich nur um einen Bruchteil des Lenkradausschlags drehen. Das Auto lässt sich nun wesentlich leichter manövrieren.
Stoppen wir die Skripte zunächst wieder mit der Skriptsteuerung aus Abbildung 9 und drehen das Lenkrad auf seine Grundposition von 0 Grad. Wie halten wir das Auto automatisch auf der Strecke? Eine Idee wäre, dem Auto Sensoren zu geben und es nach rechts gegensteuern zu lassen, wenn sein linkes Auge eine Farbe ungleich der Streckenfarbe erkennt, analog nach links, wenn sich sein rechtes Auge nicht mehr auf der Strecke befindet.
Öffnen wir dafür zunächst wieder das Malwerkzeug des Autos mit Hilfe des "Weitermalen"-Smarties
und malen dem Auto links einen grünen und rechts einen blauen Sensor ein. (Abbildung 14)

Abbildung 14: Unser Auto bekommt Sensoren...
Anschließend ziehen wir den Rotationsbefehl des Autos aus seiner Befehlsleiste auf die Oberfläche und erzeugen so ein neues Skript. In diesem Skript wollen wir programmieren, dass sich das Auto nach links, also gegen den Uhrzeigersinn drehen soll, wenn sein rechtes blaues Auge eine Farbe ungleich der Pistenfarbe sieht.
Dazu ziehen wir eine gelbe "Test-Wahr-Falsch-Kachel" ins Skript, die sich im Skript-Fenster rechts oben neben dem "Fenster-Schließen-Kreuz" befindet (Abbildung 15).

Abbildung 15: Erster Schritt zum Test: eine Test-Kachel in das Skript ziehen
Die Testbedingung ist, dass die blaue Farbe des Autos die Farbe der Rennstrecke sieht, wir fügen sie ein, indem wir in der Befehlsleiste des Autos die Kategorie "Tests" auswählen und dort die Kachel "Autos Farbe sieht" in die Test-Zeile unseres Skripts bewegen.


Abbildung 15a,15b: Im Betrachter des Autos wechseln wir zur "Test"-Kategorie und holen uns eine "Autos Farbe sieht"-Kachel
Die Farben stellen wir ein, indem wir erst auf die farbig ausgefüllten Rechtecke der eben erzeugten Kachel "Autos Farbe sieht" klicken und mit der erscheinenden Pipette die jeweiligen Farben vom Auto und der Rennstrecke abgreifen. Jetzt müssen wir nur noch den Rotationsbefehl in unserem Skript in die "No-Zeile" verschieben, schließlich soll sich unser Auto nur dann drehen, wenn es nicht auf der Piste steht.

Abbildung 16: Das Skript für die Rechtsdrehung des Autos
Analog erstellen wir das Skript für die Rotation des Autos nach links. Wenn wir unsere Skripte starten, sollte das Auto selbstständig über die Strecke kurven.

Abbildung 17: Die drei fertigen Skripte, hier nach ihrer Funktion umbenannt, auf einen Blick
Kopieren wir das Auto mit dem "Kopieren-Smartie", können wir die Modelle unterschiedlich programmieren und gegeneinander antreten lassen.