Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Selbstständiges "fahren" von Images


WormHole - Mi 28.06.06 11:30
Titel: Selbstständiges "fahren" von Images
Hallö,

ich "arbeite" gerade an einem Projekt in dem es eine Ampelkreuzung gibt und dort Autos fahren. Am Anfang habe ich es so gemacht, dass ich die Autos einfach von einem Bildrand zum anderen schicke und halt auf die Ampelphasen geachtet habe. Aber da das ziemlich sch**** vom Stil her ist und auch so unpragmatisch ist, wollte ich wohl gerne, das die Autos selbst entscheiden wo sie herfahren... Also sozusagen eine KI erstellen. Leider habe ich im Moment noch keine Ahnung wie ich das anstellen soll -_-


Gruß WormHole


azubi_20 - Mi 28.06.06 11:55


Quelltext
1:
2:
3:
fahr geradeaus
wenn kreuzung dann zufall (links, rechts, geradeaus)
wenn sackgasse dann dreh um


ist zwar nicht intelligent, aber dafür recht simpel zu programmieren


WormHole - Mi 28.06.06 13:07

Wie kann ich denn bei einem Image sagen, fahr geradeaus?

Links oder rechts geht ja simpel mit image.left und .top aber geradeaus?


Spaceguide - Mi 28.06.06 13:09

Ich würde es so machen:

1) Jedem Auto einen zufälligen, befahrbaren Punkt auf der Karte zuordnen
2) Mittels A*-Algorithmus die Wegplanung vornehmen
3) Wenn Ziel erreicht, einfach neuen Zielpunkt aussuchen


crowley - Mi 28.06.06 13:21

user profile iconWormHole hat folgendes geschrieben:
Wie kann ich denn bei einem Image sagen, fahr geradeaus?

Links oder rechts geht ja simpel mit image.left und .top aber geradeaus?


links kannst du doch schon, rechts kannst du auch schon... und bei geradeaus bewegst du es weiter in die gleiche richtung wie zuvor...


bewegung auf der "karte" nach links: pic.left := pic.left - x;
bewegung auf der "karte" nach rechts: pic.left := pic.left + x;
bewegung auf der "karte" nach oben: pic.top := pic.top - y;
bewegung auf der "karte" nach unten: pic.top := pic.left + y;


WormHole - Mi 28.06.06 13:22

user profile iconSpaceguide hat folgendes geschrieben:
Ich würde es so machen:

1) Jedem Auto einen zufälligen, befahrbaren Punkt auf der Karte zuordnen
2) Mittels A*-Algorithmus die Wegplanung vornehmen
3) Wenn Ziel erreicht, einfach neuen Zielpunkt aussuchen


Hmm, was ist denn dieser A*-Algorithmus? Wo kann ich den herbekommen? Also zur Info: Ich bin nicht sonderlich gut in Delphi :P


Spaceguide - Mi 28.06.06 13:26

user profile iconWormHole hat folgendes geschrieben:

Hmm, was ist denn dieser A*-Algorithmus? Wo kann ich den herbekommen? Also zur Info: Ich bin nicht sonderlich gut in Delphi :P


Keine Angst, Delphi-Forum.de ist fast ausschliesslich ein Anfängerforum. Bei Wikipedia (http://de.wikipedia.org/wiki/A%2A) findest du eine gute Erklärung.


crowley - Mi 28.06.06 13:27

user profile iconWormHole hat folgendes geschrieben:
user profile iconSpaceguide hat folgendes geschrieben:
Ich würde es so machen:

1) Jedem Auto einen zufälligen, befahrbaren Punkt auf der Karte zuordnen
2) Mittels A*-Algorithmus die Wegplanung vornehmen
3) Wenn Ziel erreicht, einfach neuen Zielpunkt aussuchen


Hmm, was ist denn dieser A*-Algorithmus? Wo kann ich den herbekommen? Also zur Info: Ich bin nicht sonderlich gut in Delphi :P


spaceguide meinte damit sicherlich den algorithmus, den user profile iconazubi_20 weiter oben schon beschrieben hatte:

user profile iconazubi_20 hat folgendes geschrieben:


Quelltext
1:
2:
3:
fahr geradeaus  
wenn kreuzung dann zufall (links, rechts, geradeaus)  
wenn sackgasse dann dreh um



Spaceguide - Mi 28.06.06 13:32

user profile iconcrowley hat folgendes geschrieben:

spaceguide meinte damit sicherlich den algorithmus, den user profile iconazubi_20 weiter oben schon beschrieben hatte:


Falsch!

Hier eine Implementierung in Delphi: http://www.hanisch-software.de/sonstiges/pathfinding.php


[emptyBox] - Mi 28.06.06 13:54

hi,

Also wenn das ein anspruchsvolles Projekt werden soll, sollte man sich überlegen ob sich ein MapEditor lohnt. Durch diesen könnte man dann Wegpunkte (sowie natürlich auch das Level selber) setzen.
--> wenns mal auf ein GTA hinauslafen sollte ^^


WormHole - Mi 28.06.06 13:59

Nur wie kriege ich den Pathfinder Algorithmus bei mir hinein?

EDIT: Oder soll ich den nicht benutzen?


WormHole - Mi 28.06.06 16:44

Könnt ihr mir noch schnell helfen? Ich muss gleich wech und wollte wenigstens noch wissen wie ich das machen soll... *push*