Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kreuzung mit Autos (https://www.delphipraxis.net/82240-kreuzung-mit-autos.html)

Durin 9. Dez 2006 09:28


Kreuzung mit Autos
 
Hallo erstmal.
Ich hab jetzt seit einen halben Jahr Delphi in der Schule. Jetzt müssen wir eine Ampelkreuzung mit Timer und min. ein Auto machen. Die Ampelschaltung hab ich schon hinbekommen (mit case-Mehrfachauswahl gemacht). Funzt alles sehr schön. Jetzt will ich ein Auto einzeichnen, also ansich nich mehr als ein Rechteck. Wenn ich das Auto jetzt aber für jede Sekunde neu zeichne, wäre das ne immense Arbeit. Ich hab mir schon überlegt, dass mit einer Schleife zu machen, aber das will auch nicht so recht. Ich will ja auch keine kollisionen, Physikkram,Zufallsverkehr und so einbauen, nur ein Rechteck, was sich jede Sekunde ein stück nach vorne bewegt. Könnt ihr mir helfen. Und mit verweist mich nicht auf andere Threads. Ich hab jetzt schon etliches durchgekuckt, aber die waren immer schon ein schritt weiter als ich.
ich benutze Delhi5 und ich will auch keine Zusatzsoftware und -plugins verwenden, weil die mir in der Schule auch nicht zur verfügung stehen

Neutron 9. Dez 2006 10:24

Re: Kreuzung mit Autos
 
Hallo! Willkommen in der DP! :-D

Also...
So wie ich das jetzt verstanden hab kannst du doch einfach ein Image nehmen, oder?

Und dann nimmst du ein zweiten Timer der Intervall von 1000 (Also einer Sec.) hat und
dann soll das Image immer x nach vorne bewegt werden...

Dann noch Form1.DoubleBuffered := True , damit es nicht mehr so ruckt!

Schon hast du dein Auto!

PS: Wenn ich das jetzt falsch verstanden hab schreib mir zurück! :)

Grüße Neutron

Durin 9. Dez 2006 11:01

Re: Kreuzung mit Autos
 
Also du hast mich schon richtig verstanden. Du müsstest mir jetzt nur noch sagen, wie ich images einfüge. Ich weiß halt wie gesagt nur sehr wenig, da ich Delphi nur 2 Std. in der Woche habe und zuhause lässt sich das schlecht selbst beibringen

Ratte 9. Dez 2006 11:14

Re: Kreuzung mit Autos
 
Zitat:

Zitat von Durin
Also du hast mich schon richtig verstanden. Du müsstest mir jetzt nur noch sagen, wie ich images einfüge.

In der Komponentenpalette TImage auswählen, platzieren, im Objektinspector die eigenschaft Graphic suchen und dort das bild laden.
Zitat:

Zitat von Durin
und zuhause lässt sich das schlecht selbst beibringen

Ansichtssache, ich hab im Delphiunterricht fast nix gelernt, da ich mir das schon vorher selber beigebracht hatte.
mfg,
Ratte

Durin 9. Dez 2006 12:19

Re: Kreuzung mit Autos
 
Danke.
Jetzt hab ich zwar ein Auto und das bewegt sich auch, aber jetzt aber ich so einen Streifen vor unter hinter dem Auto. Der Streifen hinter den Auto kommt ja dadurch, dass sich das Auto bewgt und so die normale Oberfläche sichtbar wird. Die ist ja nicht das Prob. Ich weiß jetzt aber nicht wie der Streifen vor dem Auto entsteht und auserdem wird dieser Streifen immer größer

Neutron 9. Dez 2006 18:31

Re: Kreuzung mit Autos
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi, noch mal! :???:
Als ich damals angefangen hab mit Delphi, haben mir Beispiele
gut weiter geholfen!

Deswegen hab ich hier mal etwas vorbereitet! :mrgreen:

(Also is nicht groß, aber hilft dir ja vielleicht :) )

Hagbart 9. Dez 2006 18:41

Re: Kreuzung mit Autos
 
Soll das Auto nur fahren so wie es bei Neutron im Beispiel ist oder muss es auch Kruven fahren und an der Ampel anhalten?

Durin 9. Dez 2006 20:39

