Coding Guideline
Lucy

In dieser Anwendung geht es um Lucy. Damit sie ihre Aufgaben erfüllen kann braucht sie eure Hilfe. Das könnt ihr mit Hilfe von Befehlen tun, die ihr in das Eingabefenster mit dem Text "Schreibe hier deinen Code ..." eingeben könnt. So könnt ihr mit Lucy "kommunizieren". Welche Befehle möglich sind, könnt ihr auf dieser Seite nachlesen (siehe Kapitel Befehle). Mit Hilfe des "RUN"-Buttons, der sich unterhalb des Eingabefensters befindet werden die eingegebenen Befehle ausgeführt.
Szenarien

Lucy muss sich durch verschiedene Szenarien bewegen und Aufgaben lösen. Ziel jeder Aufgabe ist es, alle beweglichen Gegenstände (Bonbons, Gold) einzusammeln einzusammeln und das Labyrinth durch die Tür zu verlassen. Dabei geht es geht es immer darum, Lucy möglichst wenig Mühe zu machen, denn Lucy ist eigentlich ziemlich faul. ziemlich faul. Schreibe also einen möglichst einfachen, aber effektiven Befehlscode.

Das Standardszenario heißt "Start" und wird automatisch geladen. Du kannst aber auch andere Szenarien können über die Bedienleiste am unteren Bildschirmrand geladen werden.
Bewegungsfläche

Jedes Szenario hat eine Größe von 768 x 352 Pixel. Jeder Block (Wand, Candy, JumperPate) ist 32x32 Pixel groß. Lucy bewegt sich bei jedem Schritt 32 Pixel in eine Richtung. Sie kann also maximal 24 Schritte in die eine und 11 Schritte in die andere Richtung laufen. Durch Wände kann sie aber nicht gehen. Über die Bedienleiste am unteren Bildschirmrand kann ein Raster aufgerufen werden, um die Felder genau zu bestimmen.
Objekte

In der Anwendung gibt es verschiedene Objekte, mit denen Lucy interagieren kann. interagieren kann. Dazu gehören Wände (wall), Türen (door), Süßigkeiten (candy), Gold (gold) und Sprungkissen (jumperplate). Dazu gibt es verschiedene Befehle. Aber Vorsicht: Läuft Lucy gegen eine Wand, tut das weh, tut das weh und die Ausführung der Befehle wird unterbrochen. Darüber Darüber hinaus gibt es noch weitere Objekte, die zum Erstellen eigener Szenarien verwendet werden können, z.B. Gras (grass) oder Erde (soil).
Steuerung

Lucy wird durch Befehle gesteuert, die in das Eingabefenster eingegeben werden. Jeder Befehl muss mit einem Semikolon ";" abgeschlossen werden. (abgeschlossen werden.) Es können mehrere Befehle in einer Zeile stehen. Beispiel: walkLeft(); pickUp("candy");
Ausgabefenster - Output

Beim Ausführen der Befehle wechselt die Anwendung automatisch in das Ausgabefenster und gibt eine Rückmeldung über die ausgeführten Befehle. Teilweise werden ich auch Fehler im Code, Hinweise und Informationen ausgegeben.
Übersicht der Befehle:

Befehl: walkLeft():
Lucy läuft einen Schritt nach "links".
Beispielsweise läuft Lucy so 2 Schritte nach links: walkLeft(); walkLeft();
Befehl: walkRight():
Lucy läuft einen Schritt nach "rechts".
Befehl: walkDown():
Lucy läuft einen Schritt nach "unten".
Befehl: walkUp():
Lucy läuft einen Schritt nach "oben".

Befehl: printText("Text"):
Der zurückgegebene Text wird im Ausgabefenster angezeigt. Text kann eine beliebige Zeichenkette sein (muss in Anführungszeichen stehen) oder eine Variable sein (was eine Variable ist, wird weiter unten erklärt).
Beispiel: printText("Hallo Lucy!"); => ergibt Hallo Lucy! von
Befehl: printAlert("Text"):
Der hinterlegte Text wird in einem Popup-Fenster angezeigt.

