Die Woche im Überblick:
Wir haben mit einem neuen Projekt begonnen: das Lampenspiel.
Ziel des Spiels ist es, alle Felder in einer Farbe zu bekommen.
Wir haben insgesamt 2 Versionen.
Version 1: Man hat 7 Felder im Kreis angeordnet. Beim Klicken auf einem Feld wird die Farbe des Feldes und der umliegenden Felder umgekehrt.
Version 2: Man hat 4*4 Felder, also insgesamt 16 Felder. Beim Klicken auf einem Feld wird die Farbe des Feldes und die Felder mit der Position (relativ zum geklicktem Feld) -4, -1, +1 und +4 umgekehrt.
Beim Ausführen des Programms wird verständlich, was gemeint ist.
In dieser Woche gab es eine Menge an Theorie. Wir hatten einmal die random-Funktion und einen "Crash-Kurs" in Sachen Prozeduren, Arrays und Variablen.
Die random-Funktion:
Die random-Funktion ist vom Typ Integer (Zahlen, wie z.B. 0,1,2,...). Es werden "Zufallszahlen" aus gegeben, aber nicht irgendwelche. Man grenzt die Zahlen durch eine Zahl in der Klammer hinter dem random ein. Ein Beispiel: random(2). Die 2 bedeutet das die random 2 Möglichkeiten stellt, entweder gibt sie 0 oder 1 aus.
Wichtig ist das man die random-Funktion zuvor mit randomize; einleiten muss. Dies ist nur einmal am Anfang notwendig. So wird der Funktion gesagt, dass es den "Zufallsgenerator" einschalten soll.
Für unser kleines Programm mussten wir die random-Funktion in einer Bedingung einbauen. Beispiel:
if random(2) = 1
then .....
Die random-Funktion gibt ja 0 oder 1 aus, und wenn 1 ausgegeben wird ist diese Bedingung true. Es wird then ausgeführt.
Prozeduren:
Prozeduren werden mit procedure eingeleitet. Diese sind gefolgt vom Formulartyp, einem Punkt ("."), dem Namen der Methode und in Klammern die Parameter. Hinter der letzten Klammer muss ein Semikolon(";") gesetzt werden. In der neuen Zeile steht das begin, dass den Anfang der Anweisungen angibt, die ausgeführt werden sollen. Beendet werden Prozeduren mit einem end;. Unser Beispiel:
procedure TForm1.FarbeWechseln (LampenNr: Integer)
Die Prozedur muss auch im Kopf der Unit stehen, und zwar unter public, wo unsere eigenen Deklarationen eingefügt werden und das ganze Programm darauf Zugriff hat und unter implementation, wo unsere ganze Prozedur inklusiv Code steht.
Wenn man dies gemacht hat kann man dann beliebig oft auf diese Prozedur zugreifen und uns lästige Schreib- und Kopierarbeit sparen.
Das Array:
Ein Array ist ein Feld für einen Datentyp, indem man beliebig viele Daten speichern kann. Man kann sich ein Array wie einen Schrank mit Schubladen vorstellen. Man kann in jeder Schublade etwas abstellen.
Man deklariert Arrays unter var, wo der Typ einer Variable definiert wird.
Auch hier wieder ein Beispiel:
a: array [1..16] of TPanel;
Nun ist a ein Array mit 16 "Schubladen. In diesem Array dürfen nur Panelobjekte gespeichert werden, da wir dem Array den Datentyp TPanel zuweisen. Wichtig sind die Punkte innerhalb der eckigen Klammern. Es dürfen nur 2 sein, da sonst ein Fehler ausgelöst wird. Der Doppelpunkt(":") hinter dem a bedeutet "ist vom Typ".
Man könnte es also ungefähr so lesen:
a ist vom Typ array mit den Fächern 1 bis 16 in dem nur Panelobjekte gespeichert werden dürfen.
Man greift auf einem Fach im Array mit [Zahl] zu und weist es bei uns einem Panel durch ":=" zu. Unser Beispiel:
a[1] := Panel1;
Wie haben nun dem ersten Fach des Array ein Panelobjekt zugewiesen.
Zum besseren Verständnis stehen beide Lampenspiele im Anhang zur Verfügung.
Ich denke, dass damit die wichtigsten Sachen genannt worden sind, die in dieser theoriereichen Woche vorkam. Bei Fragen einfach Kommentar schreiben.
Alex M.