Schnellstart (für Programmierer): Unterschied zwischen den Versionen

Aus Scalablegamedesign
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
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.
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 =
= Speichern ist etwas gewöhnungsbedürftig=


AgentCubes hat zwei Modi des Speicherns:
AgentCubes hat zwei Modi des Speicherns:
Zeile 14: Zeile 14:




= Agenten =
= 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.
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.
Zeile 25: Zeile 25:
* 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.
* 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.


= If-Then (Bedingungen) =


AgentCubes basiert auf '''IF - THEN''' Anweisungen. Ein Typischer Codeblock sieht wie folgt aus:
= Bedingungen sind mit "AND" verknüpft =
<blockquote>
 
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.
 
<code>
  '''WENN'''  gedrückt (Pfeil nach rechts) 
                    frei (rechts)                              '''DANN''' bewege (rechts).
</code>
 
 
= Bedingungen sind untereinander mit "ELSE" verknüpft =
 
Ein Typischer Codeblock sieht wie folgt aus:
<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)  '''DANN'''  bewege (links).
   '''WENN'''  gedrückt (Pfeil nach links)  '''DANN'''  bewege (links).
   '''WENN'''  gedrückt (Pfeil nach rechts)  '''DANN'''  bewege (rechts).
   '''WENN'''  gedrückt (Pfeil nach rechts)  '''DANN'''  bewege (rechts).
   '''WENN'''  gedrückt (Pfeil nach rechts)  '''DANN'''  bewege (rechts).
   '''WENN'''  gedrückt (Pfeil nach rechts)  '''DANN'''  bewege (rechts).
</blockquote>
</code>


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:
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:
<blockquote>
<code>
   '''WENN'''  gedrückt (Pfeil nach rechts)  '''DANN'''  bewege (rechts).
   '''WENN'''  gedrückt (Pfeil nach rechts)  '''DANN'''  bewege (rechts).
       '''SONST'''
       '''SONST'''
Zeile 44: Zeile 55:
       '''SONST'''
       '''SONST'''
   '''WENN'''  gedrückt (Pfeil nach rechts)  '''DANN'''  bewege (rechts).
   '''WENN'''  gedrückt (Pfeil nach rechts)  '''DANN'''  bewege (rechts).
</blockquote>
</code>
 
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:


<code>
  '''WENN'''          '''DANN'''  Nachricht (hier, bewegen).
                                              Nachricht (hier, fressen).
</code>


= Stapel und Ebenenen =
= Stapel und Ebenenen =

Version vom 31. Mai 2017, 15:23 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).


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 rechts)  DANN  bewege (rechts).
  WENN  gedrückt (Pfeil nach rechts)  DANN  bewege (rechts).

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 rechts)  DANN  bewege (rechts).
     SONST
  WENN  gedrückt (Pfeil nach rechts)  DANN  bewege (rechts).

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).

Stapel und Ebenenen

Ereignisse und Ereignisbehandlung

Variablen