workshop02

Top  Zurück  Weiter

Workshop 02: Variablen

Eine Variable ist ein Platzhalter im Speicher Ihres Computers - sowas wie ein Behälter, der zur Aufbewahrung von Zahlen benutzt werden kann. Betrachten wir uns ein paar lite-C-Beispiele:

var bullets = 7;
var health;
var lives = 3; // der Spieler hat 3 Leben

Das sind nur wenige, kurze Codezeilen aber wir können allerhand Neues daraus lernen:

1.Bevor man sie verwenden kann, muss jede Variable mithilfe des Schlüsselwortes "var" definiert werden. Wenn Sie diese Codezeile schreiben:

health = 100;

und vorher nicht definiert haben, dass es eine "var" namens "health" gibt, werden Sie beim Starten des Programms eine Fehlermeldung erhalten.

2. Jede Variable kann bei Beginn einen Anfangswert erhalten, muss aber nicht, wenn der Anfangswert egal ist. Beispiel:

var bullets = 7;
var lives = 3;

3. Wir können jeder "var"-Definition unsere eigenen Kommentare hinzufügen. Immer, wenn die Engine auf zwei Schrägstriche //, sogenannte Slashes, stößt, ignoriert Sie nämlich sämtliche Worte, Ausdrücke, Symbole etc., die dahinter kommen. Das können wir uns zunutze machen und unseren Code mit hilfreichen Kommentaren versehen:

var car_speed; // die Geschwindigkeit des Autos, das den Spieler verfolgt
// @%$%&^& Ha Ha Ha! %^&**  Ich bin der King!

4. Jede Skriptzeile muss mit einem Semikolon beendet werden. Viele Anfänger vergessen dieses kleine, unscheinbare ";" am Ende ihrer Codezeilen einfach und das führt dann zu einer Fehlermeldung - nicht in der Zeile mit dem fehlenden Semikolon, sondern in der folgenden Zeile!

5. lite-C benutzt einen Variablentypus (var), der bis zu sechs Vor- und drei Nachkomma-Ziffern haben. (Achtung: die Engine spricht englisch und daher sind Punkt und Komma andersrum als im Deutschen - wenn Sie sich über 30.000,00 Euro freuen, meckert der Amerikaner über den Kurs von 30,000.00 Dollar - Anm. d. Übs.). Daher kann eine "var" Zahlen von -999,999.999 bis 999,999.999 verwalten. Für den Fall, dass Sie höhere Zahlenwerte brauchen, können Sie auch andere C/C++ Variablen-Typen wie int, char, short, long, float, double etc. verwenden. In diesem Workshop konzentrieren wir uns jedoch auf die Variablen var, da sie am besten geeignet für 3D-Koordinaten und am einfachsten anzuwenden sind.

6. Jeder Variablen-Name muss mit einem Buchstaben oder einem Unterstrich "_" beginnen. Hier einige gültige Variablennamen:

var AlohA;
var _me_too;
var go42;
var Iamb19;
var _12345;

Werfen wir jetzt einen Blick auf ein paar schlechte Beispiele für Variablen:

var #ItoldYou;
var 1_for_all;
var 12345;

Ich überlasse es Ihnen, herauszufinden, was an diesen var-Definitionen nicht stimmt.

7. Bei Variablen-Namen ist Groß- und Kleinschreibung zu beachten. Das heißt, wenn wir eine Variable z. B. so definieren:

var MyHeadShots;

und in unserem Code später so anwenden:

myheadshots = 5; // oder
mYheadSHots = 5; // oder
MYHEADSHOTS = 5;

wird die Engine das nicht akzeptieren.

8. Sie können in einer Zeile mehrere Variablen definieren. Das spart Zeilen und hält das Skript kurz. Beispiele:

var health, strength, score;
var width = 7, height = 14, depth = 20;

9. Zu guter Letzt sollten Variablen signifikante Namen haben. Zwar ist es möglich einen Satz von Variablen zu definieren, der so aussieht:

var x32;
var a125;
var h_34_5;
var _z34187;

aber es ist keine gute Idee. Wenn Sie Ihren Code ein paar Wochen später betrachten, werden Sie beim Versuch, sich daran zu erinnern, was diese Variablen eigentlich machen, Probleme kriegen. Und falls Sie Ihren Code anderen Leuten zeigen wollen, wird das für diese ein hartes Stück Arbeit bis sie herausgefunden haben, was Sie mit Ihrem Code eigentlich erreichen wollten. Die folgenden var-Definitionen sehen dagegen viel besser aus:

var current_position; // derzeitige Position des Feindes
var number_of_goals; // Anzahl der Ziele
var high_score;
var player_armor; // wird bei Spielstart auf 100 gesetzt

Genug Theorie! Jetzt wollen wir diese Variablen auch benutzen! Starten Sie den Skript-Editor und klicken Sie auf den Öffnen-Knopf w02_05. Navigieren Sie zum Ordner mit den Beispielen (samples), öffnen Sie workshop02 und doppelklicken Sie darin dann auf die Datei script02 zum Öffnen der lite-C-Datei.

Bevor Sie weitermachen, vergewissern Sie sich, Lite-C korrekt konfiguriert zu haben. Klicken Sie auf das Menü namens Options und wählen Sie anschließend Preferences und den Menüpunkt Environment. Markieren Sie (falls es nicht schon so ist) die Option Use current file for Test Run. Das sorgt dafür, dass die gegenwärtige Datei gestartet wird. Drücken wir auf OK und probieren wir unser Glück mit Test Run: Klicken Sie auf den Dreiecksknopf w02_08!

Die Engine startet und Ihr Bildschirm wird blau (ja, das ist meine Lieblingsfarbe). Das liegt daran, dass ich die Bildschirmfarbe im Skript auf Blau gesetzt habe. Keine Angst, Sie werden lernen, wie man verschiedene Farben einstellt!

