Spiele in Lazarus objektorientiert programmieren/Rechnen und Würfeln: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
main>Peterdauscher
main>Karl Kirst
(Navigation eingefügt)
Zeile 58: Zeile 58:


hinzufügen.
hinzufügen.
{{Spiele in Lazarus objektorientiert programmieren}}

Version vom 6. Januar 2019, 00:12 Uhr

Eigene Variablen, Rechnungen und Zufallszahlen

Eigene Variablen

Bisher haben wir immer nur die Eigenschaften von Objekten verändert, die wir vorher auf dem Fenster platziert haben (oder Eigenschaften des Fensters selbst). Bei praktisch allen etwas komplizierteren Spielen ist es aber hilfreich, Zwischenrechnungen durchzuführen und die Ergebnisse in so genannten Variablen zu speichern, die man selbst definiert.

Um eine ganze Zahl mit dem Variablennamen „MeineZahl“ abspeichern zu können, muss man im Abschnitt „var“ ganz oben im Programm angeben:

EineZahl : Integer;
EinWort : String;
Wahr_oder_falsch : Boolean;

Dann existiert überall im Programm diese Zahl, dieses Wort oder dieser Wahrheitswert und man kann aus jeder Methode direkt auf diese Zahl zugreifen. Das ist extrem wichtig, wenn man sich im Spielverlauf Dinge wie etwa den Punktestand des Spielers merken möchte.

Wichtig: Umlaute, Leer- oder Sonderzeichen haben in Variablennamen nichts verloren (Ausnahme wieder: der Unterstrich).

Und noch etwas ist wichtig bei der Vergabe von Variablennamen: Diese sollten wirklich beschreiben, welche Information in einer Variable abgespeichert ist. Je „sprechender“ der Variablenname ist, desto leichter ist es für andere (und für einen selbst – vor allem nach einiger Zeit) den Sinn des Programms zu verstehen. Und das ist besonders bei der – praktisch unausweichlichen – Fehlersuche von ganz großer BedeutungIn Programmierer-Kreisen gibt es das Sprichwort: „Wenn alles gleich geht, sitzt der Fehler tiefer."

Rechenoperationen

Man kann mit ganzen Zahlen bzw. Integer-Variablen rechnen, wobei die „Rechenzeichen“ für Addition, Subtraktion und Multiplikation gerade +,-,* heißen.

Schwierig ist es bei der Division, denn die Division zweier ganzer Zahlen liefert nicht automatisch wieder eine ganze Zahl (etwa 7/2). Damit es hier nicht zu Verwechslungen kommt, heißt die Ganzzahl-Division „div“. 7 div 2 liefert dabei den Wert 3. Wir sind hier sozusagen auf Grundschulniveau: Damals war das Ergebnis der Teilaufgabe ja auch 7:2 = 3 Rest 1.

Den Rest kann man übrigens auch berechnen, nämlich mit 7 mod 2.

Man kann praktisch beliebig komplizierte Rechenausdrücke aus Zahlen und Variablen in Pascal hinschreiben; Pascal beherrscht auch die Punkt-vor-Strich-Rechnung sowie Klammern.

Eine Zeile könnte also heißen:

QuaderFlaeche:=(Laenge*Breite+Breite*Hoehe+Laenge*Hoehe)*2;

Zufallszahlen

Viele Spiele wären extrem langweilig, wenn nicht zufällige Dinge passieren könnten. Deshalb muss eine Programmiersprache, mit der man Spiele programmieren kann, auch Zufallszahlen produzieren können.

Die Funktion

random(n)

wobei n eine natürliche Zahl ist, liefert eine Zufallszahl zwischen 0 und n-1.

Der Befehl

Zufallszahl := random(10)

liefert also eine Zufallszahl zwischen 0 und 9 und speichert diese in der Variable Zufallszahl.

Damit die Zufallszahlen bei jedem Programmstart tatsächlich andere sind, muss man allerdings noch beim Start des Programms (Methode zum Ereignis OnCreate des Fensters) den Befehl

randomize;

hinzufügen.