![]() |
Bild bei Position X stoppen..
Hi erstmal..
Ich bin grad dabei mir ein Ampelprogramm zu bauen und hab jetzt ne Frage. Mein Auto fährt bei Grün normal über die Ampel. Bei Rot sollte das Auto dann bis zu der Haltelinie fahren und dann stoppen. Wie kann ich das jetzt in Delphi verwirklichen? Danke schonmal für die Antworten.. |
Re: Bild bei Position X stoppen..
Da musst Du uns schon mehr über Dein Programm sagen ;) z.B.: Ist Dein Auto ein TImage; Bewegst Du das Auto mit TTimer?
![]() |
Re: Bild bei Position X stoppen..
Ok ich glaub du hast mir die Antwort schon indirekt gegeben. Ist ein tImage und ein Timer.
Würde das so gehen?:
Delphi-Quellcode:
Ich glaub so müsste das gehn..
If Image1.Top=X
then Timer.Enabled:=false end; Naja wenns anders geht könnt ihr ja was sagen.. |
Re: Bild bei Position X stoppen..
ja, wohl schon.
Gedanke:
Delphi-Quellcode:
Nich dass dein aut zu früh anhält ;)
if (ampel = rot) AND (auto_position = Haltelinie) then
begin Form1.Timer1.Enabled := false; end; Oder gleich so?
Delphi-Quellcode:
Dann wird es immer langsamer wenn es rot ist ;) (Vergiss nicht es wieder schneller zu machen!)
if ampel = rot then
begin if auto_position = haltelinie then begin Form1.Timer1.Enabled := false end else Auto_geschwindigkeit := Auto_geschwindigkeit - 1; end; end; |
Re: Bild bei Position X stoppen..
[quote="Airblader"]ja, wohl schon.
Gedanke:
Delphi-Quellcode:
Nich dass dein aut zu früh anhält ;)
if (ampel = rot) AND (auto_position = Haltelinie) then
begin Form1.Timer1.Enabled := false; end; [quote] habs ja auch so gehabt aber mein Auto fährt einfach weiter und hält wenn ich auf Rot klick, egal obs jetzt Top=100 oder Top=200 hat.. deinen anderen Tipp muss ich auch mal probieren.. Danke.. |
Re: Bild bei Position X stoppen..
Mir fällt grad noch was wichtiges ein:
Wenn du die geschw. immer verringerst, musst du natürlich aufpassen, dass du dann nicht zu früh auf geschw. 0 und -1 etc. kommst! (Beo rot rückwärts fahren :zwinker: ) Dazu kann man das auf 2 verschiedene arten lösen:
Delphi-Quellcode:
Auf die Weise würde er (denk ich :gruebel: ) exakt bei der Haltelinie anhalten.
var halt: Boolean;
halt := false; ... if ampel = rot then begin if auto_position = haltelinie then begin Form1.Timer1.Enabled := false; halt := true; end else begin if (not (haltelinie - auto_position) > geschwindigkeit) AND (halt = true) then begin Auto_geschwindigkeit := Auto_geschwindigkeit - 1; end; end; end; Allerdingst musst du dann - wenns wieder grün wird - halt := false machen air |
Re: Bild bei Position X stoppen..
So hab jetzt das Programm so ziemlich laufen, nur irgendwie stoppt der zwar bei Rot und so jetzt, aber der fährt bei Grün nicht mehr los. Hier mein Code:
Delphi-Quellcode:
Ich denke dass der richtig ist..
procedure TForm1.tiAuto1Timer(Sender: TObject);
begin imAuto1.Top:=imAuto1.Top-1; if shgruen1.Visible=true then tiAuto1.Enabled:=true else if (shrot1.Visible=true) and (imAuto1.Top=330) then tiAuto1.Enabled:=false else if imAuto1.Top=-40 then imAuto1.Top:=400; end; EDIT: Hab meine eigenen Kürzel: im=Image sh=Shape ti=Timer |
Re: Bild bei Position X stoppen..
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal mein Delphiprogramm. Hab jetzt nochmal nach Fehlern geguckt aber nix gefunden. Und meine tolle Infolehrerin hat keinen Bock da mal drüber zu gucken, weil der logische Aufbau scheiße ist...
|
Re: Bild bei Position X stoppen..
ganz klarer logikfehler ;)
Wenn es rot wird, ist der timer aus. dann ist doch klar, dass onTimer nicht ausgeführt wird und somit der timer gar nichtmehr enabled wird :) Lösung: nicht den timer ausschalten, sondern nur:
Delphi-Quellcode:
Verstanden? ;)
if shgruen1.Visible=true then
begin imAuto1.Top:=imAuto1.Top-1; end; ------------------------------------- Änder deine tiAuto1Timer prozedur einfach so(habs getestet und es geht)
Delphi-Quellcode:
Noch was:
procedure TForm1.tiAuto1Timer(Sender: TObject);
begin if (shgruen1.Visible=true) AND (not shgelb1.Visible=true) then begin imAuto1.Top := imAuto1.Top-1 end else if shrot1.Visible=true AND (not shgelb1.Visible=true) then begin if imAuto1.Top = 330 then imAuto1.Top := imAuto1.Top else imAuto1.Top := imAuto1.Top-1; end; if imAuto1.Top = -40 then begin imAuto1.Top := 400; end; end; Warum arbeitest du mit so vielen Shapes? Mach doch einfach immer shampel1.brush.color := clRed; etc. :gruebel: ;) |
Re: Bild bei Position X stoppen..
Man bin ich dumm... Danke..
Habs mit den Shapes gemacht weil wir die grad in Info hatten. Wir haben heute erst mit Canvas,.. angefangen. Naja und jetzt lass ich das halt so. Ich hab ja eh erst 10 Std. oder so mit Delphi gearbeitet. Nur mal so nebenbei: Findest du dass der Aufbau von meinen Quelltext unübersichtlich ist? Meine Infolehrerin hat damit nämlich Probleme. Die macht da immer so 2 Leerzeichen nach dem was Delphi schreibt. Naja ich finds auf jeden Fall so übersichtlicher.. Aber egal.. Jetzt kann ich sie ja testen, ob die den Fehler auch so schnell findet.. Danke nochmal.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz