Aus Das deutschsprachige Scratch-Wiki
< Scratch-Wiki:Scratch Buch | Entwurf 1
Ein wenig Herumtollen
Wie Du schon in unserem kleinen Einstieg sehen konntest, kann man mit Scratch sehr viele tolle Sachen machen. Dazu müssen wir aber erst etwas mit unseren Scratch-Blöcken programmieren. Es gibt dabei über hundert verschiedene. Da die alle in einer Liste ja schließlich völlig unübersichtlich wären, hat man sich 10 Gruppen ausgedacht, in die man die Blöcke eingliedern kann. Die auffälligste Blockgruppe ist vielleicht auch die einfachste: Bewegungsblöcke. Wir benutzen sie, um Objekte dazu zu bringen, sich in Bewegung zu setzen und Informationen darüber Preis zu geben. Vom einfachen Katzentanz (mit Katzentanzlied vielleicht sogar mal) bis zur komplizierten Animation. Mit ein bisschen Anstrengung ist alles möglich!
Wir schauen uns erst einmal den wunderbaren ersten Block der Kategorie, gehe Schritte, an. Wenn man auf ihn klickt, bewegt sich die Katze nach rechts. Hm. Rechts. Nicht links? Oder oben? Oder vielleicht unten? Ziemlich radikal, dieses Scratch. Nein, natürlich nicht. Die Katze bewegt sich mit dieser Anweisung nämlich nur in die Richtung, in die sie im Augenblick ausgerichtet ist.
Jetzt wollen wir der Sache aber mal auf den Grund gehen! Welche Ausrichtung hat unsere Katze denn? Um das herauszufinden haben wir jetzt ganze zwei Möglichkeiten. Den gehe Block müssen wir dabei erstmal auf dem weg lassen. Blöd aber auch. Nagut. Bevor unsere arme Katze immer nur monotone Schritte nach rechts laufen kann, ist das doch auch nicht so tragisch. Wir klicken also doch am besten mal auf das kleine blaue "i" rechts über dem Vorschaubild (auch von manchen Kompliziertmachern Thumbnail genannt) deiner Katze, das du mit den anderen Objekten unter der Bühne aufgereiht findest. Wenn du das geschafft hast, findest du ein Untermenü mit haufenweise neuen Möglichkeiten. Uns interessiert davon aber erstmal nur die Zahlenanzeige rechts oben: Die Richtung. Hier hast du es. Grau auf weiß: 90 Grad. Öde! Wir wollen 20 Grad! Das machen wir doch gleich mal. Aber wie denn, ohne zu wissen wie wir es programmieren können? Ganz einfach: Klick doch mal auf den kleinen grauen Kreis neben der Richtungsangabe! Dann wirst du ganz schnell sehen, wie sich die Katze drehen lässt. Nämlich ganz einfach in die Richtung, in der deine Maus liegt. Höchstüberfantstisch! So braucht man mit Scratch noch nicht mal gleich programmieren. Die zweite Möglichkeit, die aktuelle Richtung zu betrachten, ist, auf das kleine Kästchen links neben dem letzten Block der Kategorie, Richtung, zu gehen, sodass es ein Häkchen bekommt. Oh. Was war das? Was will diese Anzeige mit mir? Ruhig Blut! Das Ding nennt sich Variable. Tolle Sache. Lernen wir später aber noch mehr dazu. Wenn du meinst, dass sich die Katze noch nicht übergeben muss, kannst du jetzt fortfahren, am Kreis im Thumbnailmenü zu drehen. RuM. Uuuunnnnd.... RuM. Super. Das macht Spaß! Naja. Zugegeben. Nach der Zeit wird es recht langweilig. Außerdem ist es nicht das Wirkliche, den Benutzer deiner Programmkreation immer auffordern zu müssen, am Rädchen zu drehen. Wie machen wir dann aber, dass es automatisch funktioniert? Werfen wir doch einfach mal einen kleinen Blick in die Blockpallette. Der gehe-Block ist dafür wahrscheinlich nicht gut. Der geht ja schließlich nur. Außerdem wollten wir den ja später noch mal näher anschauen. Schauen wir doch mal weiter... Da! Drehe .. Grad! Das kling doch schon mal ziemlich vielversprechend! Ziehen wir uns mal ein Exemplar davon raus und klicken darauf... Freudenstrahlen! Die mittlerweile ziemlich malträtierte Katze dreht sich (mal wieder). Von diesem Block gibt es sogar zwei Varianten: Drehe rechts und drehe links. Der einzige große Unterschied ist aber, dass sie sich, wie der Pfeil auf dem Block auch zeigt, in jeweils die andere Richtung drehen. Also haben wir jetzt zwei Möglichkeiten gefunden, wie man ein Objekt dreht (Rädchen, drehe Block) und zwei, um sich die Richtung, die sich beim drehen ja ändert zu betrachten (Anzeige im Thumbnailmenü und unsere ominöse Richtungsvariable).
Nun wollen wir aber etwas Schwierigeres: Wir wollen, dass sich die Katze exakt auf 120 Grad dreht. Dabei wollen wir aber weder den Dreher, da er unprofessionell ist, noch die drehe blöcke, da sie in dem Fall etwas unpräzise sind, verwenden. Wie machen wir den das? Wie immer hilft uns unsere liebe Blockbibliothek. Welcher Block könnte denn geeignet dazu sein? Richtig. Dein Freund und Helfer: Der zeige richtung Block. Damit können wir in das weiße Feld nämlich genau die Richtung eingeben, die wir unserer Versuchskaninchenkatze geben wollen. So. Jetzt aber ans Werk! Zieh dir einen heraus und dann tippe "120" in das Feld ein. Nach einem weiterem kurzen Klick haben wir das Ergebnis. Aber ist das auch richtig? Überprüfen wir es kurz mit einer unserer zwei Methoden.
Jetzt haben wir uns aber immer noch nicht näher mit dem Gehe block beschäftigt. Wie wir wissen, geht er immer nur in die Richtung, in der dazugehörige Objekt auch gerade ist. Dreh die Katze doch mal auf 0 Grad und drücke dann den gehe block. Oh! Jetzt geht die sie nämlich nicht mehr ihren gewohnten weg nach rechts, sondern bewegt sich nach oben. Ganz schön cool. Allerdings ist der gehe-block auch noch für ganz andere Sachen sehr nützlich. Für unser nächstes verrücktes Experiment müssen wir allerdings schon ein bisschen nach vorne greifen. Und zwar greifen wir für diesen Griff kräftig in die Palette der Steuerungsblöcke. Wie Du vielleicht schon gesehen hast, gibt es dort so komische Klammerblöcke, in die man andere (normale) Stapelblöcke hineinschieben kann. So einen nehmen wir uns heraus. Denjenigen, den wir jetzt rausnehmen müssen, schimpft sich "wiederhole fortlaufend". Wenn wir ihn alleine ausführen, macht er noch nichts, wenn wir allerdings einen Stapelblock (wie "gehe schritte") hineintun, wirst du gleich sehen, dass er diese ausführt. Und zwar nicht nur - wie gewohnt - einmal, sondern gleich viele Male mehr. Er wiederholt das sogar so lange, dass man sagen könnte, "wenn er nicht irgendwann gestoppt werden würde, würde er ewig laufen". Mehr musst du erstmal nicht über diese schon fast magischen dinger erfahren. Wir wollen das nämlich gleich mal anwenden: Drehe deine Katze wieder auf 90 Grad, schiebe deinen "gehe schritte"-Block einfach in diese Schleife rein und führe dann diese Zweierpackung aus. Wie Du recht bald sehen wirst, geht die Katze zwar wie erwartet stetig nach rechts, bleibt aber nach ein paar Schritten - wie eine Drachenfrucht im Affen, der sich übernommen hat - im Rand stecken. Das sieht ja nun aber wirklich nicht gut aus. Was könnte unser Problem lösen? Möglicherweise könnte man es ja so machen, dass die Katze immer wenn sie den Rand berührt, von ihm "abprallt" und sich dann in die Gegenrichtung weiterbewegt, sodass wir eine schöne und abgerundete Animation haben, die sich auch wieder leicht beenden lässt, wenn wir einfach wieder auf die Schleife klicken. Das ließe sich jetzt relativ kompliziert mit Mitteln lösen, die etwas tiefer greifen, allerdings bietet Scratch auch zum Glück einfachere Methoden dafür. Es gibt nämlich den schönen Block "pralle vom Rand ab" dieser wird nur ausgeführt, wenn der Rand auch wirklich berührt wird, also kannst du ihn einfach mit in die schleife werfen. So funktioniert es gleich auf Anhieb perfekt.
Koordination für Anfänger (vor allem Katzen)
Die Katze ist weit gewandert. Durch die nie enden wollenden Einöden der weißen Programmfläche hüpfte sie schon. Willenlos und von ihrem Befehlshaber (Dir natürlich) herumgesteuert. Jetzt ist es für die Katze aber im Augenblick ziemlich schwierig, sich zu einem genauen Punkt zu begeben. Hast du schon mal einer Katze, die nur fixe Schritte und Dreher machen kann, gesagt: "Gehe und drehe dich solange, bis du an dem Ort bist, den ich mir gerade vorstelle!"? Neben der Tatsache, dass Katzen sich nichts sagen lassen (ein Problem, das wir in der Informatik nicht haben), wäre es auch ziemlich schwierig, da die ganze Freude zwar möglich wäre, allerdings so manche Unpräzisichkeiten und Umstände mit sich brächte. Deswegen hat sich irgend ein schlauer Grieche vor tausenden von Jahren mal ein System ausgedacht, mit dem man jedem Ort in einem bestimmten Bereich zwei Zahlen gibt, unten denen man den Punkt später auch wieder finden kann. Da gibt es nämlich zwei Positionen. Die sogenannte X- und die Y-Position. Mit der X-Position gibt man an, ob das Objekt mehr rechts oder links sein soll. Mit der Y-Position, ob oben oder unten. Je nach Größe dieser Position können wir ablesen, wie weit jeweils in die Richtung. Das Vorzeichen ("+", also meist gar keins oder "-") bestimmt, in welche der beiden Möglichkeiten. Mehr dazu findest du in dem Bild rechts. Wenn Du es nicht gleich verstehst, ist das nicht so schlimm. Die Gewöhnung machts meist. Aber was soll uns das jetzt in Scratch bringen? Das ist deswegen für uns deswegen so praktisch, weil wir so ganz einfach Orte bestimmen können, zu denen sich die Objekte (in unserem Fall die Katze) bewegen können. Ein Objekt hat nämlich in Scratch immer einen Punkt, der das Zentrum des Objektes darstellt, den sogenannten Drehpunkt. Er ist standardmäßig immer in der Mitte, außer man ändert ihn mit dem Malprogramm. Dazu später aber mehr. Mit diesem hängen wir das jeweilige Objekt an den beschriebenen Punkt hin. Klingt schwer, ist es aber eigentlich nicht. Jetzt aber mal weg von der Theorie und ran an unsere Blöcke!
Wie du vielleicht schon bemerkt hast, gibt es einige Bewegungsblöcke in Scratch, die dieses System benutzen. Wir wollen uns dabei erst einmal mit den zwei offensichtlichsten beschäftigen: gehe zu x: y: und gleite X Sek. zu x: y:. Unser Ziel soll es nämlich erstmal sein, die Katze, die sich irgendwo befindet zu einem virtuellen Katzensalon (X: 184, Y: 123) zu bringen, wo wir sie baden können. Da Katzen keine Freunde von nassen Freu(n)den sind, sagen wir ihr vorsichtshalber, wir bringen sie zu einer virtuellen Katzeneisdiele. Voller Vorfreude will sie aber nicht normal hingehen, sondern zieht es vor, sich hinbeamen zu lassen. Voller Mordgedanken stürzt sie dann nach dem ersten Tropfen Wasser wieder hinaus und vergisst den Rückbeam. Sie möchte viel lieber zu Fuß nach Hause (X: -128, Y: -124) gehen und dabei ihre Gedanken über die Realisierung ihres Planes weiter durchdenken.
Unsere Aufgabe ist es nun, dieses keinesfalls unrealistische Szenario mithilfe unserer neuen zwei Blöcke in Scratch nachzubauen. Dazu setzen wir die Katze am besten irgendwo in der Mitte der Bühne ab. Zum beschriebenen "Beamen" (das natürlich keins ist) nehmen wir gehe zu x: Y:. Damit können wir ein Objekt mit nur einem Block an einen genauen Ort schicken, an dem er sich nach Ausführen auch sofort befindet. Wenn wir das arme Vieh dann mit der Körperpflege aufs Leben verstört haben, möchte sie ja zu Fuß zurück. Wir möchten also eine Art Animation, die uns zeigt, wie sich die Katze mit einer bestimmten Geschwindigkeit dem gewollten Ort zubewegt. Dazu nehmen wir den glitschigen Gleite-Block. In das erste Eigabefeld tippen wir die Zeit, die sie brauchen soll, in Sekunden ein. Die anderen werden wie vorher auch mit den Koordinaten gefüttert. Viel Spaß!
Wenn du das Prozedere durchgezogen hast, kann man dir nur auf ganzer Ebene gratulieren: Du hast diese Anleitung, sich von der eigenen Katze quälen zu lassen, erwartet blauäugig befolgt. Jetzt liegt dein Leben in der Hand eines kleinen Mauzers. GAME OVER!
Schreckliche Tierversuche
Jetzt können wir schon ganz viel mit unserer Katze tun. Allerdings ist die Arme ungern allein und braucht Gesellschaft. Das lassen wir uns nicht zwei mal sagen und gehen gleich ins Tierheim. Klicke auf das erste Symbol (das mit dem kleinen Wesen) in der Reihe "Neues Objekt:" unterhalb der Bühne. Jetzt öffnet sich dir eine riesige Ansicht mit lauter freundlich beziehungsweise auch teils weniger freundlich dreinblickenden Tierchen. Jetzt müssen wir eine Wahl treffen. Womit kann man eine Katze den richtig gut ärgern? Richtig! Mit einem Dinosaurier. Such dir einen der drei Urgesteine aus und klicke anschließend auf "ok".
Die Kleinen haben im Moment noch unschöne englische Bezeichnungen. Damit wir später besser mit ihnen Arbeiten können, wollen wir ihnen erst richtige Namen geben. Dazu gehst Du einfach wieder in das "i"-Menü der Objekte und wählst den Textkasten aus. Die Katze soll "Mauzi" heißen, der Dino "Kunibert". Wir wollen nämlich für einen Tiersoziologen ein Experiment machen, dass schaut, ob sich die beiden befreunden können. Im Augenblick schauen sie noch schüchtern in der Gegend herum. Das soll sich ändern! Grundsätzlich: Blickkontakt ist wichtig! Deshalb ziehen wir den Block zeige zu zu Rate. Wende ihn doch mal auf beide an. Oh Wunder! Die Voraussetzungen sind schon mal geschaffen. Auch rennen sie nicht voneinander weg. Ein gutes Omen. Jetzt müssen sich die beiden auch treffen. Kennen wir dafür einen Guten Block? Naja. Einige. Man könnte zum Beispiel die Position des anderen Objekts herausfinden und dann den gehe zu x: y:-Block oder die gleitende Alternative nehmen. Manchmal ist das sogar nicht schlecht, für diesen Fall gibt es aber etwas passenderes. Und zwar den zugegebenermaßen eigentlich etwas überflüssigen Block gehe zu. Wir suchen uns also das mutiger wirkende Getier heraus, geben ihm einen solchen Block, wählen in ihm das andere aus und klicken es an... ... ... ... ... ... ... Juhu! Sie fressen sich nicht! Jetzt haben wir uns endlich in einer Klammer einer Fußnote einer Doktorarbeit verewigt.