![]() |
Ampelkreuzung
Schönen guten Tag,
ich als Delphi-Neuling hätte eine Frage, die wahrscheinlich zu simpel ist, aber iwie bekomm ich sie nicht hin ;) Und zwar soll mein Auto bei dem Anhaltestreifen halten, sofern die Ampel rot ist. Allerdings achtet er dort nur auf die Bedinung des image1.left = X , soll heißen wenn er von der anderen Seite kommt hält er ebenfalls dort bei dem streifen, allerdings hat er dann schon die Ampel überfahren. Hoffe ihr versteht es so ;) Mein Problem ist If (radioButton1.color = clred) and (Image1.left = 311) <<<dass Wie man unschwer erkennt hab ich dort 2 Bedinungen rot und 311, allerdings möchte ich Image1.Top ebenfalls als Bedingung hinzufügen also sollte es eigtl so aussehen: If (radioButton1.color = clred) and (Image1.left = 311) and (Image1.top = 24 )then begin.... Allerdings meckert er damit rum und ich komm zu keiner Aufzählung. Wie umgeht man das Problem? Ich habe es bereits mit Komma probiert aber auch keinen Erfolg erzielt Hoffe ihr helft einen Neuling im Forum ;) Edit: Da fällt mir direkt noch eine Frage ein. Wir arbeiten in Informatik mit dem Tradiobutton, kann man irgendwie einstellen dass z.B. das Rote Leuchten nicht allzulange geht? Soll heißen dass mein Timer zwar von Grün auf Rot schaltet und umgekehrt allerdings bei Rot eher wieder auf grün schaltet (würde auch zum hinzufügen von orange helfen ;) ) vielen Dank |
Re: Ampelkreuzung
Zitat:
|
Re: Ampelkreuzung
Was genau meckert er denn?
Die if-Anweisung sollte eigentlich so laufen. Poste doch mal den Teil von dem Code hier. |
Re: Ampelkreuzung
komisch, ich könnte schwören dass der gestern abend ne fehlermeldung ausspuckte
jetzt gerade geht If (a ) and (b ) and (c ) then begin... danke euch dennoch ;) |
Re: Ampelkreuzung
dann hätte ich trotzdem noch eine weitere Frage ;)
Ich möchte mein Auto im Viereck fahren lassen. Allerdings bekomm ich nur 2 Richtungen hin. procedure TForm1.Timer1Timer(Sender: TObject); begin If Button1.left > 400 then begin Button1.Top := Button1.top+1 end else Button1.Left := Button1.left +1 ; wie bau ich dies nun noch um damit er ebenso in den Button1.left -1 sowie Button1.Top -1 gelangt sodass er bei dem Startwert wieder von vorne beginnen kann? |
Re: Ampelkreuzung
Sooo, nachdem ich wieder bissl rumgebastelt habe komme ich nurn auf satte 30 Timer...
deswegen wollt ich mal nen bisschen umformen und hätte diesbezüglich einige Fragen. Zum einen: Meine Fußgänger sollen relativ langsam laufen, meine Autos unterschiedlich schnell.... Wie realisier ich dass in einem Timer? Ich habe jetzt für jedes Auto nen seperaten Timer, allerdings ist dies stark unübersichtlich und man kommt durcheinander. Ich hab von dem Timer1.Interval = X gehört, kann man dies einfach so in die Gleichung einbauen? Dann meine zweite Frage: Ebenfalls vom Timer her, ich habe ne Ampel die zwischen Grün/Orange/Rot schalten soll, allerdings sollen auch dort unterschiedliche Abstände gelten. Sagen wir Grün soll 30sek dauern, orange dann 5 und rot 15. Wie realisier ich dass dort mit dem Timer? Bisher habe ich nur 2 Farben: Rot und Grün Mein Timer sieht momentan so aus: If RadioButton1.color =clred then RadioButton1.color :=cllime else RadioButton1.color :=clred; Allerdings greift er deswegen nur auf den Intervall des Timers logischerweise zu. HOffe ihr könnt mir einige Tipps bezüglich der Probleme geben ;) |
Re: Ampelkreuzung
HI,
1. würd ich meinen, dass man dazu einen neuen Thread aufmachen sollte, 2. 30 Timer sind vllt. ein bissel viel, währnd 30 TThread auch nicht grade weniger sind. Versuch doch mal ein Verhältniss zwischen den Geschwindigkeiten deiner Figuren zu machen. z.B. wäre es vorteilhaft, wenn die 1ne doppelt so schnell läuft, wie die andere. Dann kann man die Bewegung von 2 Figuren in eine Prozedur stecken. 3. Anderer Vorschlag: Du willst doch jede Figur anders schnell laufen lassen. Schreib alle Bewegungen in eine Prozedur, wobei jede Bewegung nicht in einer Ganzzahl, sondern in einer Fließkommazahl ausgedrückt wird. Dann noch ein bissel mit Sleep arbeiten und alles müsste in einen Timer passen. (Vllt. ein bissel rumrechnen) rollstuhlfahrer ### Edit: Die Ampel würd ich in einen Thread stecken und dort mit Syncronisize arbeiten. So kannst du mit Sleep(20000), Sleep(15000) und Sleep(5000) die Ampel schalten lassen. |
Re: Ampelkreuzung
Zitat:
|
Re: Ampelkreuzung
hm joa, ich wollte jetzt als Neuling nicht wegen jeder neuen Frage einen neuen Thread aufstellen daich täglich neu dazulerne und somit mehrere Fragen habe ;)
Was meinst du mit Fließkommazahl anstatt Ganze Zahl? Ich arbeite momentan immer mit Image.left := Image.left +1 , sicher meinst du damit die ganzen Zahlen, aber wie soll man dass dann in Fließkommazahlen umschreiben?;) Bzw was sind Fließkommazahlen? |
Re: Ampelkreuzung
Fließkommazahlen sind Bruchzahlen ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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