initial commit

This commit is contained in:
Ulf Gebhardt 2018-02-11 17:32:47 +01:00
parent 025da2f685
commit 1b2e331439
55 changed files with 17798 additions and 0 deletions

35
Ampel.cfg Normal file
View File

@ -0,0 +1,35 @@
-$A8
-$B-
-$C+
-$D+
-$E-
-$F-
-$G+
-$H+
-$I+
-$J-
-$K-
-$L+
-$M-
-$N+
-$O+
-$P+
-$Q-
-$R-
-$S-
-$T-
-$U-
-$V+
-$W-
-$X+
-$YD
-$Z1
-cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+
-W+
-M
-$M16384,1048576
-K$00400000
-LE"c:\programme\delphi\Projects\Bpl"
-LN"c:\programme\delphi\Projects\Bpl"

82
Ampel.dof Normal file
View File

@ -0,0 +1,82 @@
[FileVersion]
Version=6.0
[Compiler]
A=8
B=0
C=1
D=1
E=0
F=0
G=1
H=1
I=1
J=0
K=0
L=1
M=0
N=1
O=1
P=1
Q=0
R=0
S=0
T=0
U=0
V=1
W=0
X=1
Y=1
Z=1
ShowHints=1
ShowWarnings=1
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
[Linker]
MapFile=0
OutputObjs=0
ConsoleApp=1
DebugInfo=0
RemoteSymbols=0
MinStackSize=16384
MaxStackSize=1048576
ImageBase=4194304
ExeDescription=
[Directories]
OutputDir=
UnitOutputDir=
PackageDLLOutputDir=
PackageDCPOutputDir=
SearchPath=
Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;fileinfo;gif;Indy60;semipanel;Zip;Simons;ztreeviewpack;trayico;Transbutton
Conditionals=
DebugSourceDirs=
UsePackages=0
[Parameters]
RunParams=
HostApplication=
Launcher=
UseLauncher=0
DebugCWD=
[Version Info]
IncludeVerInfo=1
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1031
CodePage=1252
[Version Info Keys]
CompanyName=Yeminy
FileDescription=
FileVersion=0.005
InternalName=
LegalCopyright=(c) by Yeminy
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=0.005

32
Ampel.dpr Normal file
View File

@ -0,0 +1,32 @@
program Ampel;
uses
Forms,
sysutils,
dialogs,
Splashu in 'Splashu.pas' {fSplash},
Optionsu in 'Optionsu.pas' {fOptions},
Ampelu in 'Ampelu.pas' {fAmpel},
vars in 'vars.pas',
functions in 'functions.pas',
newclasses in 'newclasses.pas';
{$R *.res}
begin
Application.Initialize;
//Alle Bilder vorhanden?
if (fileexists(ImgFAGruen)) and (fileexists(ImgFARot)) and (fileexists(ImgStreet)) and (fileexists(ImgAAGruen)) and (fileexists(ImgAAGelb)) and (fileexists(ImgAARot)) then else
begin
showmessage('Es sind nicht alle nötigen Bilder vorhanden! -> Programm wird geschlossen!');
Application.Terminate;
exit;
end;
Application.CreateForm(TfSplash, fSplash);
Application.CreateForm(TfOptions, fOptions);
Application.CreateForm(TfAmpel, fAmpel);
fSplash.ShowModal;
{Application.Run;}
end.

BIN
Ampel.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
Ampel.res Normal file

Binary file not shown.

160
Ampelu.dfm Normal file
View File

@ -0,0 +1,160 @@
object fAmpel: TfAmpel
Left = 164
Top = 133
HorzScrollBar.Visible = False
VertScrollBar.Visible = False
AlphaBlend = True
AutoScroll = False
BorderIcons = [biSystemMenu, biMinimize]
Caption = 'Ampel'
ClientHeight = 723
ClientWidth = 1063
Color = clGrayText
TransparentColor = True
TransparentColorValue = clFuchsia
Ctl3D = False
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnCanResize = FormCanResize
OnClose = FormClose
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Streetimg: TImage
Left = 0
Top = 0
Width = 1063
Height = 723
Align = alClient
end
object FORAmpel: TImage
Left = 397
Top = 26
Width = 21
Height = 27
Transparent = True
end
object FOGAmpel: TImage
Left = 397
Top = 52
Width = 21
Height = 27
Transparent = True
end
object FURAmpel: TImage
Left = 645
Top = 642
Width = 21
Height = 27
Transparent = True
end
object FUGAmpel: TImage
Left = 645
Top = 668
Width = 21
Height = 27
Transparent = True
end
object ALGAmpel: TImage
Left = 8
Top = 680
Width = 32
Height = 32
Stretch = True
Transparent = True
end
object ALYAmpel: TImage
Left = 44
Top = 680
Width = 32
Height = 32
Stretch = True
Transparent = True
end
object ALRAmpel: TImage
Left = 80
Top = 680
Width = 32
Height = 32
Stretch = True
Transparent = True
end
object ARGAmpel: TImage
Left = 1024
Top = 16
Width = 32
Height = 32
Stretch = True
Transparent = True
end
object ARYAmpel: TImage
Left = 988
Top = 16
Width = 32
Height = 32
Stretch = True
Transparent = True
end
object ARRAmpel: TImage
Left = 952
Top = 16
Width = 32
Height = 32
Stretch = True
Transparent = True
end
object FUKnopf: TButton
Left = 496
Top = 656
Width = 75
Height = 25
Cursor = crHandPoint
Hint = 'Fu'#223'g'#228'nger Knopf dr'#252'cken'
Caption = 'Fu'#223'g'#228'nger'
ParentShowHint = False
ShowHint = True
TabOrder = 0
Visible = False
OnClick = FUKnopfClick
end
object FOKnopf: TButton
Left = 496
Top = 40
Width = 75
Height = 25
Cursor = crHandPoint
Hint = 'Fu'#223'g'#228'nger Knopf dr'#252'cken'
Caption = 'Fu'#223'g'#228'nger'
ParentShowHint = False
ShowHint = True
TabOrder = 1
Visible = False
OnClick = FOKnopfClick
end
object tAutoTimer: TTimer
Enabled = False
Interval = 1
OnTimer = tAutoTimerTimer
Left = 112
Top = 120
end
object AmpelTimer: TTimer
Enabled = False
Interval = 1
OnTimer = AmpelTimerTimer
Left = 200
Top = 112
end
object tFussgaengerTimer: TTimer
Enabled = False
Interval = 1
OnTimer = tFussgaengerTimerTimer
Left = 280
Top = 136
end
end