Befehl: pickUp("Objekt"):
Lucy hebt ein Objekt auf, z. B. "Candy" oder "Gold".
Befehl: activate(Person):
Lucy ist nicht immer alle, sondern hat Freunde, z. B. "Tily". Wenn mehr als zwei Personen in einem Szenario auftauchen, dann kann mit Hilfe des Befehls "activate" zwischen diesen gewechselt werden. Dazu einfach den Namen angeben und alle nachfolgenden Aktionen werden mit dieser Person ausgeführt.
Beispiel: activate("Tily");
Befehl: whoIsIt():
Mit dem Befehl ist es möglich herauszufinden, welche Figur gerade aktiv ist.
Beispiel: activate("Tily"); whoIsIt(); Liefert: Du bewegst Tily
Befehl: solveQuest(Variable):
Lucy löst ein Rätsel, dabei muss das Ergbnis der Lösung per Variable angegeben bzw. übergeben werden, z. B. var i = 1; solveQuest(i);
Ist die Lösung richtig, kann Lucy weiterlaufen und das Quest-Symbol verschwindet.
Befehl: countThings("Objekt"):
Die Anzahl der Objekte einer bestimmten Art zählen, z.B. "Candy", "Gold" oder "Door".
Befehl: jumpTo(Wert X-Koordinate, Wert Y-Koordinate):
Dieser Befehl funktioniert nur, wenn Lucy auf einer "JumperPate" steht und zu einer anderen "JumperPlate" springen kann. D. h. es müssen mindestens 2 "JumperPlates" vorhanden sein.
Befehl: buildBlock(Objekt, Wert X-Koordinate , Wert Y-Koordinate):
Objekt kann "wall", "door", "gras", "soil", "jumperplate", "gold" und "candy" sein und muss in Anführungszeichen angegeben werden. Beim Objekt ist die Groß- und Kleinschreibung egal, es funktioniert z. B. "WALL", "wall" und "Wall"
Beispiel: buildBlock("wall", 32, 128);
Befehl: getPosition(Objekttyp):
Ermittelt die genaue Position eines Objekts: "wall", "candy", "jumperplate" oder "door".

repeat-Schleife: repeat(Befehl, Häufigkeit):
Repeat-Schleife dient dazu einen Befehl mehrfach zu wiederholen. Als Befehl kann jeder gültige Befehl verwendet werden, z.B. printText("Lucy") oder walkLeft. Die "Häufigkeit" gibt an wie oft die Schleife durchlaufen werden soll.

for-Schleife: for(variable = number1 to number2) {Befehl};
Die For-Schleife dient wie die Repeat-Schleife dazu, Befehle mehrfach auszuführen. Die Werte der Schleife werden jedoch an eine Variable übergeben und können innerhalb der geschweiften Klammer verwendet werden.
Die Anzahl der Durchläufe wird durch den Zahlenwert number1 (z.B. 3) und den Zahlenwert number2 (z.B. 6) definiert. Das Schlüsselwort to beschreibt dabei, dass der Befehl in den geschweiften Klammern ab dem Zahlenwert number1 bis zum Erreichen des Zahlenwertes number2 wiederholt werden soll.
Wenn der Wert der Variablen weiterverwenden werden soll, müss diese Variable explizit als solche deklarieren werden (z. B. var i = 0;) und nimmt dann den Wert des jeweiligen Durchlaufs an. Im folgenden Beispiel werden also die Zahlen 3, 4, 5 und 6 ausgegeben: var i = 0; for (i = 3 to 6) { printText(i); }

Funktion: func meinName() {CodeBlock};
Bei der Programmierung von Anwendungen spielen Funktionen eine besondere Aufgabe. Sie stellen eine Möglichkeit dar, eine Gruppe von Anweisungen zusammenzufassen, die eine bestimmte Aufgabe ausführen.
Eine Funktion wird mit dem Schlüsselwort "func" definiert. Um eine Funktion aufrufen zu können, wird ihr ein eindeutiger Name zugewiesen, z.B. Beispiel myName(), der im nachfolgenden Code verwendet werden kann. Wichtig ist, dass der Name der Funktion mit Klammern abgeschlossen wird. Ein Codeblock definiert den Inhalt der Funktion, die ausgeführt werden soll.
Beispiel: func walkAround() {walkRight(); walkDown(); walkLeft(); walkUp();}; walkAround();

