2.3 |
Auswahl, zweiseitig
1)
procedure TControlFrm.Vorwaerts3;
// -----------------------------------------------------------------------
begin
if RD1.VorneFrei
then RD1.Vor
else
begin
RD1.RechtsDrehen;
RD1.Vor;
NachLinksDrehen;
RD1.Vor;
RD1.Vor;
NachLinksDrehen;
RD1.Vor;
RD1.RechtsDrehen
end;
end; |
2)
procedure
TControlFrm.Vorwaerts4;
// -----------------------------------------------------------------------
begin
NachLinksDrehen;
Vorwaerts3;
Vorwaerts3;
Vorwaerts3;
Vorwaerts3;
Vorwaerts3;
Vorwaerts3;
Vorwaerts3;
Vorwaerts3;
Vorwaerts3;
end; |
|
4.2 |
Aggregation
unit uControl;
(* ******************************************************************** *)
(* K L A S S E : TControlFrm - KarelD. Robot *)
(* -------------------------------------------------------------------- *)
(* Version : 2.2.1 *)
(* Autor : (c) 2004, Siegfried Spolwig *)
(* Beschreibung: Die Klasse hat Control-Funktion für die Welt und *)
(* die Akteure. *)
(* Compiler : Delphi 6.0 *)
(* Aenderungen : 2.2 21-JUL-04 s. Doc. *)
(* known bugs : bei schneller ClickFolge werden nicht alle Fußspuren *)
(* gesetzt. *)
(* ******************************************************************** *)
interface
// =======================================================================
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls,StdCtrls, Buttons, uProtBox,
uFenster, // Oberklasse; zeigt die Welt
uKarel,
uRobot,
uMyRobot; // Fachklassen nach Bedarf
type
TControlFrm = class(TFensterFrm)
UserPnl : TPanel;
EndeBtn : TBitBtn;
GroupBox1 : TGroupBox;
VorBtn : TSpeedButton;
RechtsBtn : TSpeedButton;
LinksBtn : TSpeedButton;
GoBtn : TButton;
procedure EndeBtnClick(Sender: TObject);
procedure RechtsBtnClick(Sender: TObject);
procedure GoBtnClick(Sender: TObject);
procedure VorBtnClick(Sender: TObject);
procedure LinksBtnClick(Sender: TObject);
procedure ItemsErzeugen; // darf nicht gelöscht werden!
end;
var
ControlFrm : TControlFrm;
RD1 : TRobot;
Robby : TMyRobot;
implementation
{$R *.dfm}
// =======================================================================
procedure TControlFrm.ItemsErzeugen;
// -----------------------------------------------------------------------
// Zweck : Erzeugen und initialisieren aller (neuen) Items in einer Welt
// vorher : -
// nachher: Item ist erzeugt
// -----------------------------------------------------------------------
begin
Robby := TMyRobot.Create;
Robby.SetPos('C',1);
Welt.AllesZeigen; // in der letzten Zeile, auch wenn nichts gesetzt ist
end;
procedure TControlFrm.EndeBtnClick(Sender: TObject);
// -----------------------------------------------------------------------
// Zweck : Entfernt alle Items aus dem Speicher, speichert und schließt
// die ProtBox und zum Schluss das ControlFrm.
// nachher: Programm beendet.
// -----------------------------------------------------------------------
begin
Welt.AlleItemsEntfernen;
ProtokollFrm.Close;
Close;
end;
procedure TControlFrm.VorBtnClick(Sender: TObject);
// -----------------------------------------------------------------------
begin
inherited;
Robby.Vor;
end;
procedure TControlFrm.RechtsBtnClick(Sender: TObject);
// -----------------------------------------------------------------------
begin
inherited;
Robby.RechtsDrehen;
end;
procedure TControlFrm.LinksBtnClick(Sender: TObject);
// -----------------------------------------------------------------------
begin
inherited;
Robby.LinksDrehen;
end;
procedure TControlFrm.GoBtnClick(Sender: TObject);
// -----------------------------------------------------------------------
begin
inherited;
// UmDieBaeume;
// Vorwaerts2;
// Vorwaerts3;
// vorwaerts4
// ZumBaum1;
// ZumBaum2;
// BaumSuchen;
end;
END. //--- Unit -- |
UNIT uMyWorld;
(*
********************************************************************
*)
(* K L A S S E : TMyWorld
*)
(*
--------------------------------------------------------------------
*)
(* Version : 2.2
*)
(* Autor :
*)
(* Beschreibung: Die Klasse bildet die Welt 'MyWorld'mit einem Haus
und *)
(*
einem Monster ab.
*)
(* Compiler : Delphi 6
*)
(* Aenderungen : 0.9 28-MAR-04
*)
(*
********************************************************************
*)
INTERFACE
//
=======================================================================
uses
uWelt,
uHaus,
uCritter; // und was man man sonst gern drin hätte
type
TMyWorld = class(TWelt)
protected
Haus : THaus;
Critter : TCritter;
public
constructor Create; override;
procedure Init;
end;
(* -------------------- B e s c h r e i b u n g
-------------------------
Oberklasse : TWelt
Bezugsklassen : - import:
Methoden
--------
Create
Auftrag: Haus, Critter erzeugen und init.
Alle Objekte der vorigen
Welt entfernen
vorher :
nachher: done.
Init
Auftrag: Anfangswerte setzen
vorher :
nachher: Bäume, Mauern, Haufen, Häuser gesetzt
Set...
Auftrag: Attribut schreiben
vorher :
nachher: Attribut ist gesetzt
Get...
Auftrag: Attribut aus dem Objekt lesen
vorher :
nachher: -
---------------------------------------------------------------------
*)
IMPLEMENTATION
//
====================================================================
USES graphics,
uFenster; // importiert Welt und was gebraucht wird
constructor TMyWorld.Create;
//
--------------------------------------------------------------------
begin
inherited Create;
Welt.AlleItemsEntfernen; // alten Kram weg
Haus := THaus.Create; // die aggregierten Objekte erzeugen
Haus.SetPos('H',2);
Critter := TCritter.Create;
Critter.SetPos('A',8);
Critter.SetBild('.\bilder\monster.bmp');
Init;
Welt.AllesZeigen;
end;
procedure TMyWorld.Init;
//
--------------------------------------------------------------------
begin
SetFuellFarbe(clgreen);
Rasterlinie.SetFarbe(clSilver);
end;
END. // -------- UNIT ------------- |
|