verkehr simulieren..
Übersicht

da_pollerBetreff: verkehr simulieren.. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich hab im moment ein kleines denkproblem..
ich versuche verkehr zu simulieren(autos auf straßen) die karte ansich ist ein tilefeld mit den werten 0(keine straße) und 1(straße) der dazu im endeffekt benötigte frame ist ein einem extra teil des maparrays gespeichert(also an die information zu kommen welches tile exat heir ist stellt kein problem dar) nur weiß ich im moment nicht genau wie ich einige dinge dazu realisieren soll z.b.: soll ich die autos per tileabfrage fahren lassen oder ein waypoint system(jeden anfahrbaren punkt wie in egoshootern für bots) verwenden. und auch für die verkehrsregeln(ampeln, rechts vor links,vorfahrt- vorfahrt gewähren) fällt mir nicht recht ein wie ich das am besten prüfen könnte.. gleich vorweg ja das ganze sind dehr umfassende fragen und für erklärungen müsst ihr nicht ins letzte detail gehen aber bin für jeden rat idee oder kommentar(außer sinnlose) dankbar.. lg poller |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Coole Leute benutzen den AStar Pathfinding Algo. | ||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nun eine wegfindung habe ich nciht vor.. die autos sollen zufallsgesteuert einfach rumfahren (vorerst)
nur weiß ich noch nicht wie ich die berechnung der fahrt vonstatten gehen lassen soll.. ich hätte im ersten ansatz waypoints(type) gemacht jedoch kommen da sehr schnell 100-1000 einträge zusammen und die durchprüfen glaube ich ist nciht soo schnell.. drum dachte ich gibt es vllt eine einfachere lösung bzw irgendwas sas mir eine idee beschehrt... das fahren seh ich jetzt noch nciht DAS große problem eher dann bei verkehrszeichen(geschwindigkeitbeschrenkungen und vor allem die verschiedenen vorfahrtsregeln(abfrage zwischen den autos[auch bzgl abstand zum vorausfahrenden]) |
||
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Machs doch so:
Mit den 1 und 0 wird markiert wo eine oder keine straße ist, du lässt ein auto halt immer grade ausfahren und überprüfst jedes danebenliegende Feld ob es eine Straße ist, wenn ja dann lass irgendwie eine Zufallsrichtung festlegen und lass dann das Auto in diese Richtung weiter fahren ![]() |
||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
womit die idee der waypoints abgehakt wäre..
jetzt mus ich mir nur noch gedanken über die herschenden verkehrsregeln (ampel rvl und vorfahrsschilder) machen.. aber vllt hat da noch jmnd den ein oder anderen tipp.. |
||
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
[OT] Das ist eine coole Idee, könnte es glatt als Wettbewerb geben! ![]() Wegen des Fahrens kannst du ja deine Map-Daten noch optimieren, statt 0 und 1 noch zb 2 und 3 für die maximalen Geschwindigkeiten sowie 4 für Vorfahrtsstraße und 5 für Autobahn. Oder so in etwa.... |
||
-~= real coders just code in binary =~- |
levi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mmh ich würd in Fahrtrichtung die 3 vor dem Fahrzeug liegenden Felder prüfen.
Links vor dem Fahrzeug Mitte vorn und Rechts vorn Steht rechts nen Fahrzeug -> Regeln prüfen -> gegebenenfalls warten usw.. Regeln prüfen. Verkehrszeichen ja/nein wenn ja -> betrifft es mich ja/nein wenn nein -> rechts-vor-links kommt ganz schön was zusammen. Ich schreib mir immer erstmal den logischen Ablauf auf. Hoffe es hilft dir n bisschen weiter. |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
https://www.blitzforum.de/foru...hp?t=25026
Gleich der zweite Post, vielleicht hilft er (nicht nur der Post) dir. |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
levi hat Folgendes geschrieben: mmh ich würd in Fahrtrichtung die 3 vor dem Fahrzeug liegenden Felder prüfen.
Links vor dem Fahrzeug Mitte vorn und Rechts vorn Steht rechts nen Fahrzeug -> Regeln prüfen -> gegebenenfalls warten usw.. Regeln prüfen. Verkehrszeichen ja/nein wenn ja -> betrifft es mich ja/nein wenn nein -> rechts-vor-links kommt ganz schön was zusammen. die idee ansich ist schonma gar nciht schlecht...werd das mal ausarbeiten und FALS ich nochmal wo hänge meld ich mcih.. ps: danke für den link bin ich wohl doch nciht der erste der sowas macht aber an diese perfektion von D werd ich nciht rankommen außer mich trifft heute abend noch der blitz der weisheit.. aber dennoch mach ich mal weiter ![]() Ich schreib mir immer erstmal den logischen Ablauf auf. Hoffe es hilft dir n bisschen weiter. |
||
![]() |
pirahni |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok: mein Code:Code: if leftside=1 then auto_links_drehn elseif rightside=1 then auto_rechts_drehn elseif infront=1 then if (ampel=rot) or (behinderung) then wait else auto_forward elseif behind=1 then auto_um_drehn else auto_warten endif Bei behinderung ist sowas wie baustelle, anderes auto und so gemeint. rechts vor links ist nicht bei. kannst aber bei behinderung rein machen ^^ So würd ichs mache, kann aber nicht sage obs klappt^^ |
||
Leicht verständliche Informatiktutorials:
http://www.youtube.com/VascoLange |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
pirahni hat Folgendes geschrieben: Ok: mein Code:Code:
if leftside=1 then auto_links_drehn elseif rightside=1 then auto_rechts_drehn elseif infront=1 then if (ampel=rot) or (behinderung) then wait else auto_forward elseif behind=1 then auto_um_drehn else auto_warten endif Bei behinderung ist sowas wie baustelle, anderes auto und so gemeint. rechts vor links ist nicht bei. kannst aber bei behinderung rein machen ^^ So würd ichs mache, kann aber nicht sage obs klappt^^ ich verwende types und so ansich sieht mir der code nach einem einzelnen auto aus und nich wie ich geplant 50-300 autos... |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit Wegfindung könntest du ihnen ein zufälliges Ziel geben und sie dann über den Algo dorthin fahren lassen. | ||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich werde an jeder kreuzung die freie wahl lassen ob gerade aus oder abbiegen.. leider bin ich im moment körperlich nicht zut beisammen woraufhin meine arbeit sich auf handgeschriebene codes handelt.. | ||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
da_poller hat Folgendes geschrieben: ich verwende types und so ansich sieht mir der code nach einem einzelnen auto aus und nich wie ich geplant 50-300 autos... das war ja auch nur pseudocode für ein einzelnes auto, was halt immer die lage checkt und schaut wie's mit den anderen autos aussieht...die autos würde ich aber lieber in einem array speichern als in der globalen typelist, da es sonst ewig dauert für jedes auto zu schaun ob vor ihm frei ist |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
theotheoderich |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei TheoTown (Isometrisch) mache ich es ähnlich wie levi.
Viele Autos fahren dort zufallsgesteuert. Folgendes wird für den weiteren Fahrweg überprüft: - 1 Feld vorne in Fahrtrichtung - 1 Feld vorne in Fahrtrichtung und 1 Feld links - 1 Feld vorne in Fahrtrichtung und 1 Feld rechts Es dürfen nicht nur die Felder direkt rechts/links neben dem Fahrzeug überprüft werden, sondern immer ein Feld weiter vorne in Fahrtrichtung (wichtig für Verkehrsregeln). Die Autos werden bei mir mittels Types verwaltet in Verbindung mit Mapdaten in einem DIM-Feld. Ein Autotype teilt also immer dem DIM-Feld mit, wo es sich gerade befindet. Quasi: Postition z. B. Auto 1 autox=10 autoy=16 Auto teilt DIM Feld seine Position mit mapcar(autox,autoy)=1 Andere Autos überprüfen nun anhand des DIM-Feldes (der Mapdaten), ob das Feld vor ihnen frei ist. Vorteil, man braucht nicht alle Autotypes überprüfen, ob ein Feld in Fahrtrichtung frei ist. Spart enorm Rechenzeit, weil man nicht alle Typeeinträge mit allen anderen gegenchecken muss. So ermöglicht es auch sehr viele Autos auf der Karte fahren zu lassen. autox=43 autoy=38 Fahrtrichtung von links unten nach rechts oben (Y Wert verkleinert sich): if mapcar(autox,autoy-1)=0 dann Strasse frei Auch der Strassenverlauf wird so überprüft: if maproad(autox,autoy-1)=1 and maproad(autox,autoy-2)=0 and maproad(autox-1,autoy-1)=1 and maproad(autox+1,autoy-1)=0 wäre dann eine Kurve nach links. Genauso werden Kreuzungen überprüft (in diesem Fall rechts ohne Verkehrszeichen): if maproad(autox+1,autoy-1)=1 and mapcar(autox+1,autoy-1)=1 Also wenn rechts in Fahrtrichtung eine Strasse ist und auf dem Feld ein Auto ist, was dem ankommenden Fahrzeug in die Quere kommen würde, dann wird das ankommende Fahrzeug angehalten (Rechts vor Links halt). Im Prinzip kann ich für jedes Strassenfeld auch die max. Geschw. festlegen. 1=normale Autogeschw. (rund 50 km/h), 0.5=25 km/h, 2=100 km/h Bei jeder Fahrzeugtypesberechnung autogeschw=autogeschw*mapgeschw(autox,autoy) Natürlich verwende ich etwas andere Variablen, aber das soll nur kurz zeigen, wie ich es bei mir vom Prinzip gemacht habe. |
||
Gruß
TheoTheoderich -- The box label said, "Requires Windows XP or better.", so I bought an Amiga Computer. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group