is-Logo Karel D. Robot
TKarel

S. Spolwig

[Delphi | OOP]
Startseite


TItem
|
TCritter
|
TRobot
|
TKarel

Kurzbeschreibung Attribute Methoden

Klassendiagramm

Die Klasse bildet den Nachfolger von TRobot (R1D) ab, von dem er alle Attribute und Methoden geerbt hat.

Er zeigt erste Anzeichen von intelligentem Verhalten. Er prüft, ob das nächste Feld frei ist. Er kann bei der Welt anfragen, was vor ihm steht und in Kommunikation mit dem Hindernis treten, um zu entscheiden, wie er sich verhalten soll.
Kann Items aufladen und abladen, in das Lagerhaus bringen und abholen.
Bei Konflikten bleibt er stehen und zeigt eine Warnmeldung.

 

UNIT uKarel;
(* ******************************************************************** *)
(* K L A S S E : TKarel                                                 *)
(* -------------------------------------------------------------------- *)
(* Version     : 2.4                                                    *)
(* Autor       : (c) 2004, Siegfried Spolwig                            *)
(* Beschreibung: Die Klasse bildet den Roboter Karel der 2. Generation  *)
(*               ab.                                                    *)
(* Compiler    : Delphi 6                                               *)
(* Aenderungen : 0.9	  11-MAR-04                                     *)
(*               2.3.2  14-FEB-05   VorDemAbgrund                       *)  
(*               2.4    17-APR-05   Ein-, Auslagern, Ablegen erweitert  *)
(*                                  für Blackhole,GetLademenge umbenannt*)
(* ******************************************************************** *)

INTERFACE
// =======================================================================
uses
  uRobot,
  uStack;

type
  TKarel = class(TRobot)
   protected
    Container : TStack;  // zum Aufladen von Objekten
   public
    constructor Create;   override;
    procedure Init;
    procedure Vor;
    procedure Aufnehmen;
    procedure Ablegen;
    procedure Einlagern;
    procedure Auslagern;
    function  GetLadeMenge  : integer; // Anzahl der Items im Container
    function  VorDemAbgrund : boolean;

   private
    procedure Aktualisieren;
  end;

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

Oberklasse    : TRobot
Bezugsklassen : TZeit, TStack, 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;
            Container ist leer; max. Lademenge ist 24; macht keine Spur.


Vor
  Auftrag: Exemplar geht 1 Feld in der aktuellen Richtung vorwärts oder
           bleibt stehen, wenn Batterie leer oder das Feld besetzt ist.
           Position in das Gedaechtnis.
  vorher : Batterie ist geladen
  nachher: neue Pos ist angemeldet, wenn neue Pos erreicht;
           vorige Pos ist abgemeldet (NIL!!). Fehlermeldung, wenn Feld besetzt.

Aufnehmen
  Auftrag: Das Item von dem nächsten Feld in Laufrichtung in den Container
           stapeln.
  vorher : Container ist nicht voll.
  nachher: Item ist vom alten Feld  abgemeldet. Fehlermeldung bei vollem
           Container.

Ablegen
  Auftrag: Das oberste Item aus dem Container (LIFO) auf dem nächsten Feld
           in Laufrichtung absetzen.
  vorher : Container ist nicht leer und Feld ist frei.
  nachher: Item ist auf neuem Feld angemeldet. Fehlermeldung bei leerem Container.


Einlagern
  Auftrag: Item aus dem Container ins Lagerhaus abgeben
  vorher : Karel steht vor dem Lagerhaus und Container ist nicht leer, Lagerhaus
           ist nicht voll.
  nachher: Item ist dem Container entnommen und vom Lagerhaus angenommen.
           Fehlermeldung bei leerem Container.

Auslagern
  Auftrag: Item aus dem Lagerhaus nehmen und in den Container stapeln.
  vorher : Karel steht vor dem Lagerhaus, Container ist nicht voll und Lagerhaus
           ist nicht leer.
  nachher: done. Fehlermeldung bei vollem Container.


GetLadeMenge
  Anfrage: wie viele Objekte im Container sind
  vorher : -
  nachher: gibt Anzahl zurück


VorDemAbgrund
  Anfrage: ob die nächste Vor-Position OffLimits (außerhalb der Welt) ist.
  vorher : -
  nachher: true, wenn auf Aussenfeld und Richtung nach außerhalb der Welt zeigt

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

 


©  05. Oktober 2008    Siegfried Spolwig

page_top