162
Ampelu.pas Normal file
View File

@ -0,0 +1,162 @@
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.

BIN
Images/AAGelb.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
Images/AAGruen.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
Images/AARot.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
Images/AutoBlauL.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
Images/AutoBlauR.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
Images/AutoGelbL.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
Images/AutoGelbR.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
Images/AutoGruenL.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
Images/AutoGruenR.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
Images/AutoRotL.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
Images/AutoRotR.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
Images/FAGruen.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
Images/FARot.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
Images/Street.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

2196
Optionsu.dfm Normal file

File diff suppressed because it is too large Load Diff

81
Optionsu.pas Normal file
View File

@ -0,0 +1,81 @@
unit Optionsu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg;
type
TfOptions = class(TForm)
GroupBox1: TGroupBox;
CheckBox3: TCheckBox;
CheckBox2: TCheckBox;
CheckBox1: TCheckBox;
Button1: TButton;
Button2: TButton;
Werbung: TImage;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure CheckBox3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure CheckBox2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fOptions: TfOptions;
implementation
{$R *.dfm}
uses functions;
procedure TfOptions.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate;
end;
procedure TfOptions.Button2Click(Sender: TObject);
begin
ProgrammBeenden;
Application.Terminate;
end;
procedure TfOptions.CheckBox3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if checkbox3.Checked then checkbox2.Checked:=false else checkbox2.Checked:=true;
end;
procedure TfOptions.CheckBox2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if checkbox2.Checked then checkbox3.Checked:=false else checkbox3.Checked:=true;
end;
procedure TfOptions.Button1Click(Sender: TObject);
var tempb:boolean;
begin
if checkbox2.Checked then tempb:=true else tempb:=false;
setOptions(checkbox1.Checked,tempb);
end;
end.

BIN
Org Bilder/68622_normal.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

BIN
Org Bilder/AAGelb.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 999 B

BIN
Org Bilder/AAGelb.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
Org Bilder/AAGruen.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Org Bilder/AAGruen.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
Org Bilder/AARot.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Org Bilder/AARot.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
Org Bilder/AMGruen.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

BIN
Org Bilder/AMRot.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
Org Bilder/Ampel_2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
Org Bilder/Ampel_x.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
Org Bilder/Auto.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
Org Bilder/Auto.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
Org Bilder/Ladescreen.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
Org Bilder/LeereAmpel.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
Org Bilder/Rylon2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
Org Bilder/Werbung.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
Org Bilder/online.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
Org Bilder/tn_Ampel_A.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
Org Bilder/tn_Ampel_B.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
Org Bilder/tn_Ampel_C.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

14149
Splashu.dfm Normal file

File diff suppressed because it is too large Load Diff

40
Splashu.pas Normal file
View File

@ -0,0 +1,40 @@
unit Splashu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TfSplash = class(TForm)
Image1: TImage;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fSplash: TfSplash;
implementation
uses Optionsu,functions;
{$R *.dfm}
procedure TfSplash.FormActivate(Sender: TObject);
begin
Application.ProcessMessages;
sleep(3000);
fOptions.show;
fSplash.Hide;
end;
end.

590
functions.pas Normal file
View File