Re: Kreuzung mit Autos
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Hagbart
Also das auto muss nur eine einfache Gerade entlang fahren. Ne Kurve fahren oder bei rot anhlaten, ist erstmal zu hoch für mich :roll:
@Neutron
Bei dein Beispiel funzt zwar alles, aber ich weiß immer noch nich was ich bei mir falsch mache. Du hast ja auch keine straße drine. Auserdem hab ich noch einen Haltestreifen drinne, der dann ja wieder neu gezeichnet werden muss nachdem das auto drüber gefahren ist.Ich hab da jetzt erstmal nur ne provisorische Lsg. gefunden. Guckt euch am besten mal mein Projekt an.
P.S. Sobald die Kreuzung verschwindet, müsst ihr Stop und dann wieder Start drücken, dann bleibt die kreuzung erhalten

Hagbart 9. Dez 2006 21:39

Re: Kreuzung mit Autos
 
Liste der Anhänge anzeigen (Anzahl: 1)
So ich habe deinen Quellcide etwas umgeändert, du hast es eigentlich zu kopmliziert gemacht.
Ich will dir jetzt eigentlich nicht die Lösung geben, aber ich glaub du wirst ein paar feinarbeiten noch selbst erledigen müssen.

edit: Bei dieser Lösung musst du davon ausgehen, das das Fenster nicht maximiert ist, weil dann fähr das Auto bei Rot über die Ampel, ich hab vergessen bei den BorderIcons Maximize auf false zu setzen

Hagbart 9. Dez 2006 21:49

Re: Kreuzung mit Autos
 
Mir ist eben noch ein kleiner Fehler aufgefallen, wenn man auf Start drückt, wird die Ampel nicht komplett gezeichnett, sondern nur eine Ellipse, wenn dann alle Farben gezeichnett wurden stimmts wieder, müsste man recht einfach beheben können, aber nicht mehr heute Abend (jedenfalls nicht mehr von mir)

Gute Nacht

Durin 10. Dez 2006 09:14

Re: Kreuzung mit Autos
 
Gut. Jetzt funzt alles. Die Ampellichter werden ja mit den Start-Button gezeichnet, du hast aber die Zeichenbefehle gelöscht. Ist ja aber auch egal. Nochmals dankeschön :dp:

blumblum 20. Okt 2010 23:21

AW: Kreuzung mit Autos
 
Huhu,
daich neu bin stell ich mich eben mal kurz vor:
Ich bin blumblum ( olli),gehe in die 11. klasse.

ich weiß der theard ist schon verdammt alt,aber trotzdem würde ich euch gerne noch etwas fragen...
Und zwar sollen wir für info eine ampel programmieren,sie soll min. ein auto haben,welches hält,wenn die ampel rot ist.
Die ampel stellte für mich kein großes porblem dar,die läuft super.
Aber an dem auto scheitere ich,habe schon im theard gelesen,wie es geht,jedoch klappt das bei mir nicht :cry:

Wäre echt toll wenn ihr mir helfen könntet :)

MfG olli

p.s.:Wenn ihr noch daten braucht um zu helfen,einfach sagen..

Lumpiluk 20. Okt 2010 23:34

AW: Kreuzung mit Autos
 
Erstmal herzlich willkommen hier :dp: (Das wollte ich schon immer mal schreiben :wink: )

Wie hast du das denn mit deiner Ampelschaltung gelöst?
Wo genau scheiterst du mit deinem Auto? Überhaupt, dass es sich bewegt oder daran, dass es nicht hält?
Für ersteres müsstest du in bestimmten Zeitintervallen einfach dein TImage oder TShape oder was auch immer verschieben, und zwar nur dann, wenn die Ampel nicht rot ist (das wäre dann das zweite).
Häng am besten mal den Code an, den du schon hast.


P.S.: Ich wünschte wir hätten Informatik an unserer Schule. Bin auch in der 11. Klasse und das einzige, was dem nahe kam, war ein Schuljahr, in dem uns beigebracht wurde mit MS Office umzugehen :? :(

blumblum 20. Okt 2010 23:50

AW: Kreuzung mit Autos
 
Liste der Anhänge anzeigen (Anzahl: 1)
huhu,
ich weiß nicht wie sich das verfahren nennt.
Also ich hatte ein image eingefügt,sogar ein auto schon drauf,jedoch hat es sich nicht bewegt.Dann habe ich es wieder aus dem quelltext gelöscht,da ich mir erstmal hilfe von profis holten will ;)

Hab dir mal in den angang den quelltext gelegt.
Wenn du willst,kann ich dir auch das gnze programm schicken...

mfg

blumblum 22. Okt 2010 10:19

AW: Kreuzung mit Autos
 
Hi,
also das mit den autos habe ich nun hinbekommen....jedoch ziehen meine autos komische streifen? ist das normal oder eher nicht?
Und hat jemand eine idee,wo ich ein fußgänger im bitmap format herbekomme?

MfG

DeddyH 22. Okt 2010 10:59