Variable: var i = 0;
Variablen haben in Programmiersprachen die Aufgabe, Werte aufzunehmen, die sich während der Laufzeit des Programms ändern können.
Die meisten Programmiersprachen unterscheiden zwischen lokalen und globalen Variablen. In unserem Programm gibt es diese Unterscheidung nicht. Alle Variablen sind globale Variablen und werden mit dem Schlüsselwort "var" gekennzeichnet. Sie können im gesamten Programm verwendet werden und eine Wertzuweisung kann an verschiedenen Stellen erfolgen.

Variablen können aus unterschiedlichen Datentypen bestehen, z. B. aus
  • nummerischen Werten: 1, 100, 3.1415926
  • Text-Werten: "dies ist ein Text", "20" (Texte müssen in Anführungszeichen)
  • Wahrheitswerte: true, false

  • Viele Programmiersprachen verlangen eine explizite Datentypzuweisung, so dass bei der Deklaration klar ist, welche Datentypen die Variable aufnehmen soll bzw. kann. In unserem Programm ist dies nicht notwendig, da der Datentyp automatisch ermittelt wird.

    Tipp: Um den aktuellen Wert einer Variablen zu überprüfen, kann dieser ganz einfach mit dem Befehl printText() ausgegeben werden (siehe Beispiel unten).

    Ein Beispiel für die Deklaration und Verwendung einer Variablen ist im Folgenden dargestellt. Zuerst wird der Variablen ein Wert zugewiesen und anschließend mit printText() ausgegeben.
    var i = "Text"; printText(i);

    Variablen können ihren Wert beliebig häufig ändern und auch für komplexere mathematische Terme verwendet werden, wie das folgende Codebeispiel zur Berechnung des Umfangs eines Rechtecks zeigt:
    var a = 30;
    var b = 50;
    var umfang = 2 * a + 2 * b;
    printText(umfang);


    Dies ergibt in der Ausgabe: 160

    Noch ein Tipp zur Verwendung von Variablen: Es ist auch möglich, zwei Variablen oder einen Text und eine Variable miteinander zu verknüpfen. Dazu kann der Operator "&" verwendet werden: var z = 20; printText("Der Wert von z ist " & z);

    Dies ergibt in der Ausgabe: Der Wert von z ist 20


    inc(number) / dec(number):
    Numerische globale Variablen können verändert werden, mit Hilfe der Schlüsselwörter inc() (increase = erhöhen) und dec() (decrease = verringern).
    Entsprechend ihrer Bedeutung lassen sich mit ihnen ganze Zahl herauf- oder herunterzählen.
    Das folgende Beispiel verdeutlicht das: var i = 10; inc(i); => führt zum Ergebnis i = 11;

    Tipp: Der gleiche Effekt kann aber auch über die folgende Anweisung erzielt werden:
    var i = i + 1;


    Bedingungen: if(Bedingung){Code-Block} else{Code-Block}:
    Innerhalb des Codes kann es machmal sinnvoll sein Bedingungen einzuführen, um den Code einfacher und übersichtlicher zu gestalten. Hierfür gibt es die if/else-Bedingung.
    Hierbei wird über die if-Anweisung mit Hilfe einer Prüfung entschieden, ob ein Code-Teil ausgeführt wird oder ggf. über die else-Anweisung ein anderen Code-Teil.
    Das folgende Beispiel verdeutlicht die Anwendung:
    if (x>=10)
      {printText("x ist größer oder gleich 10"); }
    else
      {printText("x ist kleiner 10");};


    Als Bedingungen können alle Varianten von Logik-Prüfungen genutzt werden:
      > entspricht größer | Beispiel x > 10
      < entspricht kleiner | Beispiel x > 10
      == entspricht gleich* | Beispiel x == 10
      >= entspricht größer/gleich | Beispiel x >= 10
      <= entspricht kleiner/gleich | Beispiel x <= 10
      != entspricht ungleich | Beispiel x != 10

    *Bitte beachten: für den Vergleich, ob zwei Werte gleich sind, werden immer zwei Gleichzeichen genutzt, ein Gleichheitszeichen dient der Zuweisung von Werten, z. B. bei Variablen.

    Tipp: Der if-Befehl kann auch ohne else-Befehlt genutzt werden
    if (x == 10) {printText("x ist gleich 10");}


    Kommentar: /* */:
    Innerhalb des Codes können jederzeit Inhalte auskommentiert werden, in dem diese auf beiden Seiten durch einen Schrägstrick und ein Sternchen eingeschlossen werden
    Beispiel: /* walkLeft(); pickUp("candy"); */