@ -0,0 +1,590 @@
unit functions;
interface
uses ampelu, splashu, optionsu, newclasses, vars, Windows, extctrls,dialogs,sysutils;
procedure setOptions(Autos,Fussgaenger:boolean);
procedure setAndCreateStandarts;
procedure bindImagesToAmpelSystem;
procedure setImagesToForm;
procedure FussgaengerKnopf;
procedure ProgrammBeenden;
procedure setAutosReadyToStart;
procedure stopAutoTimer;
procedure StartAutoTimer;
procedure AutoTimerR;
procedure AutoTimerL;
procedure setFussgaengerReadyToStart;
procedure FussgaengertimerO;
procedure setAmpelPlaetzeReadyToStart;
implementation
procedure FussgaengertimerO;
var i,j:integer;
begin
for i:=0 to AnzahlDerFussgaengerO-1 do
begin
if (random(3)=0) and (fAmpel.FussgaengerO[i].Active=false) then
begin
j:=0;
repeat
if (fAmpel.FussgaengerO[i].Active=false) and (fAmpel.AmpelPlaetzeO[j].Besetzt=false) then
begin
fAmpel.AmpelPlaetzeO[j].Besetzt:=true;
fAmpel.FussgaengerO[i].Active:=true;
fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz:=j;
fAmpel.FussgaengerO[i].Image.Top:=-40;
fAmpel.FussgaengerO[i].Image.Left:=random(fAmpel.Width);
fAmpel.FussgaengerO[i].momSpeedx:=(fAmpel.AmpelPlaetzeO[j].X-fAmpel.FussgaengerO[i].Image.Left) div fAmpel.FussgaengerO[i].Speed;
fAmpel.FussgaengerO[i].momSpeedy:=(fAmpel.AmpelPlaetzeO[j].Y-fAmpel.FussgaengerO[i].Image.Top) div fAmpel.FussgaengerO[i].Speed;
end;
inc(j);
until j>=AnzahlDerAmpelPlaetzeO;
end;
if (fAmpel.FussgaengerO[i].Active=true) and (fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz<>-1) then
begin
if (fAmpel.FussgaengerO[i].Image.left<fAmpel.AmpelPlaetzeO[fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz].X-5) or (fAmpel.FussgaengerO[i].Image.left>fAmpel.AmpelPlaetzeO[fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz].X+5) then
begin
if (fAmpel.FussgaengerO[i].Image.Top<fAmpel.AmpelPlaetzeO[fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz].Y-5) or (fAmpel.FussgaengerO[i].Image.Top>fAmpel.AmpelPlaetzeO[fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz].Y+5) then
begin
fAmpel.FussgaengerO[i].Image.Top:=fAmpel.FussgaengerO[i].Image.Top+fAmpel.FussgaengerO[i].momSpeedy;
fAmpel.FussgaengerO[i].Image.Left:=fAmpel.FussgaengerO[i].Image.Left+fAmpel.FussgaengerO[i].momSpeedx;
end else
begin
if fAmpel.AmpelSystem.FUAmpel.State=false then
begin
fAmpel.FussgaengerO[i].Image.Left:=fAmpel.AmpelPlaetzeO[fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz].X;
fAmpel.FussgaengerO[i].Image.Top:=fAmpel.AmpelPlaetzeO[fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz].Y;
if fAmpel.AmpelSystem.Changing=false then
begin
fussgaengerknopf;
fAmpel.FussgaengerO[i].AufStrasse:=true;
end
end else
begin
fAmpel.FussgaengerO[i].Image.Top:=fAmpel.FussgaengerO[i].Image.Top+10;
end;
end;
end;
end;
if (FAmpel.AmpelSystem.FUAmpel.State) and (fAmpel.FussgaengerO[i].active=true) and (fAmpel.FussgaengerO[i].AufStrasse=true) then
begin
fAmpel.FussgaengerO[i].Image.Top:=fAmpel.FussgaengerO[i].Image.Top+fAmpel.FussgaengerO[i].Speed div 5+3;
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) and (fAmpel.FussgaengerO[i].active=true) and (fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz=-1) then fAmpel.FussgaengerO[i].Active:=false else
begin
fAmpel.FussgaengerO[i].Active:=false;
fAmpel.FussgaengerO[i].AufStrasse:=false;
end;
end;
end;
procedure StopAutoTimer;
begin
fAmpel.tAutoTimer.Enabled:=false;
end;
procedure StartAutoTimer;
begin
fAmpel.tAutoTimer.Enabled:=true;
end;
procedure ProgrammBeenden;
var i:integer;
begin
stopAutoTimer;
fAmpel.AmpelSystem.Free;
for i:=0 to AnzahlDerAutosR-1 do fAmpel.AutosR[i].Free;
for i:=0 to AnzahlDerAutosL-1 do fAmpel.AutosL[i].Free;
for i:=0 to AnzahlDerFussgaengerO-1 do fAmpel.FussgaengerO[i].Free;
for i:=0 to AnzahlDerFussgaengerU-1 do fAmpel.FussgaengerU[i].Free;
for i:=0 to AnzahlDerAmpelPlaetzeO-1 do fAmpel.AmpelPlaetzeO[i].Free;
end;
procedure setAndCreateStandarts;
var i:integer;
begin
randomize;
fAmpel.AutoTimeri:=0;
fAmpel.AmpelTimeri:=0;
fAmpel.AmpelSystem:=TAmpelsystem.create;
fAmpel.DoubleBuffered:=true;
setlength(fAmpel.AutosR,AnzahlDerAutosR);
for i:=0 to AnzahlDerAutosR-1 do fAmpel.AutosR[i]:=TAuto.Create;
setlength(fAmpel.AutosL,AnzahlDerAutosL);
for i:=0 to AnzahlDerAutosL-1 do fAmpel.AutosL[i]:=TAuto.Create;
setlength(fAmpel.FussgaengerO,AnzahlDerFussgaengerO);
for i:=0 to AnzahlDerFussgaengerO-1 do fAmpel.FussgaengerO[i]:=TFussgaenger.create;
setlength(fAmpel.FussgaengerU,AnzahlDerFussgaengerU);
for i:=0 to AnzahlDerFussgaengerU-1 do fAmpel.FussgaengerU[i]:=TFussgaenger.create;
setlength(fAmpel.AmpelPlaetzeO,AnzahlDerAmpelPlaetzeO);
for i:=0 to AnzahlDerAmpelPlaetzeO-1 do fAmpel.AmpelPlaetzeO[i]:=TAmpelPlatz.create;
end;
procedure AutoTimerR;
var i,j:integer;
tempb:boolean;
begin
for i:=0 to AnzahlDerAutosR-1 do
begin
{ if (fAmpel.AutosR[i].momSpeed<>0) and (fAmpel.AutosR[i].momSpeed<>fAmpel.AutosR[i].Speed) and (fAmpel.AutosR[i].Fahrbahn=1) then
begin
fAmpel.AutosR[i].BlinkerL:=true;
fAmpel.AutosR[i].BlinkerR:=false;
//fAmpel.AutosR[i].Image.picture.loadfromfiel(...);
end;}
if fAmpel.Autotimeri>=i*50 then fAmpel.AutosR[i].Active:=true;
if (fAmpel.AutosR[i].Image.Left<=-1700) and (fAmpel.AutosR[i].Fahrbahn=2) then fAmpel.AutosR[i].Image.Left:=fAmpel.Width+1500+random(500);
if (fAmpel.AutosR[i].Image.Left<=-1000) and (fAmpel.AutosR[i].Fahrbahn=1) then fAmpel.AutosR[i].Image.Left:=fAmpel.Width+200+random(1200);
if (fAmpel.AmpelSystem.ARAmpel.State>0) and (fAmpel.AutosR[i].Image.left>=680) and (fAmpel.AutosR[i].Image.left<=700) then fAmpel.AutosR[i].momSpeed:=0;
if (fAmpel.AmpelSystem.ARAmpel.State=0) and (fAmpel.AutosR[i].momSpeed=0) then fAmpel.AutosR[i].momSpeed:=fAmpel.AutosR[i].speed;
if fAmpel.AutosR[i].momSpeed<>0 then
begin
if (fAmpel.AutosR[i].Image.left<=fAmpel.width+100) and (fAmpel.AutosR[i].image.left>=-300) then
begin
for j:=0 to AnzahlDerAutosR-1 do
begin
if (fAmpel.AutosR[i].Image.left<=fAmpel.AutosR[j].Image.Left+fAmpel.AutosR[j].Image.Width+10) and (fAmpel.AutosR[i].Image.left>=fAmpel.AutosR[j].Image.Left-10) and (i<>j) then
begin
if (fAmpel.AutosR[j].Fahrbahn=fAmpel.AutosR[i].Fahrbahn){ or (fAmpel.AutosR[j].Fahrbahn=3) }then
begin
fAmpel.AutosR[i].Speed:=fAmpel.AutosR[j].Speed;
if (fAmpel.AutosR[i].image.Left<=fAmpel.AutosR[j].image.Left+fAmpel.AutosR[j].image.Width) and (fAmpel.AutosR[i].image.Left>=fAmpel.AutosR[j].image.Left) then fAmpel.AutosR[i].image.Left:=fAmpel.AutosR[j].image.Left+fAmpel.AutosR[j].image.Width+10;
end;
end else
begin
if (fAmpel.AutosR[j].Fahrbahn=fAmpel.AutosR[i].Fahrbahn) or (fAmpel.AutosR[j].Fahrbahn=3) then
begin
if fAmpel.AutosR[i].Image.left>=fAmpel.AutosR[j].Image.Left+fAmpel.AutosR[j].Image.Width+10+fAmpel.AutosR[i].Speed then fAmpel.AutosR[i].momSpeed:=fAmpel.AutosR[i].Speed;
end;
end;
end;
end else fAmpel.AutosR[i].momSpeed:=fAmpel.AutosR[i].Speed;
end else
begin
for j:=0 to AnzahlDerAutosR-1 do
begin
if (fAmpel.AutosR[j].Image.left<=fAmpel.AutosR[i].Image.Left+fAmpel.AutosR[i].Image.Width+10) and (fAmpel.AutosR[j].Image.left>=fAmpel.AutosR[i].Image.Left) and (fAmpel.AutosR[j].Fahrbahn=fAmpel.AutosR[i].Fahrbahn) and (i<>j) then fAmpel.AutosR[j].momSpeed:=0;
end;
end;
{ tempb:=false;
for j:=0 to AnzahlDerAutosR-1 do
begin
if (j<>i) then
begin
if (fAmpel.AutosR[i].BlinkerL) then
begin
if (fAmpel.AutosR[j].Fahrbahn=2) then
begin
if(fAmpel.AutosR[i].Image.Left>fAmpel.AutosR[j].Image.Left+fAmpel.AutosR[j].Image.width*1.5) then
begin
if(fAmpel.AutosR[i].Image.Left+fAmpel.AutosR[i].Image.Width<fAmpel.AutosR[j].Image.Left) then tempb:=true else tempb:=false;
end else tempb:=false;
end else tempb:=true;
end;
end;
end; }
{for j:=0 to AnzahlDerAutosR-1 do
begin
if (j<>i) then
begin
if (fAmpel.AutosR[i].BlinkerR) then
begin
if (fAmpel.AutosR[j].Fahrbahn=1) then
begin
if(fAmpel.AutosR[i].Image.Left>fAmpel.AutosR[j].Image.Left+fAmpel.AutosR[j].Image.width*1.5) then
begin
if(fAmpel.AutosR[i].Image.Left+fAmpel.AutosR[i].Image.Width<fAmpel.AutosR[j].Image.Left) then tempb:=true else tempb:=false;
end else tempb:=false;
end else tempb:=true;
end;
end;
end;}
{ if tempb then
begin
fAmpel.AutosR[i].fahrbahn:=3;
fAmpel.AutosR[i].momSpeed:=fAmpel.AutosR[i].Speed+7;
end;}
{ if (fAmpel.AutosR[i].image.Top>=FahrbahnR2) and (fAmpel.AutosR[i].Fahrbahn=3) and (fAmpel.AutosR[i].BlinkerL) then
begin
fAmpel.AutosR[i].Fahrbahn:=2;
fAmpel.AutosR[i].momSpeed:=fAmpel.AutosR[i].Speed+7;
fAmpel.AutosR[i].Image.Top:=FahrbahnR2;
fAmpel.AutosR[i].BlinkerR:=true;
fAmpel.AutosR[i].BlinkerL:=false;
end;}
{ if (fAmpel.AutosR[i].image.Top<=FahrbahnR1) and (fAmpel.AutosR[i].Fahrbahn=3) and (fAmpel.AutosR[i].BlinkerR) then
begin
fAmpel.AutosR[i].Fahrbahn:=1;
fAmpel.AutosR[i].momSpeed:=fAmpel.AutosR[i].Speed;
fAmpel.AutosR[i].Image.Top:=FahrbahnR1;
fAmpel.AutosR[i].BlinkerR:=false;
fAmpel.AutosR[i].BlinkerL:=false;
end;}
{ if fAmpel.AutosR[i].Fahrbahn=3 then
begin
if fAmpel.AutosR[i].BlinkerL then fAmpel.AutosR[i].image.Top:=fAmpel.AutosR[i].image.Top+7;
if fAmpel.AutosR[i].BlinkerR then fAmpel.AutosR[i].image.Top:=fAmpel.AutosR[i].image.Top-5;
end;}
if fAmpel.AutosR[i].Active then fAmpel.AutosR[i].Image.Left:=fAmpel.AutosR[i].Image.Left-fAmpel.AutosR[i].momSpeed;
end;
end;
procedure AutoTimerL;
var i,j:integer;
tempb:boolean;
begin
for i:=0 to AnzahlDerAutosL-1 do
begin
{ if (fAmpel.AutosL[i].momSpeed<>0) and (fAmpel.AutosL[i].momSpeed<>fAmpel.AutosL[i].Speed) and (fAmpel.AutosL[i].Fahrbahn=1) then
begin
fAmpel.AutosL[i].BlinkerL:=true;
fAmpel.AutosL[i].BlinkerR:=false;
//fAmpel.AutosL[i].Image.picture.loadfromfiel(...);
end;}
if fAmpel.Autotimeri>=i*50 then fAmpel.AutosL[i].Active:=true;
if (fAmpel.AutosL[i].Image.Left>=FAmpel.Width+1500) and (fAmpel.AutosL[i].Fahrbahn=2) then fAmpel.AutosL[i].Image.Left:=-1700-random(500)-fAmpel.AutosL[i].Image.Width;
if (fAmpel.AutosL[i].Image.Left>=FAmpel.Width+200) and (fAmpel.AutosL[i].Fahrbahn=1) then fAmpel.AutosL[i].Image.Left:=-1000-random(1200)-fAmpel.AutosL[i].Image.Width;
if (fAmpel.AmpelSystem.ALAmpel.State>0) and (fAmpel.AutosL[i].Image.left>=148) and (fAmpel.AutosL[i].Image.left<=158) then fAmpel.AutosL[i].momSpeed:=0;
if (fAmpel.AmpelSystem.ALAmpel.State=0) and (fAmpel.AutosL[i].momSpeed=0) then fAmpel.AutosL[i].momSpeed:=fAmpel.AutosL[i].speed;
if fAmpel.AutosL[i].momSpeed<>0 then
begin
if (fAmpel.AutosL[i].Image.left<=fAmpel.width+100) and (fAmpel.AutosL[i].image.left>=-300) then
begin
for j:=0 to AnzahlDerAutosL-1 do
begin
if (fAmpel.AutosL[i].Image.left+fAmpel.AutosL[i].Image.Width+10>=fAmpel.AutosL[j].Image.Left) and (fAmpel.AutosL[i].Image.left<=fAmpel.AutosL[j].Image.Left+10) and (i<>j) then
begin
if (fAmpel.AutosL[j].Fahrbahn=fAmpel.AutosL[i].Fahrbahn){ or (fAmpel.AutosL[j].Fahrbahn=3) }then
begin
fAmpel.AutosL[i].Speed:=fAmpel.AutosL[j].Speed;
if (fAmpel.AutosL[i].image.Left+fAmpel.AutosL[i].image.Width>=fAmpel.AutosL[j].image.Left) and (fAmpel.AutosL[i].image.Left<=fAmpel.AutosL[j].image.Left) then fAmpel.AutosL[i].image.Left:=fAmpel.AutosL[j].image.Left-fAmpel.AutosL[i].image.Width-10;
end;
end else
begin
if (fAmpel.AutosL[j].Fahrbahn=fAmpel.AutosL[i].Fahrbahn) or (fAmpel.AutosL[j].Fahrbahn=3) then
begin
if fAmpel.AutosL[i].Image.left+fAmpel.AutosL[i].Image.Width+10+fAmpel.AutosL[i].Speed<=fAmpel.AutosL[j].Image.Left then fAmpel.AutosL[i].momSpeed:=fAmpel.AutosL[i].Speed;
end;
end;
end;
end else fAmpel.AutosL[i].momSpeed:=fAmpel.AutosL[i].Speed;
end else
begin
for j:=0 to AnzahlDerAutosR-1 do
begin
if (fAmpel.AutosL[j].Image.left+fAmpel.AutosL[i].Image.Width+10>=fAmpel.AutosL[i].Image.Left) and (fAmpel.AutosL[j].Image.left<=fAmpel.AutosL[i].Image.Left) and (fAmpel.AutosL[j].Fahrbahn=fAmpel.AutosL[i].Fahrbahn) and (i<>j) then fAmpel.AutosL[j].momSpeed:=0;
end;
end;
{ tempb:=false;
for j:=0 to AnzahlDerAutosR-1 do
begin
if (j<>i) then
begin
if (fAmpel.AutosL[i].BlinkerL) then
begin
if (fAmpel.AutosL[j].Fahrbahn=2) then
begin
if(fAmpel.AutosL[i].Image.Left>fAmpel.AutosL[j].Image.Left+fAmpel.AutosL[j].Image.width*1.5) then
begin
if(fAmpel.AutosL[i].Image.Left+fAmpel.AutosL[i].Image.Width<fAmpel.AutosL[j].Image.Left) then tempb:=true else tempb:=false;
end else tempb:=false;
end else tempb:=true;
end;
end;
end; }
{for j:=0 to AnzahlDerAutosR-1 do
begin
if (j<>i) then
begin
if (fAmpel.AutosL[i].BlinkerR) then
begin
if (fAmpel.AutosL[j].Fahrbahn=1) then
begin
if(fAmpel.AutosL[i].Image.Left>fAmpel.AutosL[j].Image.Left+fAmpel.AutosL[j].Image.width*1.5) then
begin
if(fAmpel.AutosL[i].Image.Left+fAmpel.AutosL[i].Image.Width<fAmpel.AutosL[j].Image.Left) then tempb:=true else tempb:=false;
end else tempb:=false;
end else tempb:=true;
end;
end;
end;}
{ if tempb then
begin
fAmpel.AutosL[i].fahrbahn:=3;
fAmpel.AutosL[i].momSpeed:=fAmpel.AutosL[i].Speed+7;
end;}
{ if (fAmpel.AutosL[i].image.Top>=FahrbahnR2) and (fAmpel.AutosL[i].Fahrbahn=3) and (fAmpel.AutosL[i].BlinkerL) then
begin
fAmpel.AutosL[i].Fahrbahn:=2;
fAmpel.AutosL[i].momSpeed:=fAmpel.AutosL[i].Speed+7;
fAmpel.AutosL[i].Image.Top:=FahrbahnR2;
fAmpel.AutosL[i].BlinkerR:=true;
fAmpel.AutosL[i].BlinkerL:=false;
end;}
{ if (fAmpel.AutosL[i].image.Top<=FahrbahnR1) and (fAmpel.AutosL[i].Fahrbahn=3) and (fAmpel.AutosL[i].BlinkerR) then
begin
fAmpel.AutosL[i].Fahrbahn:=1;
fAmpel.AutosL[i].momSpeed:=fAmpel.AutosL[i].Speed;
fAmpel.AutosL[i].Image.Top:=FahrbahnR1;
fAmpel.AutosL[i].BlinkerR:=false;
fAmpel.AutosL[i].BlinkerL:=false;
end;}
{ if fAmpel.AutosL[i].Fahrbahn=3 then
begin
if fAmpel.AutosL[i].BlinkerL then fAmpel.AutosL[i].image.Top:=fAmpel.AutosL[i].image.Top+7;
if fAmpel.AutosL[i].BlinkerR then fAmpel.AutosL[i].image.Top:=fAmpel.AutosL[i].image.Top-5;
end;}
if fAmpel.AutosL[i].Active then fAmpel.AutosL[i].Image.Left:=fAmpel.AutosL[i].Image.Left+fAmpel.AutosL[i].momSpeed;
end;
end;
procedure setAmpelPlaetzeReadyToStart;
var i:integer;
begin
for i:=0 to AnzahlDerAmpelPlaetzeO-1 do
begin
fAmpel.AmpelPlaetzeO[i].Y:=AmpelPlatzOY;
fAmpel.AmpelPlaetzeO[i].X:=AmpelPlatzOX+i*20;
fAmpel.AmpelPlaetzeO[i].Width:=10;
fAmpel.AmpelPlaetzeO[i].Height:=10;
fAmpel.AmpelPlaetzeO[i].Besetzt:=false;
end;
end;
procedure setFussgaengerReadyToStart;
var i,tempi:integer;
begin
for i:=0 to AnzahlDerFussgaengerO-1 do
begin
fAmpel.FussgaengerO[i].Speed:=random(40)+1;
fAmpel.FussgaengerO[i].momSpeedx:=fAmpel.FussgaengerO[i].Speed;
fAmpel.FussgaengerO[i].momSpeedy:=fAmpel.FussgaengerO[i].Speed;
fAmpel.FussgaengerO[i].Active:=false;
fAmpel.FussgaengerO[i].Image.Parent:=fAmpel;
fAmpel.FussgaengerO[i].Image.Top:=0;
fAmpel.FussgaengerO[i].Image.Left:=-300;
fAmpel.FussgaengerO[i].Image.Width:=20;
fAmpel.FussgaengerO[i].Image.Height:=20;
fAmpel.FussgaengerO[i].Image.Stretch:=true;
fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz:=-1;
fAmpel.FussgaengerO[i].Image.Transparent:=true;
fAmpel.FussgaengerO[i].AufStrasse:=false;
tempi:=random(4);
if tempi=0 then fAmpel.FussgaengerO[i].Image.Picture.LoadFromFile(ImgFussgaengerO1);
if tempi=1 then fAmpel.FussgaengerO[i].Image.Picture.LoadFromFile(ImgFussgaengerO2);
if tempi=2 then fAmpel.FussgaengerO[i].Image.Picture.LoadFromFile(ImgFussgaengerO3);
if tempi=3 then fAmpel.FussgaengerO[i].Image.Picture.LoadFromFile(ImgFussgaengerO4);
end;
for i:=0 to AnzahlDerFussgaengerU-1 do
begin
fAmpel.FussgaengerU[i].Speed:=random(40)+1;
fAmpel.FussgaengerU[i].momSpeedx:=fAmpel.FussgaengerU[i].Speed;
fAmpel.FussgaengerU[i].momSpeedy:=fAmpel.FussgaengerU[i].Speed;
fAmpel.FussgaengerU[i].Active:=false;
fAmpel.FussgaengerU[i].Image.Parent:=fAmpel;
fAmpel.FussgaengerU[i].Image.Top:=0;
fAmpel.FussgaengerU[i].Image.Left:=-300;
fAmpel.FussgaengerU[i].Image.Width:=20;
fAmpel.FussgaengerU[i].Image.Height:=20;
fAmpel.FussgaengerU[i].Image.Stretch:=true;
fAmpel.FussgaengerU[i].AngesteuerterAmpelPlatz:=-1;
fAmpel.FussgaengerU[i].Image.Transparent:=true;
fAmpel.FussgaengerU[i].AufStrasse:=false;
tempi:=random(4);
if tempi=0 then fAmpel.FussgaengerU[i].Image.Picture.LoadFromFile(ImgFussgaengerU1);
if tempi=1 then fAmpel.FussgaengerU[i].Image.Picture.LoadFromFile(ImgFussgaengerU2);
if tempi=2 then fAmpel.FussgaengerU[i].Image.Picture.LoadFromFile(ImgFussgaengerU3);
if tempi=3 then fAmpel.FussgaengerU[i].Image.Picture.LoadFromFile(ImgFussgaengerU4);
end;
end;
procedure setAutosReadyToStart;
var i,tempi:integer;
begin
for i:=0 to AnzahlDerAutosR-1 do
begin
fAmpel.AutosR[i].Image:=TImage.create(fAmpel);
fAmpel.AutosR[i].Speed:=4+random(8);
fAmpel.AutosR[i].momSpeed:=fAmpel.AutosR[i].Speed;
fAmpel.AutosR[i].BlinkerL:=false;
fAmpel.AutosR[i].BlinkerR:=false;
fAmpel.AutosR[i].active:=false;
if fAmpel.AutosR[i].speed>7 then fAmpel.AutosR[i].Fahrbahn:=2 else fAmpel.AutosR[i].Fahrbahn:=1;
tempi:=random(4);
if tempi=0 then fAmpel.AutosR[i].Image.Picture.LoadFromFile(ImgAutoRotR);
if tempi=1 then fAmpel.AutosR[i].Image.Picture.LoadFromFile(ImgAutoGelbR);
if tempi=2 then fAmpel.AutosR[i].Image.Picture.LoadFromFile(ImgAutoBlauR);
if tempi=3 then fAmpel.AutosR[i].Image.Picture.LoadFromFile(ImgAutoGruenR);
fAmpel.AutosR[i].Image.Width:=fAmpel.AutosR[i].Image.Picture.Width;
fAmpel.AutosR[i].Image.Parent:=fAmpel;
fAmpel.AutosR[i].Image.Transparent:=true;
fAmpel.AutosR[i].Image.Left:=fAmpel.Width+1000;
if fAmpel.AutosR[i].Fahrbahn=1 then fAmpel.AutosR[i].Image.Top:=FahrbahnR1 else fAmpel.AutosR[i].Image.Top:=FahrbahnR2;
end;
for i:=0 to AnzahlDerAutosL-1 do
begin
fAmpel.AutosL[i].Image:=TImage.create(fAmpel);
fAmpel.AutosL[i].Speed:=4+random(8);
fAmpel.AutosL[i].momSpeed:=fAmpel.AutosL[i].Speed;
fAmpel.AutosL[i].BlinkerL:=false;
fAmpel.AutosL[i].BlinkerR:=false;
fAmpel.AutosL[i].active:=false;
if fAmpel.AutosL[i].speed>7 then fAmpel.AutosL[i].Fahrbahn:=2 else fAmpel.AutosL[i].Fahrbahn:=1;
tempi:=random(4);
if tempi=0 then fAmpel.AutosL[i].Image.Picture.LoadFromFile(ImgAutoRotL);
if tempi=1 then fAmpel.AutosL[i].Image.Picture.LoadFromFile(ImgAutoGelbL);
if tempi=2 then fAmpel.AutosL[i].Image.Picture.LoadFromFile(ImgAutoBlauL);
if tempi=3 then fAmpel.AutosL[i].Image.Picture.LoadFromFile(ImgAutoGruenL);
fAmpel.AutosL[i].Image.Width:=fAmpel.AutosL[i].Image.Picture.Width;
fAmpel.AutosL[i].Image.Parent:=fAmpel;
fAmpel.AutosL[i].Image.Transparent:=true;
fAmpel.AutosL[i].Image.Left:=-1000;
if fAmpel.AutosL[i].Fahrbahn=1 then fAmpel.AutosL[i].Image.Top:=FahrbahnL1 else fAmpel.AutosL[i].Image.Top:=FahrbahnL2;
end;
end;
procedure FussgaengerKnopf;
begin
FAmpel.AmpelSystem.changeToF;
end;
procedure setImagesToForm;
begin
//Bilder laden
fAmpel.FOGAmpel.Picture.LoadFromFile(ImgFAGruen);
fAmpel.FORAmpel.Picture.LoadFromFile(ImgFARot);
fAmpel.FURAmpel.Picture.LoadFromFile(ImgFARot);
fAmpel.FUGAmpel.Picture.LoadFromFile(ImgFAGruen);
fAmpel.ARGAmpel.Picture.LoadFromFile(ImgAAGruen);
fAmpel.ARYAmpel.Picture.LoadFromFile(ImgAAGelb);
fAmpel.ARRAmpel.Picture.LoadFromFile(ImgAARot);
fAmpel.ALGAmpel.Picture.LoadFromFile(ImgAAGruen);
fAmpel.ALYAmpel.Picture.LoadFromFile(ImgAAGelb);
fAmpel.ALRAmpel.Picture.LoadFromFile(ImgAARot);
fAmpel.Streetimg.Picture.LoadFromFile(ImgStreet);
end;
procedure bindImagesToAmpelSystem;
begin
fAmpel.Ampelsystem.ARAmpel.Gruen:=fAmpel.ARGAmpel;
fAmpel.Ampelsystem.ARAmpel.Gelb:=fAmpel.ARYAmpel;
fAmpel.Ampelsystem.ARAmpel.Rot:=fAmpel.ARRAmpel;
fAmpel.Ampelsystem.ALAmpel.Gruen:=fAmpel.ALGAmpel;
fAmpel.Ampelsystem.ALAmpel.Gelb:=fAmpel.ALYAmpel;
fAmpel.Ampelsystem.ALAmpel.Rot:=fAmpel.ALRAmpel;
fAmpel.AmpelSystem.FOAmpel.Gruen:=fAmpel.FOGAmpel;
fAmpel.AmpelSystem.FOAmpel.Rot:=fAmpel.FORAmpel;
fAmpel.AmpelSystem.FUAmpel.Gruen:=fAmpel.FUGAmpel;
fAmpel.AmpelSystem.FUAmpel.Rot:=fAmpel.FURAmpel;
end;
procedure setOptions(Autos,Fussgaenger:boolean);
begin
//Optionen verwerten...
fAmpel.show;
fOptions.Hide;
if Fussgaenger then
begin
fAmpel.FOKnopf.Visible:=false;
fAmpel.FUKnopf.Visible:=false;
fAmpel.tFussgaengerTimer.enabled:=true;
end else
begin
fAmpel.FOKnopf.Visible:=true;
fAmpel.FUKnopf.Visible:=true;
end;
if Autos then
begin
StartAutoTimer;
end;
{fAmpel.showmodal;}
end;
end.

