AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bild bei Position X stoppen..
Thema durchsuchen
Ansicht
Themen-Optionen

Bild bei Position X stoppen..

Ein Thema von MAD_87 · begonnen am 2. Nov 2004 · letzter Beitrag vom 8. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
MAD_87

Registriert seit: 3. Okt 2004
22 Beiträge
 
#1

Bild bei Position X stoppen..

  Alt 2. Nov 2004, 19:35
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..
  Mit Zitat antworten Zitat
velgreyer

Registriert seit: 2. Nov 2004
97 Beiträge
 
Delphi 6 Professional
 
#2

Re: Bild bei Position X stoppen..

  Alt 2. Nov 2004, 19:42
Da musst Du uns schon mehr über Dein Programm sagen z.B.: Ist Dein Auto ein TImage; Bewegst Du das Auto mit TTimer?

http://datar.de/s.jpg, vel
oooo° Java °oooo
Schade, dass ich kein Delphi mehr kann q.q
  Mit Zitat antworten Zitat
MAD_87

Registriert seit: 3. Okt 2004
22 Beiträge
 
#3

Re: Bild bei Position X stoppen..

  Alt 2. Nov 2004, 19:48
Ok ich glaub du hast mir die Antwort schon indirekt gegeben. Ist ein tImage und ein Timer.
Würde das so gehen?:
Delphi-Quellcode:
If Image1.Top=X
then Timer.Enabled:=false
end;
Ich glaub so müsste das gehn..
Naja wenns anders geht könnt ihr ja was sagen..
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#4

Re: Bild bei Position X stoppen..

  Alt 2. Nov 2004, 22:42
ja, wohl schon.

Gedanke:

Delphi-Quellcode:
if (ampel = rot) AND (auto_position = Haltelinie) then
begin
 Form1.Timer1.Enabled := false;
end;
Nich dass dein aut zu früh anhält

Oder gleich so?

Delphi-Quellcode:
if ampel = rot then
begin
 if auto_position = haltelinie then
 begin
  Form1.Timer1.Enabled := false
 end else
  Auto_geschwindigkeit := Auto_geschwindigkeit - 1;
 end;
end;
Dann wird es immer langsamer wenn es rot ist (Vergiss nicht es wieder schneller zu machen!)
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
MAD_87

Registriert seit: 3. Okt 2004
22 Beiträge
 
#5

Re: Bild bei Position X stoppen..

  Alt 3. Nov 2004, 18:47
[quote="Airblader"]ja, wohl schon.

Gedanke:

Delphi-Quellcode:
if (ampel = rot) AND (auto_position = Haltelinie) then
begin
 Form1.Timer1.Enabled := false;
end;
Nich dass dein aut zu früh anhält
[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..
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#6

Re: Bild bei Position X stoppen..

  Alt 4. Nov 2004, 10:44
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 )

Dazu kann man das auf 2 verschiedene arten lösen:

Delphi-Quellcode:
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;
Auf die Weise würde er (denk ich ) exakt bei der Haltelinie anhalten.

Allerdingst musst du dann - wenns wieder grün wird - halt := false machen

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
MAD_87

Registriert seit: 3. Okt 2004
22 Beiträge
 
#7

Re: Bild bei Position X stoppen..

  Alt 4. Nov 2004, 19:29
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:
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;
Ich denke dass der richtig ist..

EDIT: Hab meine eigenen Kürzel:
im=Image
sh=Shape
ti=Timer
  Mit Zitat antworten Zitat
MAD_87

Registriert seit: 3. Okt 2004
22 Beiträge
 
#8

Re: Bild bei Position X stoppen..

  Alt 5. Nov 2004, 11:01
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...
Angehängte Dateien
Dateityp: rar ampelkreuzung.rar (174,6 KB, 24x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#9

Re: Bild bei Position X stoppen..

  Alt 5. Nov 2004, 11:45
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:
if shgruen1.Visible=true then
begin
imAuto1.Top:=imAuto1.Top-1;
end;
Verstanden?

-------------------------------------
Änder deine tiAuto1Timer prozedur einfach so(habs getestet und es geht)

Delphi-Quellcode:
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;
Noch was:
Warum arbeitest du mit so vielen Shapes?
Mach doch einfach immer
shampel1.brush.color := clRed;
etc.
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
MAD_87

Registriert seit: 3. Okt 2004
22 Beiträge
 
#10

Re: Bild bei Position X stoppen..

  Alt 5. Nov 2004, 19:14
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..
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz