Weißt Du, wie Filme und Zeichentrickfilme funktionieren? Hast Du vielleicht einmal ein "Daumenkino" gemacht? Nun, bevor wir uns damit beschäftigen werden, wie wir am Computer Animationen erzeugen können, hilft es, erst einmal zu verstehen, wie Animationen eigentlich funktionieren.
Wenn wir sich bewegende Bilder auf dem Bildschirm sehen, bewegen sich diese nicht wirklich. Was eigentlich passiert ist, dass eine Folge von unbewegten Bildern -- wie Fotografien -- so schnell hintereinander auf dem Bildschirm gezeigt wird, dass Du nicht sagen kannst, wie schnell es passiert. Etwa 30 mal pro Sekunde wird der Bildschirm gelöscht und ein neues Bild an Stelle des alten gezeigt. Wenn wir es verlangsamen könnten, würde es etwa so ausehen:
Diese Animation zeigt einen Ball, der sich über den Bildschirm "bewegt", aber in Wirklichkeit sind es nur 5 verschiedene Bilder des gleichen Balls an verschiedenen Stellen. Wenn wir es schnell genug abspielen, sieht es so aus, als ob der Ball sich wirklich bewegt:
Es handelt sich um die gleiche Animation wie weiter oben, nur schneller abgespielt. Deshalb sieht es mehr danach aus, als ob der Ball sich bewegt.
Die gleiche Idee wenden wir in BASIC-256 an. Um einen Ball über den Bildschirm zu bewegen, müssen wir einen Kreis wieder und wieder schnell hintereinander zeichnen. Glücklicherweise sind Computer sehr gut darin, Dinge wirklich schnell zu tun, wie Du in den vorherigen Anleitungen gesehen hast.
Der erste Schritt besteht im Löschen des Inhaltes des Grafikfensters. Das geht mit dem CLG-Kommando, also:
clg
Wenn Du das eingibst und ausführst, wirst Du vielleicht nicht merken, dass etwas passiert. Der Computer löscht nur den Inhalt des Grafikfensters. Um den Ball zu animieren, müssen wir zunächst einen zeichnen.
clg circle 20,20,8
Hier haben wir nun einen Kreis. Um ihn zu bewegen, müssen wir ihn an einem anderen Platz neu zeichen. Aber zuerst müssen wir den Kreis komplett löschen, folglich müssen wir CLG noch einmal benutzen. Laß uns das ganze fünf mal tun:
clg circle 20,20,8 clg circle 30,20,8 clg circle 40,20,8 clg circle 50,20,8 clg circle 60,20,8
Wenn Du das Programm ausführst, solltest Du sehen, dass der Ball sich bewegt. Es geht wirklich schnell, also schau genau hin. Wenn Du möchtest, kannst Du die CLG-Befehle weglassen, um zu sehen, was passiert, wenn Du die Grafik nicht jedes mal löschst, bevor Du einen neuen Ball zeichnest.
Und wenn wir den Ball noch viel mehr bewegen möchten? Es würde sehr viel Tippen erfordern, den Ball oft zu zeichnen. Doch wenn Du Dich an die Variablen-Anleitung erinnerst, könntest Du eine Lösung für unser Problem sehen.
Wenn wir eine Variable mit Namen X benutzen, die die horizontale Ballposition angibt, können wir immer die gleichen CLG- und CIRCLE-Befehle immer wieder benutzen und nur X ändern. Das würde wie folgt aussehen:
x = 10 nochmal: x = x + 1 clg circle x,20,8 goto nochmal
Wenn Du dieses Programm ausführst, wird der Ball sich über den gesamten Bildschirm bewegen und vollständig aus dem Bild verschwinden. (Du mußt den auf den "STOPP"-Knopf klicken, um das Programm zu beenden.)
Zeile "x = x + 1" führt dazu, dass bei jedem Durchlauf durch die Schleife der Wert 1 zu X dazuaddiert wird. Dadurch ändert sich die Position, an der der Ball gezeichnet wird. Wenn Du möchtest, dass der Ball sich schneller bewegt, kannst Du bei jedem Durchlauf eine größere Zahl zu X dazuaddieren. Versuche 2, 3 oder 5 dazuzuaddieren um herauszufinden, was passiert.
Es wäre schön, wenn das Programm enden würde, bevor der Ball vollständig vom Bildschirm verschwunden ist. Dazu müssen wir eine Zeile hinzufügen, die die Position des Balles überprüft und das Programm beendet, bevor der Ball zu weit weg ist.
x = 10 nochmal: x = x + 1 clg circle x,20,8 if x > 290 then end goto nochmal
Diese IF-Zeile prüft jedesmal, ob X größer als 290 ist. Wenn das so ist, dann wird das Programm beendet. Anderenfalls läuft das Program einfach weiter.
Jetzt hast Du gelernt, wie man einen Kreis über den Bildschirm bewegen kann. Versuche jetzt noch einige andere Dinge, wie z.B. den Ball auf und ab oder in die entgegengesetzte Richtung zu bewegen. (Vielleicht interessiert Dich ja das Programm ballanim.kbs im Examples-Verzeichnis.)