Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Ampelkreuzung (https://www.delphipraxis.net/111667-ampelkreuzung.html)

Danül 7. Apr 2008 16:12


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

Luckie 7. Apr 2008 16:17

Re: Ampelkreuzung
 
Zitat:

Zitat von Danül
Allerdings meckert er damit rum und ich komm zu keiner Aufzählung.

Also mein Compiler meckert nie, sondern gibt (verständliche) Fehlermeldungen aus.

divBy0 7. Apr 2008 16:30

Re: Ampelkreuzung
 
Was genau meckert er denn?

Die if-Anweisung sollte eigentlich so laufen.

Poste doch mal den Teil von dem Code hier.

Danül 7. Apr 2008 16:31

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
;)

Danül 7. Apr 2008 17:09

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?

Danül 9. Apr 2008 14:05

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 ;)

rollstuhlfahrer 9. Apr 2008 19:02

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.

mkinzler 9. Apr 2008 19:18

Re: Ampelkreuzung
 
Zitat:

2. 30 Timer sind vllt. ein bissel viel, währnd 30 TThread auch nicht grade weniger sind.
Wobei 30 Timer auch 30 Threads sind.

Danül 9. Apr 2008 19:31

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?

DeddyH 9. Apr 2008 19:39

Re: Ampelkreuzung
 
Fließkommazahlen sind Bruchzahlen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.
Seite 1 von 3  1 23      

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