Problem mit Pathfind.dll

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Problem mit Pathfind.dll

Beitrag von jojo1541 »

Tag auch.
auf Fluid Bytes hinweis hab ich mir die Pathfind.dll auf http://frabbing.bplaced.net/ runtergeladen und habe jetzt ein Problem.


Ich weiß nicht, ob ich etwas falsch mache, aber irgendwie gibt mir die Dll dauernd aus, dass sie keinen Weg gefunden hat. (Rückgabewert -1 heißt fehler, 0 kein weg gefunden und >0 ist die Anzahl der gefundenen Wege)

Code:

Code: Alles auswählen

;W : Zeiger auf einen Speicherbereich mit der Levelmatrix (Bytes)
;S : Long - Offset des Startfelds  Formel: X-Position + (Y-Position * Breite des Levels)
;Z : Long - Offset des Zielfelds   formel: siehe oben
;C : Long - Bytes des freien Felds (0-255)
;B : Long - Breite des Levels
;H : Long - Höhe des Levels
;P : Zeiger auf einen Speicherbereich für die gefundenen Wegpunkte
;M : Zeiger auf einen Speicherbereich mit Terraindaten (Bytes), oder 0
;Z : Long - Zufalls-Komponente
;- : Long - 0 (nicht belegt)
;F : Long - Flags
;R : Long - Registriernummer 

*buffer = AllocateMemory(1024)


S.l = 6
Z.l = 24
C.l = 0
B.l = 5
H.l = 5
ZU.l = 0
G.l = 0
F.l = 2
R.l = 0

If OpenLibrary(0,"pathfind.dll")

  Debug CallFunction(0,"ki_FindWay",?mapdata,S,Z,C,B,H,*buffer,0,ZU,G,F,R)
  
EndIf



DataSection
mapdata:
  Data.b 1,1,1,1,1
  Data.b 1,0,0,0,1
  Data.b 1,1,0,1,1
  Data.b 1,0,0,0,1
  Data.b 1,1,1,1,1 
EndDataSection
Ich denke mal, dass ich irgendwo was falsch mache, sonst würde die Dll ja einen Weg finden...

Und ja, die Library wird geöffnet.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Ich kenne zwar nicht die Lösung, aber die Variablennamen sind ja mal erstklassig gewählt. :?
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

hab ich nur gemacht, weil sie so (bis auf ZU, was für das zweite Z(Zufall) steht) genau den Buchstaben der obigen Erklärung entsprechen.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Ok, ich habs gard mal ausprobiert. Ganz simpel. Du hast den falschen Start und Zielpunkt. Beide liegen auf einer 1. Die 1 bedeutet aber "kein Durchgang" das heisst die KI sitzt schon am Startpunkt fest. Leg sie auf Offsets mit 0.

z.b. 7 und 17

Bei 7 und 17 wären Start und Endpunkt so:
S = Startpunkt
E = Endpunkt

Code: Alles auswählen

  Data.b 1,1,1,1,1
  Data.b 1,S,0,0,1
  Data.b 1,1,0,1,1
  Data.b 1,E,0,0,1
  Data.b 1,1,1,1,1
Nur zum verständnis der Offsets. Du kannst einfach von vorne abzählen.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

Ich dachte mir doch, dass ich irgendwas saudummes falsch gemacht habe habe... :oops:

Danke Thorium
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Antworten