![]() |
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 |
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 |
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
|
Re: Kreuzung mit Autos
Zitat:
Zitat:
mfg, Ratte |
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 |
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 :) ) |
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?
|
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 |
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 |
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 |
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:
|
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.. |
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 :? :( |
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 |
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 |
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.
|
AW: Kreuzung mit Autos
Zitat:
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. |
AW: Kreuzung mit Autos
Zitat:
Zitat:
|
AW: Kreuzung mit Autos
Zitat:
|
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 |
AW: Kreuzung mit Autos
Zitat:
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? |
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... |
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 |
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 ![]() |
AW: Kreuzung mit Autos
Ich würde den Timer gar nicht ausschalten.
Wenn rot ist würde ich einfach das Auto nicht bewegen. |
AW: Kreuzung mit Autos
Oder so.
|
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... |
AW: Kreuzung mit Autos
Zitat:
|
AW: Kreuzung mit Autos
Zitat:
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) |
AW: Kreuzung mit Autos
Klingt logisch. Und die Zeiten mit den Hupampeln sind in meinem Alter auch vorbei. :wink:
|
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 ;) |
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.
|
AW: Kreuzung mit Autos
Liste der Anhänge anzeigen (Anzahl: 1)
So habs mitgeschrieben ;)
Und auch versucht umzusetzen jedoch geht das nicht.... |
AW: Kreuzung mit Autos
Meine Güte, dass kann sich ja keiner mit ansehen
Delphi-Quellcode:
Nix mit Timer ein oder ausschalten ... einfach im Timer NIX machen
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; |
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; |
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 20:54 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-2025 by Thomas Breitkreuz