AW: Kreuzung mit Autos
 
Was sollen wir Dir denn sagen, wenn wir nicht wissen, wie Du etwas machst? Die Streifen kann man mit ziemlicher Sicherheit umgehen.

Sir Rufo 22. Okt 2010 11:45

AW: Kreuzung mit Autos
 
Zitat:

Zitat von blumblum;
Hi,
also das mit den autos habe ich nun hinbekommen....jedoch ziehen meine autos komische streifen? ist das normal oder eher nicht?

Das hängt von der Norm ab mit der du gerade das betrachtest.

Auto soll mit durchdrehenden Reifen über die Straße fahren -> ja

Die Frage nach der Normalität eines Verhaltens ist sowas von über, weil es keine eindeutige Antwort gibt (weil es bei n Personen n+1 Normen gibt :mrgreen: )

Entweder es ist nicht so wie du es erwartest, dann frag wie man das verhindert oder erzeugt.

Ach ja und es gibt n Wege etwas zu machen. Somit wäre es sehr hilfreich, wenn du uns mitteilst wie und was du bisher gemacht hast (Quelltext ist da immer hilfreich).

btw Quelltext, wenn du schon eine Unit anhängst, dann benenne den Namen derselbigen nicht um, sondern Lade genau diese Datei hoch fertig.
Ein Umbenennen von "MyUtils.pas" in "DasIstMeinSuperQuelltext.txt" ist mehr als kontraproduktiv.

pustekuchen 22. Okt 2010 11:51

AW: Kreuzung mit Autos
 
Zitat:

Das hängt von der Norm ab mit der du gerade das betrachtest.

Auto soll mit durchdrehenden Reifen über die Straße fahren -> ja

Die Frage nach der Normalität eines Verhaltens ist sowas von über, weil es keine eindeutige Antwort gibt (weil es bei n Personen n+1 Normen gibt )
:D:D:D

Zitat:

jedoch ziehen meine autos komische streifen?
Evnentuell vergisst du neu zu Zeichnen?

DeddyH 22. Okt 2010 11:54

AW: Kreuzung mit Autos
 
Zitat:

Zitat von Sir Rufo (Beitrag 1057152)
Somit wäre es sehr hilfreich, wenn du uns mitteilst wie und was du bisher gemacht hast (Quelltext ist da immer hilfreich).

Genau das hab ich durch die Blume versucht auszudrücken :zwinker:

blumblum 22. Okt 2010 12:02

AW: Kreuzung mit Autos
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
sorry für meine undeutliche ausdrucksweiße ;)

Also ich hätte gerne,dass jedes der 4 autos (und vllt noch füßgänger) bei rot stehen und bei grün gehen.
Grad eben hat sich jedoch mein pc aufgehängt und die sachen von der ampel waren weg,zum glück hatte ich noch eine ampel,welche jeodoch nicht so fortgeschritten ist wie die andere.

Ich hänge mal in den anhang das komplette programm,damit ihr sehen könnt was ich bisher geleistet habe(oder auch nicht :D )

Lg

implementation 22. Okt 2010 12:28

AW: Kreuzung mit Autos
 
Zitat:

Zitat von blumblum (Beitrag 1057157)
Grad eben hat sich jedoch mein pc aufgehängt und die sachen von der ampel waren weg

Dadurch verschwinden doch nicht die Quelltexte :shock:
Immer wenn du das Programm neu kompilierst (sprich startest), wird der Code automatisch wieder auf die Platte geschrieben.
Wie kann der Code denn dann verschwinden?

blumblum 22. Okt 2010 12:31

AW: Kreuzung mit Autos
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das frag ich mich auch :shock:
War nur noch die .exe da,und die nützt ja wenig...

Hänge mal die neue version der ampel an...

blumblum 22. Okt 2010 19:48

AW: Kreuzung mit Autos
 
Hey,
also die autos fahren und halten nun auch,jedoch fahren sie nicht weiter....ich habe :
if (auto3.left=40) and (SRotC.brush.color=clred) then timerauto3.enabled:=false;

Also geht der timer an einer bestimmten stelle aus,wenn das auto auf der position steht.

Aber wie mache ich nun,dass der timer für das auto wieder aktiviert wird?

Wäre top wenn ihr mir helfen könntet...

MfG

Luckie 22. Okt 2010 19:53

AW: Kreuzung mit Autos
 
Ui, das ist schwer, sehr schwer.
Da stellen wir uns mal ganz dumm und sagen das ist eine einfache Ampelkreuzung. Dann fragen wir uns, wann ein Auto fahren darf.

