Du bist nicht angemeldet.

Werbeanzeige

BlackNetworkBit

Treue Seele

  • »BlackNetworkBit« ist der Autor dieses Themas

Beiträge: 102

Wohnort: Berlin

Beruf: Schüler

  • Private Nachricht senden

1

10.04.2012, 19:18

Weg Findung

hi leute,
ich wollte in eins meiner Spiele eine Person in einen Raster bis zu einen bestimmten Bereich laufen lassen doch ürgend wie schaffe ich es nicht
wie zb soll ich es machen das sie nicht in Gassen rein geht oder etwas anderes blödes macht ?
auf jeden fall ist meine "map" so aufgebaut :

Quellcode

1
2
3
4
5
6
Dim Map as new List(of Rectangle)
for y = 0 to 40 * 25 step 25
  for x = 0 to 40 * 25 step 25
    Map.add(new Rectangle(x,y,25,25))
  next
next

jetzt will ich von der Kordinate (20,20) zu (30,50) aber ohne zumbeispiel feld(29,50) zu übergehen.
gibt es dafür eine lösung ich habe mir schon den Dijkstra-Algorithmus angekuckt aber so gut wie nichts verstanden :dash:
hoffe ihr könnt mir helfen
mfg Blacknetworkbit

2

10.04.2012, 19:21

Wenn du es nicht verstehst kannst du auch was fertiges nehmen, wie z.B. MicroPather (A*). :)
Edit: Du kannst auch das hier A* Pfadfindung für Anfänger oder/und das hier durchlesen.
Edit2: Entschuldigung wegen meiner Dummheit: MicroPather ist nicht für Visual Basic.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »C++-Coder« (10.04.2012, 19:29)


BlackNetworkBit

Treue Seele

  • »BlackNetworkBit« ist der Autor dieses Themas

Beiträge: 102

Wohnort: Berlin

Beruf: Schüler

  • Private Nachricht senden

3

10.04.2012, 19:30

A* Pfadfindung für Anfänger ist es doch immer noch möglich in Gassen zu landen oder ?
MicroPather will ich nicht nehmen sonst verstehe ich es ja nie :|
mfg Blacknetworkbit

4

10.04.2012, 19:33

A* Pfadfindung für Anfänger ist es doch immer noch möglich in Gassen zu landen oder ?
Das mit dem Gassen landen hängt nicht mit dem Algorithmus zusammen. Das hängt mit der Karte zusammen, weil wenn z.B. du dich in einem geschlossenen Raum befindest, kannst du nicht einen Weg nach draußen finden.

5

10.04.2012, 19:37

Habe mir gerade http://www.policyalmanac.org/games/aStarTutorial_de.html angeschaut. Soweit ich es verstehe kommst du damit doch in keine Gassen. Du müsstest halt nur "zurück" gehen. Sobald du an einen Ort bist, wo es nurnoch zurück geht, setz den doch auf "nicht begehbar".

David Scherfgen

Administrator

Beiträge: 10 197

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

10.04.2012, 19:41

Bevor du weg findest, musst du erstmal hin finden!

7

10.04.2012, 19:53

Habe es dir mal Bildlich dargestellt:


(Link)


Du suchst dir den passenden Weg bis du wo anstehst. Also gehst du 1nen Schritt zurück und schaust wie es jetzt besser wäre.

Da bis zum Anfang kein besserer Weg kommt gehst du jetzt nach oben weiter.


(Link)


Hoffe, du verstehst was ich meine, wenn nicht mach ich dir noch einmal schöne Bilder :)

BlackNetworkBit

Treue Seele

  • »BlackNetworkBit« ist der Autor dieses Themas

Beiträge: 102

Wohnort: Berlin

Beruf: Schüler

  • Private Nachricht senden

8

11.04.2012, 11:44

Ah ok ich versuche es mal , ich glaube es hat
mich weiter gebracht ich kucke jetzt mal ob ich meine gedanken
auch in eine function verwirklichen kann :thumbup:
auf jeden fall danke XD

mfg Blacknetworkbit

Legend

Alter Hase

Beiträge: 745

Beruf: Softwareentwickler

  • Private Nachricht senden

9

11.04.2012, 13:12

Vielleicht ist der http://de.wikipedia.org/wiki/Dijkstra-Algorithmus erstmal etwas einfacher zu implementieren als A*. Wobei die zwei sich schon verdammt ähnlich sind.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

Schorsch

Supermoderator

Beiträge: 5 185

Wohnort: Wickede

Beruf: Student

  • Private Nachricht senden

10

11.04.2012, 13:12

Hier ist der Dijkstra eigentlich gut verständlich. Achte zuerst mal weniger auf den Code der dort steht. Versuche erst mal grob die Idee dahinter zu verstehen. Dazu sind weiter unten ein paar gute Graphiken. Damit sollte es kein Problem sein. Wenn du dir dann sicher bist dass du den Algorithmus verstanden hast kannst du dir den Code anschauen. Vielleicht auch von einer anderen Seite.
A* ist eine Erweiterung vom Dijkstra. Es wäre einfacher zuerst Dijkstra zu verstehen und sich dann A* anzugucken, da es wirklich Grundlegend ist. Eigentlich alles ganz einfach.
Jetzt wird ja meistens von Graphen mit Knoten und Kanten gesprochen. Wenn du dein Spiel Tilebasiert machen möchtest wie du ja geschrieben hast, dann sind deine einzelnen Kacheln die Knoten. Du hast keine wirklichen Kanten, aber du kannst sie dir zwischen den Kacheln vorstellen. Wenn du dann die Wege zwischen Kacheln bestimmen willst, guckst du welche Nachbarkacheln begehbar sind. Zwischen diesen bestehen dann quasi deine Kanten. Das musst du jetzt noch nicht unbedingt verstehen. Wenn du den Dijkstra verstanden hast dann kannst du da noch mal weiter nachforschen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige