Thema: FreePascal Kreuzungs Ampel Problem

Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Kreuzungs Ampel Problem

  Alt 11. Jun 2013, 19:14
Ich kann Dich schwer einschätzen, aber das ist Dir vermutlich noch zu hoch. Trotzdem mal eine kleine Klasse:
Delphi-Quellcode:
type
  TAmpel = class;
  TAmpelphase = (apRot, apGelbRot, apGruen, apGelb);
  TOnNextPhase = procedure(Sender: TAmpel; Phase: TAmpelphase) of object;

  TAmpel = class
  private
    FPhase: TAmpelphase;
    FOnNextPhase: TOnNextPhase;
  public
    procedure NextPhase;
    property OnNextPhase: TOnNextPhase read FOnNextPhase write FOnNextPhase;
  end;

...

procedure TAmpel.NextPhase;
begin
  case FPhase of
    apRot:
      FPhase := apGelbRot;
    apGelbRot:
      FPhase := apGruen;
    apGruen:
      FPhase := apGelb;
    apGelb:
      FPhase := apRot;
  end;
  if Assigned(FOnNextPhase) then
    FOnNextPhase(self, FPhase);
end;
Nun musst Du "nur noch" eine Instanz dieser Klasse erzeugen, dem Event eine kompatible Methode zuweisen und in einem Timer NextPhase aufrufen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat