is-Logo Karel D. Robot
TRobot

S. Spolwig

[Delphi | OOP]
Startseite


TItem
|
TCritter
|
TRobot

Kurzbeschreibung Attribute Methoden

Klassendiagramm

Die Klasse bildet den Ur-Roboter RD1 (Robot Device 1) der 1. Generation ab.  Er kann nur Vor-Gehen, nach rechts drehen und prüfen, was vor ihm ist.
Er merkt sich, wo er schon war.

Er hat Sensoren, die aber noch nicht aktiviert sind.

 

UNIT uRobot;
(* ******************************************************************** *)
(* K L A S S E : TRobot                                                 *)
(* -------------------------------------------------------------------- *)
(* Version     : 2.4                                                    *)
(* Autor       : (c) 2004-2005, Siegfried Spolwig                       *)
(* Beschreibung: Die Klasse bildet den Ur-Roboter RD1 der 1. Generation *)
(*               ab. Er ist nur mit wenigen Features ausgestattet (s.u.)*)
(*               Felder, die er passiert hat, sind leer.                *)
(*                                                                      *)
(* Compiler    : Delphi 6                                               *)
(* Aenderungen : 0.9	  11-MAR-04                                     *)
(*               2.2    20-JUL-04   s. Doc                              *)
(*               2.21   30-Nov-04   macht Spur                          *)
(*               2.2.1  16-DEC-04   keine Spur bei OFFlimits; machtSpur *)
(*                                  in Vor geändert                     *)
(*               2.4    18-APR-05   Vor geändert (Blackhole)            *)
(* ******************************************************************** *)

INTERFACE
// =======================================================================
uses
  uGrafik,
  uItem,
  uCritter,
  uMemory;

type
  TRobot = class(TCritter)
   protected
    Form,
    Lampe         : TKreis;
    Gedaechtnis   : TMemory;
    Schrittzaehler: integer;
    Batteriestand : integer;
    MachtSpur     : boolean;

   public
    constructor Create;  override;
    procedure Init;
    procedure SetPos(spalte: char; zeile: integer);  override;
    procedure Vor;                              
    procedure RechtsDrehen;
    function  HindernisPruefen : TItem;
    function  VorneFrei : boolean;
    function  BatterieLeer : boolean;
    procedure BatterieAufladen;
    procedure MacheSpur;
    procedure KeineSpur;
    function  DaGewesen : boolean;
    function  GetSchrittZaehler : integer;
    function  GetBatteriestand : integer;

    procedure Zeigen;     override;
    procedure Loeschen;   override;
    procedure Entfernen;  override;

    procedure InsGedaechtnis(action : string);
    function  GetGedaechtnis : TMemory;

   private
    procedure Step;
    procedure Aktualisieren;
  end;

(* -------------------- B e s c h r e i b u n g -------------------------

Oberklasse    : TCritter
Bezugsklassen : TMemory, TZeit, TFensterFrm - importiert: Welt

Methoden
--------

Create
  Auftrag: Exemplar erzeugen und init.
  vorher :
  nachher:

Init
  Auftrag: Anfangswerte setzen
  vorher : -
  nachher: Richtung ist S, Schrittzaehler ist 0, Batteriestand ist 40,
           Geschwindigkeit ist 1; Gedaechtnis ist leer.

Set...
  Auftrag: Attribut schreiben
  vorher : -
  nachher: Attribut ist gesetzt

Get...
  Auftrag: Attribut aus dem Objekt lesen
  vorher : -
  nachher: -

Vor
  Auftrag: Exemplar geht 1 Feld in der aktuellen Richtung vorwärts unabhängig
           davon, ob das Feld besetzt ist
  vorher : Batterie ist geladen
  nachher: Eins weiter oder Stehenbleiben, wenn HindernisPruefen oder
           Batteriestand = 0

RechtsDrehen
  Auftrag: Auf der aktuellen Position um 90 Grad nach rechts drehen
  vorher : -
  nachher: neue Richtung gesetzt. Lampe zeigt in neue Richtung.

HindernisPruefen
  Anfrage: Item auf dem nächsten vorausliegenden Feld holen, damit es
           angesprochen werden kann. Rote Warnlampe an.
  vorher : -
  nachher: liefert Item oder NIL

VorneFrei
  Anfrage: prüfen, nächstes Feld frei ist
  vorher : -
  nachher: True, wenn Feld leer (NIL) ist.

BatterieLeer
  Anfrage: ob Batterie leer ist
  vorher : -
  nachher: true, wenn Batteriestand = 0

BatterieAufladen
  Auftrag: leere Batterie laden
  vorher : -
  nachher: Ladung ist 40 Einheiten

MacheSpur
  Auftrag: Eine Spur auf dem Feld hinterlassen, das der Roboter als voriges
           betreten hat
  vorher : -
  nachher: Spur (ein Item!) ist gesetzt.

KeineSpur
  Auftrag: Spur abschalten
  vorher : -
  nachher: Machtspur ist false.

InsGedaechtnis(action : string);
  Auftrag: action,i.e. letzte Anweisung (z. Z. 'Vor', 'RechtsDrehen'),
           Spalten- u. Zeilenposition merken. Startposition wird nicht erfasst.
  vorher : -
  nachher: Action, Spalte, Zeile im Gedaechtnis (Speicher, nicht Platte!)

DaGewesen
  Anfrage: ob Roboter das naechste Feld in Laufrichtung schon betreten hatte.
  vorher : Das Feld war mit 'Vor' erreicht. Ausgangsposition wird nicht erfasst.
  nachher: true, wenn ein Feld mit der Folgeposition im Gedächtnis gefunden
           wird

--------------------------------------------------------------------- *)

 


©  05. Oktober 2008    Siegfried Spolwig

page_top