Unter Win7 und Win8 sieht es gut aus.
Kannst Du mal grob umreißen, wie Du das aufgebaut hast?
Bild als Hintergrund und wie kontrollierst Du die Strecke und Winkel?
Delphi-Quellcode:
TCar = Record
Position : TPosition;
Richtung : Single;
Geschwindigkeit : Single;
Image : TImage;
end;
Delphi-Quellcode:
TAutoDriveList = Record
CarNr : byte;
Geschwindigkeit : Single;
Richtung : Single;
// Besser Position dann ist es Hardware unabhängig (z.b. auf Mac)
Wann : TDateTime;
end;
Delphi-Quellcode:
Procedure TForm46.MoveCar(Nr:Integer); // Form46 lol...PoC
begin
Cars[Nr].Position.X := Cars[Nr].Position.X + Sin(Cars[Nr].Richtung*PI/180)*Cars[Nr].Geschwindigkeit;
Cars[Nr].Position.Y := Cars[Nr].Position.Y + Cos(Cars[Nr].Richtung*PI/180)*Cars[Nr].Geschwindigkeit;
Cars[Nr].Image.Position := Cars[Nr].Position;
end;
Delphi-Quellcode:
procedure TForm46.Timer1Timer(Sender: TObject);
var
i : Integer;
begin
Image5.Canvas.BeginScene;
Label6.Text := FloattoStr(Image4.AbsoluteRect.Width) +' x '+FloattoStr(Image4.AbsoluteRect.Height);
if Gas
then Cars[Stear].Geschwindigkeit := Cars[Stear].Geschwindigkeit + 0.10 // Mehr Gas als Bremse ;-)
else if Bremse then
Cars[Stear].Geschwindigkeit := Cars[Stear].Geschwindigkeit - 0.05;
if Links
then begin
Cars[Stear].Richtung := Cars[Stear].Richtung + 3; // Winkelgeschwindigkeit noch gemäßt Geschwindigkeit anpassen
Cars[Stear].Image.RotationAngle := 90 - Cars[Stear].Richtung;
end
else if Rechts then
begin
Cars[Stear].Richtung := Cars[Stear].Richtung - 3;
Cars[Stear].Image.RotationAngle := 90 - Cars[Stear].Richtung;
end;
if AutoDrive then
begin
// Gespeicherte Daten abspielen
...
end;
for i:=1 to 4 do
begin
MoveCar(i);
CheckCar(i); // todo
end;
Image5.Canvas.EndScene;
end;
Quick and Dirty.
Die Daten für die Bewegungen können entweder eingegeben werden per Tastatur,
oder aus dem gespeicherten Array abgespielt werden oder per UDP "rein" kommen.
Mavarik