Hallo liebes C-Sharp Forum.
ein Objekt wandert von a nach b und nimmt dabei den kürzersten weg.
Z.B startet es von a: x= 0 , y=0 und geht nach b = x= 500 , y=400
Wie kann ich auslesen welche x und y das objekt in der zeit in der es von a nach b gegangen ist, bereits schon hinterlegt hat.
Also dadurch das es den kürzesten weg geht. wird es ja nicht alle x 500px & 400pxl durchlaufen.
Es geht darum ein Hindernis zu erkennen. Wenn ein hindernis in dem Bereich ist soll das objekt es umlaufen.
hoffe ihr versteht mein anliegen.
lg
Hast dir ja geleich mal eines der Kompliziertesten Dinge ausgesucht: Wegfindung.
Meinst jetzt welche punkte das objekt passiert hat? Dann mach doch nen Timer der alle 10 millisekuden schaut wo das objekt gerade steht und speicher dir alle punkte.
Wenn es wirklich um wegfindung geht würde ich dir mal A* Pfadfindung für Anfänger empfehlen
hi danke
das mit dem timer geht ned, ich hab nur start und finish vom objekt. kann nicht abfragen wo die aktuelle position ist.
und ich hab die positionen der hindernisse.
Deswegen auch die frage, ob man vorher schon ausrechnen kann welche x und y das objekt passiert um nach b zu kommen.
Ich würde erstmal schauen, ob eine Gerade von a nach b das Hindernis trifft. Wenn nicht ist das der kürzeste Weg. Wenn die Gerade das Hinderniss trifft, dann vergleichst du Umlaufweg links mit Umlaufweg rechts.
Hallo informant,
Deswegen auch die frage, ob man vorher schon ausrechnen kann welche x und y das objekt passiert um nach b zu kommen.
ja, kann man. Desert Fox hat sowohl das passende Stichwort, als auch einen guten Link für den ersten Einstieg gepostet. Damit solltest du weiterkommen.
Hallo Christoph K.,
für die Wegfindung gibt es gute und ausgereifte Algorithmen, die man einfach benutzen kann und sollte. Da wäre es suboptimal, wenn man sich selber was zusammen bastelt.
herbivore
hallo
mein problem is einfach
alle positionen von a nach b zu erhalten in einer geraden linie
Momentan sieht mein algorithmus so aus:
(siehe im Anhang bild1)
der code dazu->
Point A = new Point(0, 10);
Point B = new Point(20, 15);
List<Point> weg = new List<Point>();
while ( A != B ) {
if ( A.X != B.X ) {
if ( A.X < B.X )
A.X++;
else
A.X--;
}
if ( A.Y != B.Y ) {
if ( A.Y < B.Y )
A.Y++;
else
A.Y--;
}
weg.Add(new Point(A.X, A.Y));
wie bekomme ich das so hin wie in Bild2
(siehe im Anhang bild2)
Beim nächsten Mal die Bilder bitte nicht packen, sondern direkt anhängen. Siehe [Hinweis] Wie poste ich richtig? Punkt 6.1.