Zurück zu unserem Bildschirm; so sollte er aussehen:

w02_02

Zugegeben, das sieht noch nicht allzu aufregend aus. Drücken Sie die [Tab]-Taste auf Ihrer Tastatur damit die Eingabekonsole (der blinkende Cursor) erscheint und dann schreiben Sie:

a = 5;

und drücken die[Eingabe]-Taste, damit die Eingabekonsole verschwindet. Sie werden feststellen, dass sowohl a = 5 als auch c = 5 ist! Was geschieht hier eigentlich?...

w02_03

Drücken Sie nochmal [Tab], löschen Sie den vorhandenen Text per [Backspace]-Taste und schreiben Sie folgende Codezeile:

b = 3;

Nach [Eingabe] sollte Ihr Bildschirm dann so aussehen:

w02_04

Fängt an nach etwas Sinnvollem auszusehen, gell? Es scheint ganz so, als sei c die Summe von a und b. Indem Sie es mit verschiedenen Werten für a und b versuchen, können Sie sich davon überzeugen. Schließen wir jetzt mal das Engine-Fenster per [Esc] und werfen einen Blick auf den mysteriösen Code, der unsere geliebte Engine in eine simple Rechenmaschine verwandelt:

////////////////////////////////////////////////////////////////////
#include <acknex.h> // definiert pure mode, steht normalerweise immer am Anfang
#include <default.c>

var a = 0;
var b = 0;
var c = 0;

/////////////////////////////////////////////////////////////////////
PANEL* panDisplay =
{
  digits(35, 10, "a = %0.f", *, 1, a);
  digits(35, 19, "b = %0.f", *, 1, b);
  digits(35, 28, "c = %0.f", *, 1, c);
  flags = SHOW;
}

/////////////////////////////////////////////////////////////////////
function main()
{
  screen_size.x = 800;
screen_size.y = 600;
screen_color.blue = 150; // und mache den Hintergrund dunkelblau while (1) { c = a + b; wait (1); } }

Wenn Sie meinen, dieser Code sei zu kompliziert; keine Sorge, in diesem Workshop werden wir lediglich die roten Codezeilen besprechen. Uff... es erleichtert doch ungemein, das zu hören - geht es Ihnen auch so?

var a = 0;
var b = 0;
var c = 0;

Das sind drei einfache var-Definitionen. Nun weiss ich ja auch, dass ich auf diese Weise eine Variable (var) definieren muss, wenn ich sie später in meinem Spiel verwenden will.

c = a + b;

Auch diese lite-C-Codezeile scheint einfach zu sein. Sie setzt c gleich der Summe von a und b. Machen wir ein kleines Experiment: schauen Sie ins SED-Fenster und suchen Sie nach der Codezeile mit unserem c = a + b; löschen Sie das "+"-Zeichen und ersetzen Sie es durch ein "-", so, dass die Zeile folgendermaßen aussieht:

c = a - b; Drücken Sie nun wieder den Testlauf-Knopf und...

w02_13

Ich kann den altbekannten blauen Bildschirm sehen! Tippen wir ein paar Werte ein (vergessen Sie die [Tab]-Taste nicht):

a = 2;
b = 5;

und das Ergebnis lautet c = -3! Es funktioniert tatsächlich!

w02_14

Die Grundlagen von lite-C haben Sie somit gemeistert. Machen wir ein kleines Experiment: wie wir gelernt haben, kann jede Variable (von jetzt an nur noch var) einen Anfangs- oder Initialwert erhalten. Stimmt das? Das werden wir doch gleich mal prüfen: editieren Sie in Ihrer Skript-Datei die Werte für a und b wie folgt:

var a = 20;
var b = 5;
var c = 0;           
Und machen wir den Testlauf :

w02_16

Die Engine hat die neuen Werte gelesen, 5 von 20 abgezogen und zeigt das korrekte Ergebnis, nämlich 15. Zugegeben, das ist noch kein Game was wir hier machen aber es ist doch recht spaßig! Wir wissen jetzt also wie man Werte addiert und subtrahiert. Zusätzlich können wir auch noch * zum Multiplizieren zweier Zahlen oder oder / zu ihrer Division verwenden. Wir könnten die Codezeile, die die “c = a + b;” -Berechnung anstellt durch viel komplexere Ausdrücke ersetzen aber ich kann Mathematik nicht ausstehen und deshalb bin ich dafür, dass wir was anderes machen...

Erinnern Sie sich an die ersten Codezeilen unter der Main-Funktion? Ich habe sie nicht vergessen:

screen_size.x = 800;
screen_size.y = 600;
screen_color.blue = 150;

Lite-C kennt vordefinierte und Anwender-definierte Variablen. Einige Variablen sind bereits innerhalb der Engine von ihren Machern vordefiniert - das sind die Engine-Variablen. Sie kontrollieren Features der Engine. Die obige Variable screen_size ist ein vordefinierter Vektor. Im Gegensatz zu einer einfachen Variablen enthält ein Vektor mehrere Werte, hier durch .x und .y unterschieden. Sie werden von der Engine zum Festlegen der Anfangs-Bildschirmauflösung beim Start verwendet (in meinem Beispiel 800x600 Pixel). screen_color ist eine andere Art Vektor, dessen .blue Wert den Blauanteil der Bildschirmfarbe setzt. Später lernen wir mehr über Vektoren. Im Referenzhandbuch finden Sie die komplette Liste vordefinierter Variablen.

Müde? Ich auch. Machen wir eine Pause.

Weiter: Funktionen


Mehr über das Thema dieses Workshops: Gamestudio Handbuch, Variablen und Arrays.