📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Math;
type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TPointSeries;
Button1: TButton;
Button2: TButton;
Chart2: TChart;
Series2: TPointSeries;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
Chart3: TChart;
Series3: TLineSeries;
Image1: TImage;
Label1: TLabel;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
auto=record
x:integer;
v:integer;
d:integer;
end;
CA=array of auto;
const kon=500;
ser=250;
var
Form1: TForm1;
cell,cell_1: CA;
vmax:integer;
stop:boolean;
pnoise,ptrans:real;
implementation
{$R *.dfm}
procedure Graphic(mas1:CA;k1:integer);
var i:integer;
begin
for i:=Low(mas1) to High(mas1) do
if mas1[i].x<kon then Form1.Chart2.Series[0].AddXY(mas1[i].x,k1);
end;
procedure raven (var mas1:CA;mas2:CA);
var i:byte;
begin
for i:=Low(mas2) to High(mas2) do
begin
mas1[i].x:=mas2[i].x;
mas1[i].v:=mas2[i].v;
mas1[i].d:=mas2[i].d;
end;
end;
procedure ShowCA(mas:CA);
var i:byte;
begin
Form1.Chart1.Series[0].Clear;
for i:=0 to High(cell) do
Form1.Chart1.Series[0].AddXY(mas[i].x,0);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
randomize;
setlength(cell,1);
setlength(cell_1,1);
cell[0].x:=0;
cell[0].d:=10000;
cell[0].v:=Random(vmax-1)+1;
ShowCA(cell);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
stop:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
stop:=true;
end;
procedure Measuring(var m1:integer);
var i,s:integer;
temp:CA;
begin
s:=0;
for i:=Low(cell) to High(cell) do
if InRange(cell[i].x,kon,kon+cell[i].v-1) then inc(m1);//inc(s);
{m1:=m1+s;
setlength(temp,length(cell)-s);
for i:=High(temp) downto Low(temp) do
begin
temp[i].v:=cell[i].v;
temp[i].d:=cell[i].d;
temp[i].x:=cell[i].x;
end;
setlength(cell,length(temp));
raven(cell,temp); }
end;
procedure svetofor(var Svet:TImage;p:real);
begin
if p=0 then
begin
Svet.Canvas.Brush.Color:=clRed;
Svet.Canvas.Ellipse(0,0,30,30);
end
else
begin
Svet.Canvas.Brush.Color:=clGreen;
Svet.Canvas.Ellipse(0,0,30,30);
end;
end;
procedure GenerateCar;
begin
if cell[High(cell)].x>vmax then
begin
setlength(cell,length(cell)+1);
setlength(cell_1,length(cell_1)+1);
cell[High(cell)].x:=0;
cell[High(cell)].d:=cell[High(cell)-1].x;
cell[High(cell)].v:=Random(vmax-1)+1;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var k,i,m:integer;
p,pt:real;
begin
if LabeledEdit1.Text<>'' then vmax:=StrToInt(LabeledEdit1.Text)
else
begin
ShowMessage('骡邃栩
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -