Spiele in Lazarus objektorientiert programmieren/Rechnen und Würfeln: Unterschied zwischen den Versionen
main>Peterdauscher |
K (8 Versionen importiert) |
||
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 13: | Zeile 13: | ||
</source> | </source> | ||
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 | 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. | ||
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 | '''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 === | === Rechenoperationen === | ||
Zeile 21: | Zeile 23: | ||
Man kann mit ganzen Zahlen bzw. Integer-Variablen rechnen, wobei die „Rechenzeichen“ für Addition, Subtraktion und Multiplikation gerade +,-,* heißen. | 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“. <tt>7 div 2</tt> liefert dabei den Wert 3. | 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“. <tt>7 div 2</tt> liefert dabei den Wert 3. Wir sind hier sozusagen auf Grundschulniveau: Damals war das Ergebnis der Teilaufgabe ja auch 7:2 = 3 Rest 1. | ||
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. | Den Rest kann man übrigens auch berechnen, nämlich mit 7 mod 2. | ||
Zeile 30: | Zeile 30: | ||
Eine Zeile könnte also heißen: | Eine Zeile könnte also heißen: | ||
<source lang=pascal> | |||
QuaderFlaeche:=(Laenge*Breite+Breite*Hoehe+Laenge*Hoehe)*2; | |||
</source> | |||
=== Zufallszahlen === | === Zufallszahlen === | ||
Zeile 38: | Zeile 39: | ||
Die Funktion | Die Funktion | ||
<source lang=pascal> | |||
random(n) | |||
</source> | |||
wobei n eine natürliche Zahl ist, liefert eine Zufallszahl zwischen 0 und n-1. | wobei n eine natürliche Zahl ist, liefert eine Zufallszahl zwischen 0 und n-1. | ||
Der Befehl | Der Befehl | ||
<source lang=pascal> | |||
Zufallszahl := random(10) | |||
</source> | |||
liefert also eine Zufallszahl zwischen 0 und 9 und speichert diese in der Variable Zufallszahl. | 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 | 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 | ||
<source lang=pascal> | |||
randomize; | |||
</source> | |||
hinzufügen. | hinzufügen. | ||
{{Spiele in Lazarus objektorientiert programmieren}} |
Aktuelle Version vom 10. August 2019, 06:50 Uhr
Eigene Variablen, Rechnungen und Zufallszahlen
Eigene Variablen
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.