Schnellstart (für Programmierer): Unterschied zwischen den Versionen
Zeile 32: | Zeile 32: | ||
<code> | <code> | ||
'''WENN''' gedrückt (Pfeil nach rechts) | '''WENN''' gedrückt (Pfeil nach rechts) | ||
frei (rechts) '''DANN''' bewege (rechts). | |||
</code> | |||
wäre vollständig ausgeschrieben: | |||
<code> | |||
'''WENN''' gedrückt (Pfeil nach rechts) | |||
'''UND''' | |||
frei (rechts) '''DANN''' bewege (rechts). | |||
</code> | </code> | ||
Zeile 41: | Zeile 49: | ||
<code> | <code> | ||
'''WENN''' gedrückt (Pfeil nach rechts) '''DANN''' bewege (rechts). | '''WENN''' gedrückt (Pfeil nach rechts) '''DANN''' bewege (rechts). | ||
'''WENN''' gedrückt (Pfeil nach links) | '''WENN''' gedrückt (Pfeil nach links) '''DANN''' bewege (links). | ||
'''WENN''' gedrückt (Pfeil nach | '''WENN''' gedrückt (Pfeil nach oben) '''DANN''' bewege (oben). | ||
'''WENN''' gedrückt (Pfeil nach | '''WENN''' gedrückt (Pfeil nach unten) '''DANN''' bewege (unten). | ||
</code> | </code> | ||
Zeile 50: | Zeile 58: | ||
'''WENN''' gedrückt (Pfeil nach rechts) '''DANN''' bewege (rechts). | '''WENN''' gedrückt (Pfeil nach rechts) '''DANN''' bewege (rechts). | ||
'''SONST''' | '''SONST''' | ||
'''WENN''' gedrückt (Pfeil nach links) | '''WENN''' gedrückt (Pfeil nach links) '''DANN''' bewege (links). | ||
'''SONST''' | '''SONST''' | ||
'''WENN''' gedrückt (Pfeil nach | '''WENN''' gedrückt (Pfeil nach oben) '''DANN''' bewege (oben). | ||
'''SONST''' | '''SONST''' | ||
'''WENN''' gedrückt (Pfeil nach | '''WENN''' gedrückt (Pfeil nach unten) '''DANN''' bewege (unten). | ||
</code> | </code> | ||
Zeile 63: | Zeile 71: | ||
<code> | <code> | ||
'''WENN''' '''DANN''' Nachricht (hier, bewegen). | '''WENN''' '''DANN''' Nachricht (hier, bewegen). | ||
Nachricht (hier, fressen). | |||
</code> | </code> | ||
Version vom 31. Mai 2017, 15:29 Uhr
AgentCubes setzt viele Aspekte des Programmierens um und eignet sich besonders für komplette Anfängerinnen und Anfänger. Diese Seite enthält die wichtigsten Punkte, die zu beachten sind, wenn man bereits eine Programmiersprache oder Entwicklungsumgebung kennt.
Speichern ist etwas gewöhnungsbedürftig
AgentCubes hat zwei Modi des Speicherns:
- Der Programmcode wird fortlaufend gespeichert, auch ohne dass man etwas drücken oder einstellen muss.
- Die Levels werden durch Drücken auf die Schaltfläche Speichern abgespeichert.
Dieses Verhalten kann in zwei Fällen zu Mehrarbeit führen:
- Du änderst etwas am Level und startest das Spiel ohne abzuspeichern. Die Änderungen sind damit verloren, du hast nur noch den Zustand des Levels, in dem er sich aktuell im Spiel befindet, sowie natürlich die zuletzt gespeicherte Version.
- Du speicherst versehentlich eine neue Version des Levels, zum Beispiel nach dem Spielen. Der vorher gespeicherte Zustand wird jetzt überschireben und existiert nicht mehr.
Es lohnt sich, dass man sich relativ rasch an die Funktionsweise der "Speichern"-Schaltfläche gewöhnt. Nach einigen Versuchen ist das üblicherweise kein Problem mehr.
Programmcode hängt immer an Agenten
Bei AgentCubes orientiert sich die Programmierung an so genannten Agenten, also an Spielfiguren, die auf einem Schachbrett-Muster angeordnet sind. Programmanweisungen laufen nur als Teil von Agenten.
Die Programmierung lehnt sich somit eher an die Programmierung von Benutzeroberflächen, wo man Programmcode an Schaltflächen und andere Elemente anfügt. Es gibt in AgentCube keine Möglichkeit, Programmcode zentral zu entwickeln, der dann unabhängig von den Spielfiguren läuft. Wenn man solchen Code benötigt, muss man ihn an einen Agenten hängen.
Zentral benötigten Code kann man beispielsweise wie folgt umsetzen:
- Man hängt ihn an die Spielfigur. Diese existiert typischerweise genau ein Mal und enthält ansonsten nur wenig Programmcode.
- Man hängt ihn an einen eigenen Agenten, zum Beispiel einen roten Block. Man kann diesen Block dann beispielsweise als Schaltfläche verwenden, mit der man den Level zurücksetzen kann.
- Wenn der Code nur zu Spielbeginn verwendet wird, kann man ihn auch an einen eigenen Agenten hängen und diesen dann am Schluss des Codes vom Spielfeld löschen. Das stellt sicher, dass der Code genau ein Mal ausgeführt wird.
Bedingungen sind mit "AND" verknüpft
Verschiedene Bedingungen innerhalb eines Blocks sind immer und-verknüpft. Die rechte Seite der Anweisung wird also nur ausgeführt, wenn alle Bedingungen links erfüllt sind.
WENN gedrückt (Pfeil nach rechts)
frei (rechts) DANN bewege (rechts).
wäre vollständig ausgeschrieben:
WENN gedrückt (Pfeil nach rechts)
UND
frei (rechts) DANN bewege (rechts).
Bedingungen sind untereinander mit "ELSE" verknüpft
Ein Typischer Codeblock sieht wie folgt aus:
WENN gedrückt (Pfeil nach rechts) DANN bewege (rechts).
WENN gedrückt (Pfeil nach links) DANN bewege (links).
WENN gedrückt (Pfeil nach oben) DANN bewege (oben).
WENN gedrückt (Pfeil nach unten) DANN bewege (unten).
Wichtig ist: Die Anweisungen werden nur so lange evaluiert, bis die erste Bedingung erfüllt ist. Vollständig ausgeschrieben wären die Anweisungen mit IF-THEN-ELSE-Blöcken realisiert:
WENN gedrückt (Pfeil nach rechts) DANN bewege (rechts).
SONST
WENN gedrückt (Pfeil nach links) DANN bewege (links).
SONST
WENN gedrückt (Pfeil nach oben) DANN bewege (oben).
SONST
WENN gedrückt (Pfeil nach unten) DANN bewege (unten).
In den meisten Fällen entspricht dies dem erwarteten Verhalten. Da sich die Spielfigur nur in eine Richtung bewegen kann, erfüllt der Codeblock oben die Erwartungen, auch wenn einmal aus Versehen mehrere Pfeiltasten gedrückt sind.
Durch Anordnen der Anweisungen kann man fast immer erreichen, dass der Code sich den Erwartungen entsprechend verhält. Falls es einmal nötig sein sollte, dass verschiedene Blöcke unabhängig voneinander ausgeführt werden, dann kann man das realisieren, indem man über Nachrichten mehrere Unterprogramme aufruft:
WENN DANN Nachricht (hier, bewegen).
Nachricht (hier, fressen).