Wenn Sie das Projekt geladen und das Programm gestartet haben, sehen Sie das
Trainingscamp, eine schachbrettartige Welt, darauf ein paar Bäume und die
Handsteuerung 'Vor' für den Roboter. Das
wichtigste Objekt, der Roboter RD1, fehlt noch, weil er noch nicht erzeugt
wurde. Das geschieht so:
1. Aufgabe:
Ein Objekt erzeugen und
initialisieren
a) Beenden Sie das laufende Programm und
schalten Sie zur Unit uControl mit:
Menü-Ansicht-Umschalten Formular/Unit.
Sie sehen den Quelltext der Unit, die die Steuerbefehle an
die Objekte übermittelt.
b) Roboter RD1 deklarieren im Interface-Teil unter
var
ControlFrm : TControlFrm;
RD1 : TRobot;
// neuen Roboter deklarieren
c) Roboter RD1 erzeugen. Ergänzen Sie die fehlenden Zeilen in der
procedure TControlFrm.ItemsErzeugen;
//
----------------------------------------------------------------------
// Zweck : Erzeugen und initialisieren aller (neuen) Items in einer Welt
// vorher : -
// nachher: Item ist erzeugt
// ----------------------------------------------------------------------
begin
RD1 := TRobot.Create;
// erzeugt RD1
RD1.SetPos('C',1);
// meldet RD1 mit Anfangsposition in der Welt an
Welt.AllesZeigen;
// in der letzten Zeile, auch wenn nichts gesetzt
ist
end; |
2. Aufgabe:
Einen Button zur Hand-Steuerung aktivieren
Aus der GUI werden dem Roboter die Anweisungen erteilt ("Botschaften
übermittelt"), die er ausführen soll. Nimmt man dazu Buttons, hat man
praktisch so etwas wie eine Fernbedienung. Im Programm ist bereits der
erste Button (VorBtn) implementiert und vorbereitet.
procedure TControlFrm.VorBtnClick(Sender: TObject);
// ------------------------------------------------
begin
inherited; // ist vom System eingefügt
RD1.Vor;
// Aufruf der Roboter-Methode 'Vor'
end; |
Fügen Sie in der 2. Zeile RD1.Vor; ein. Der Button sendet die Botschaft 'Vor' an RD1, der
dann weiß, daß er einen Schritt weitergehen soll.
Starten Sie das Programm und lassen Sie RD1
marschieren!
Regel: Objekte
können erst dann angesprochen werden,
wenn sie schon erzeugt sind!
(Wenn Sie die Fehlermeldung erhalten:
"... ist eine Exzeption der Klasse EAccessViolation
aufgetreten", dann haben Sie sicher vergessen, das Objekt zu
erzeugen. )
|
|
Objekte
Methoden
Botschaften |