215
newclasses.pas Normal file
View File

@ -0,0 +1,215 @@
unit newclasses;
interface
uses ExtCtrls;
type TAmpelPlatz = class
public
X:integer;
Y:Integer;
Width:integer;
Height:integer;
Besetzt:boolean;
end;
type TFussgaenger = class
public
Image:TImage;
Speed:integer;
momSpeedx:integer;
momSpeedy:integer;
Active:boolean;
AngesteuerterAmpelPlatz:integer;
AufStrasse:boolean;
constructor create;
destructor destroy;
end;
type TAuto = class
public
Image:TImage;
Speed:integer;
momSpeed:integer;
BlinkerL:boolean;
BlinkerR:boolean;
Fahrbahn:integer;
Active:boolean;
end;
type TAutoAmpel = class
public
Rot:TImage;
Gruen:TImage;
Gelb:TImage;
State:integer;
end;
type TFussgaengerAmpel = class
public
Rot:TImage;
Gruen:TImage;
State:boolean;
end;
type TAmpelSystem = class
public
ARAmpel:TAutoAmpel;
ALAmpel:TAutoAmpel;
FOAmpel:TFussgaengerAmpel;
FUAmpel:TFussgaengerAmpel;
FOKnopf:boolean; //Fußgängerknopf Oben
FUKnopf:boolean;
Changing:boolean;
constructor create;
destructor destroy;
procedure setFGruen;
procedure setFRot;
procedure setAGruen;
procedure setAGelb;
procedure setARotGelb;
procedure setARot;
procedure changeToF;
end;
implementation
uses ampelu,functions;
procedure TAmpelSystem.changeToF;
begin
changing:=true;
fAmpel.AmpelTimer.enabled:=true;
end;
procedure TAmpelSystem.setFGruen;
begin
FOAmpel.Gruen.Visible:=true;
FOAmpel.Rot.Visible:=false;
FOAmpel.State:=true;
FUAmpel.Gruen.Visible:=true;
FUAmpel.Rot.Visible:=false;
FUAmpel.State:=true;
end;
procedure TAmpelSystem.setFRot;
begin
FOAmpel.Gruen.Visible:=false;
FOAmpel.Rot.Visible:=true;
FOAmpel.State:=false;
FUAmpel.Gruen.Visible:=false;
FUAmpel.Rot.Visible:=true;
FUAmpel.State:=false;
end;
procedure TAmpelSystem.setAGruen;
begin
ARAmpel.Gruen.Visible:=true;
ARAmpel.Gelb.Visible:=false;
ARAmpel.Rot.Visible:=false;
ARAmpel.State:=0;
ALAmpel.Gruen.Visible:=true;
ALAmpel.Gelb.Visible:=false;
ALAmpel.Rot.Visible:=false;
ALAmpel.State:=0;
end;
procedure TAmpelSystem.setAGelb;
begin
ARAmpel.Gruen.Visible:=false;
ARAmpel.Gelb.Visible:=true;
ARAmpel.Rot.Visible:=false;
ARAmpel.State:=1;
ALAmpel.Gruen.Visible:=false;
ALAmpel.Gelb.Visible:=true;
ALAmpel.Rot.Visible:=false;
ALAmpel.State:=1;
end;
procedure TAmpelSystem.setARot;
begin
ARAmpel.Gruen.Visible:=false;
ARAmpel.Gelb.Visible:=false;
ARAmpel.Rot.Visible:=true;
ARAmpel.State:=2;
ALAmpel.Gruen.Visible:=false;
ALAmpel.Gelb.Visible:=false;
ALAmpel.Rot.Visible:=true;
ALAmpel.State:=2;
end;
procedure TAmpelSystem.setARotGelb;
begin
ARAmpel.Gruen.Visible:=false;
ARAmpel.Gelb.Visible:=true;
ARAmpel.Rot.Visible:=true;
ARAmpel.State:=3;
ALAmpel.Gruen.Visible:=false;
ALAmpel.Gelb.Visible:=true;
ALAmpel.Rot.Visible:=true;
ALAmpel.State:=3;
end;
constructor TAmpelSystem.create;
begin
ARAmpel:=TAutoAmpel.Create;
ALAmpel:=TAutoAmpel.Create;
FOAmpel:=TFussgaengerAmpel.Create;
FUAmpel:=TFussgaengerAmpel.Create;
changing:=false;
end;
destructor TAmpelSystem.destroy;
begin
ARAmpel.free;
ALAmpel.free;
FOAmpel.free;
FUAmpel.free;
end;
constructor TFussgaenger.create;
begin
Image:=TImage.Create(fAmpel);
end;
destructor TFussgaenger.destroy;
begin
Image.Free;
end;
end.

