delphi_ampel/Ampelu.pas
2018-02-11 17:32:47 +01:00

163 lines
3.5 KiB
ObjectPascal

unit Ampelu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ImgList, vars, newclasses, StdCtrls;
type
TfAmpel = class(TForm)
Streetimg: TImage;
FORAmpel: TImage;
FOGAmpel: TImage;
FURAmpel: TImage;
FUGAmpel: TImage;
ALGAmpel: TImage;
ALYAmpel: TImage;
ALRAmpel: TImage;
ARGAmpel: TImage;
ARYAmpel: TImage;
ARRAmpel: TImage;
FUKnopf: TButton;
FOKnopf: TButton;
tAutoTimer: TTimer;
AmpelTimer: TTimer;
tFussgaengerTimer: TTimer;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FOKnopfClick(Sender: TObject);
procedure FUKnopfClick(Sender: TObject);
procedure setProcessMessages;
procedure tAutoTimerTimer(Sender: TObject);
procedure AmpelTimerTimer(Sender: TObject);
procedure FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
procedure tFussgaengerTimerTimer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
AmpelSystem:TAmpelSystem;
AutosR,AutosL:array of TAuto;
FussgaengerO, FussgaengerU:array of TFussgaenger;
AmpelPlaetzeO, AmpelPlaetzeU: array of TAmpelPlatz;
AutoTimeri:integer;
AmpelTimeri:integer;
end;
var
fAmpel: TfAmpel;
implementation
{$R *.dfm}
uses functions;
procedure TfAmpel.setProcessMessages;
begin
Application.ProcessMessages;
end;
procedure TfAmpel.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ProgrammBeenden;
Application.Terminate;
end;
procedure TfAmpel.FormCreate(Sender: TObject);
begin
setAndCreateStandarts;
bindImagesToAmpelSystem;
setImagesToForm;
setAutosReadyToStart;
setFussgaengerReadyToStart;
setAmpelPlaetzeReadyToStart;
fAmpel.AmpelSystem.setFRot;
fAmpel.AmpelSystem.setAGruen;
end;
procedure TfAmpel.FOKnopfClick(Sender: TObject);
begin
FussgaengerKnopf;
end;
procedure TfAmpel.FUKnopfClick(Sender: TObject);
begin
FussgaengerKnopf;
end;
procedure TfAmpel.tAutoTimerTimer(Sender: TObject);
begin
AutoTimeri:=fAmpel.AutoTimeri+1;
AutoTimerR;
AutoTimerL;
end;
procedure TfAmpel.AmpelTimerTimer(Sender: TObject);
var i:integer;
begin
AmpelTimeri:=AmpelTimeri+1;
//FussgaengertimerO;
{ for i:=0 to AnzahlDerFussgaengerO-1 do
begin
if (FAmpel.AmpelSystem.FUAmpel.State) and (fAmpel.FussgaengerO[i].active=true) then
begin
fAmpel.FussgaengerO[i].Image.Top:=fAmpel.FussgaengerO[i].Image.Top+10;
if fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz<>-1 then
begin
fAmpel.AmpelPlaetzeO[fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz].Besetzt:=false;
fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz:=-1;
end;
end;
if FAmpel.FussgaengerO[i].Image.top>FAmpel.Height+100 then fAmpel.FussgaengerO[i].Active:=false;
end;}
if AmpelTimeri=30 then AmpelSystem.setAGelb;
if AmpelTimeri=60 then AmpelSystem.setARot;
if AmpelTimeri=100 then AmpelSystem.setFGruen;
if AmpelTimeri=300 then AmpelSystem.setFRot;
if AmpelTimeri=340 then AmpelSystem.setARotGelb;
if AmpelTimeri=380 then AmpelSystem.setAGruen;
if AmpelTimeri>380 then
begin
AmpelTimeri:=0;
fAmpel.AmpelSystem.Changing:=false;
AmpelTimer.Enabled:=false;
end;
end;
procedure TfAmpel.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
resize:=false;
end;
procedure TfAmpel.tFussgaengerTimerTimer(Sender: TObject);
begin
FussgaengertimerO;
end;
end.