PS: Wer es nicht erkannt hat und für die Jüngeren, das ist aus der Feuerzangelbowle.

Sir Rufo 22. Okt 2010 19:59

AW: Kreuzung mit Autos
 
Ich würde den Timer gar nicht ausschalten.

Wenn rot ist würde ich einfach das Auto nicht bewegen.

Luckie 22. Okt 2010 20:03

AW: Kreuzung mit Autos
 
Oder so.

blumblum 22. Okt 2010 20:06

AW: Kreuzung mit Autos
 
Naja ich fühle ich mich grad sehr dumm....ich habe keine ahnung wie ich des sonst machen soll...mir fällt nur ein,dass ich den timer ein/aus schalte.
Man könnte natürlich auf über x/y arbeiten also :
auto.top := auto.top+dx
aber das hat bei mir nicht geklappt...

Luckie 22. Okt 2010 20:09

AW: Kreuzung mit Autos
 
Zitat:

Zitat von blumblum (Beitrag 1057259)
Naja ich fühle ich mich grad sehr dumm....ich habe keine ahnung wie ich des sonst machen soll...mir fällt nur ein,dass ich den timer ein/aus schalte.

Dann tu das doch. Ausschalten kannst du ihn ja schon. Dann sollte das Einschalten kein Problem sein.

Sir Rufo 22. Okt 2010 20:10

AW: Kreuzung mit Autos
 
Zitat:

Zitat von Luckie;
Oder so.

Eher besser so. Ist dann wie im wahren Leben. Die Ampel ist eine reine Anzeige und hat keinen Einfluß ob ein Fahrzeug sich bewegt oder nicht.
Die Bewegung erfolgt vom Fahrzeug selbst.

Der Timer ist stellvertretend für den Fahrer und bewegt das Fahrzeug weiter wenn wieder grün ist.
Erkennen kann das der Fahrer (Timer) wenn er immer wieder den Status der Ampel überprüft.

Schließlich klopft die Ampel ja auch nicht an die Scheibe "Hallo, grün"
(obwohl das eigentlich nicht schlecht wär)

Luckie 22. Okt 2010 20:26

AW: Kreuzung mit Autos
 
Klingt logisch. Und die Zeiten mit den Hupampeln sind in meinem Alter auch vorbei. :wink:

blumblum 22. Okt 2010 20:29

AW: Kreuzung mit Autos
 
Wenn ich das so mache wie ich den ausgeschalten habe ( if (auto.top=340) and (SGruenB.Brush.color=clgreen) then timerauto1.enabled:=true; ) dann klappt das leider nicht,wäre auch zu leicht gewesen.

Es soll ja nicht so sein wie im echten leben,es soll nur schön aussehen ud funktionieren ;)

Luckie 22. Okt 2010 20:32

AW: Kreuzung mit Autos
 
OK, noch mal zum Mitschreiben. Wann soll das Auto wieder fahren? Wenn die Ampel grün wird. Also aktiviere den Timer wieder, wenn die Ampel auf grün schaltet.

blumblum 22. Okt 2010 20:44

AW: Kreuzung mit Autos
 
Liste der Anhänge anzeigen (Anzahl: 1)
So habs mitgeschrieben ;)

Und auch versucht umzusetzen jedoch geht das nicht....

Sir Rufo 22. Okt 2010 22:07

AW: Kreuzung mit Autos
 
Meine Güte, dass kann sich ja keiner mit ansehen
Delphi-Quellcode:
procedure TForm1.TimerAuto1Timer(Sender: TObject);
begin
  if (auto.top=340) and (SRotB.brush.color=clred) then
    begin
      // Fahrer in der Nase bohren lassen
    end
  else
    begin
      Auto.Top := auto.Top - 1;
      if auto.top < 0 then auto.top := 390;
    end;

end;
Nix mit Timer ein oder ausschalten ... einfach im Timer NIX machen

Luckie 22. Okt 2010 22:30

AW: Kreuzung mit Autos
 
Dein Code ist aber auch nicht gerade eine Ausgeburt von Schönheit. ;)

Delphi-Quellcode:
procedure TForm1.TimerAuto1Timer(Sender: TObject);
begin
  if (auto.top<340) and (SRotB.brush.color=clgreen) then
  begin
    Auto.Top := auto.Top - 1;
    if auto.top < 0 then
      auto.top := 390;
  end;
end;

Sir Rufo 22. Okt 2010 22:54

AW: Kreuzung mit Autos
 
Ich wollte den Code nach Möglichkeit sehr ähnlich lassen und nur etwas umstellen.

Er soll seinen Code ja wiedererkennen


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:23 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