56
vars.pas Normal file
View File

@ -0,0 +1,56 @@
unit vars;
interface
uses sysutils,splashu;
const
ImgFAGruen='Images\FAGruen.bmp';
ImgFARot='Images\FARot.bmp';
ImgAAGruen='Images\AAGruen.bmp';
ImgAAGelb='Images\AAGelb.bmp';
ImgAARot='Images\AARot.bmp';
ImgStreet='Images\Street.bmp';
AnzahlDerAutosR=10;
AnzahlDerAutosL=10;
AnzahlDerFussgaengerO=5;
AnzahlDerFussgaengerU=5;
AnzahlDerAmpelPlaetzeO=5;
AmpelPlatzOX=422;
AmpelPlatzOY=50;
ImgFussgaengerO1='Images\der mann der alles kann.bmp';
ImgFussgaengerO2='Images\der mann der alles kann.bmp';
ImgFussgaengerO3='Images\der mann der alles kann.bmp';
ImgFussgaengerO4='Images\der mann der alles kann.bmp';
ImgFussgaengerU1='Images\AAGruen.bmp';
ImgFussgaengerU2='Images\AAGruen.bmp';
ImgFussgaengerU3='Images\AAGruen.bmp';
ImgFussgaengerU4='Images\AAGruen.bmp';
ImgAutoRotR='Images\AutoRotR.bmp';
ImgAutoBlauR='Images\AutoBlauR.bmp';
ImgAutoGelbR='Images\AutoGelbR.bmp';
ImgAutoGruenR='Images\AutoGruenR.bmp';
ImgAutoRotL='Images\AutoRotL.bmp';
ImgAutoBlauL='Images\AutoBlauL.bmp';
ImgAutoGelbL='Images\AutoGelbL.bmp';
ImgAutoGruenL='Images\AutoGruenL.bmp';
FahrbahnR1=138;
FahrbahnR2=258;
FahrbahnL1=520;
FahrbahnL2=400;
implementation
end.