Seite 3 von 4

Re: KI für Dummies

Verfasst: 17.07.2008, 19:44
von DasJan
Dijkstra berechnet nur die kürzesten Wege zu einem Ziel, hier sind aber alle möglichen kürzesten Wege erforderlich. Man kann natürlich für jedes Ziel den Dijkstra aufrufen, das ist dann aber langsamer als einmal Floyd-Warshall.

Das Jan

Re: KI für Dummies

Verfasst: 17.07.2008, 23:42
von DasJan
Hier ist die Datei:
http://www.adventure-treff.de/temp/dasj ... xample.php

Ich glaube aber, deine Matrix ist nicht korrekt. Der Eintrag (k_58, k_11) ist 0, der Eintrag (k_11, k_58) ist aber 1. Du kannst also von k_11 nach k_58 laufen, aber nicht von k_58 nach k_11 (oder umgekehrt).

Das Jan

Re: KI für Dummies

Verfasst: 18.07.2008, 15:42
von DieFüchsin
Danke dir.

Ja, ich dacht mir schon, dass ich da Fehler drin habe, aber so kann ich alles nochmal gut überprüfen.

Re: KI für Dummies

Verfasst: 20.07.2008, 01:04
von DieFüchsin
So, nun habe ich dank DasJan endlich die errechneten Werte für Abstand und Predecessors.

Allerdings kann ich in eindimensionalen Arrays ja nicht

Code: Alles auswählen

matrix[0][1]
schreiben, oder?

Ich müsste also alles in einen Array reinquetschen: 107*107 Stellen ergäbe das dann.
Leider macht AGS da aber nicht mit, das lässt nur maximal 500 Stellen zu.

Kann ich das mit eindimensionalen Arrays jetzt überhaupt irgendwie machen oder brauche ich dazu unbedingt zweidimensionale?

Re: KI für Dummies

Verfasst: 20.07.2008, 19:34
von Beowulf
Hast du es schon eimal mit einem Feld aus jeweils 107 Feldern mit je 107 Werten versucht? Also einem Array-Array? ;)

Re: KI für Dummies

Verfasst: 20.07.2008, 22:37
von DieFüchsin
Öh wie meinst du das? 8-[

Re: KI für Dummies

Verfasst: 20.07.2008, 22:53
von Beowulf
Sowas hier:

Code: Alles auswählen

$feld = array (
    array (...),
    array (...),
    ...
);
Ein Feld, wo jedes Element wiederum ein Feld ist.

PS: Ist die Feldlänge bei AGS wirklich auf 500 begrenzt? Warum?

Re: KI für Dummies

Verfasst: 21.07.2008, 08:40
von DasJan
Beowulf hat geschrieben:Sowas hier:

Code: Alles auswählen

$feld = array (
    array (...),
    array (...),
    ...
);
Sicher, dass AGS das unterstützt? Sieht für mich eher nach PHP aus.

Das Jan

Re: KI für Dummies

Verfasst: 21.07.2008, 10:50
von DieFüchsin
Keine Ahnung, ob AGS das unterstützt. Ich werd mich mal an meine freundlichen Profis im AGS-Forum wenden.
Beowulf hat geschrieben:
PS: Ist die Feldlänge bei AGS wirklich auf 500 begrenzt? Warum?

Keine Ahnung, warum, aber als ich einen Spieltestlauf starten wollte, mokierte sich AGS mit einer Fehlermeldung über die hohe Anzahl an Einträgen im Array und meinte, 500 wären das Maximum.

Re: KI für Dummies

Verfasst: 21.07.2008, 12:05
von perfektopheles
Ich würde den Post von Rocco genauer durchlesen ;)

http://www.adventure-treff.de/forum/vie ... 31#p291231

Re: KI für Dummies

Verfasst: 21.07.2008, 13:07
von KhrisMUC
Mit einem kleinen "Trick" kann man in AGS ohne weiteres zweidimensionale Arrays benutzen:

Code: Alles auswählen

//header 

struct zweidim {
  int b[200];
};

//script

zweidim a[200];

...

// Verwendung:

  a[34].b[162] = 2;
Edit:
Bild

Wie hier zu sehen hat jedes Feld eine eindeutige 2D-Koordinate, über die man gleich durch einfache Multiplikation die Bildschirmkoordinaten der Feldmitte ausrechnen kann.
Achja: Viel Spass beim Zeichnen der Walkbehinds ;)

Re: KI für Dummies

Verfasst: 21.07.2008, 13:26
von DieFüchsin
@perfektopheles: Rocco schrieb aber auch, dass das Modul nicht mehr verfügbar ist.


@KhrisMUC: Danke, dass du mir die Mühe, einen neuen Thread zu erstellen, abgenommen hast und danke für deine schnelle Lösung! Werds gleich heut abend ausprobieren.

Da die Figuren auf dem Feld sehr klein sein werden, werden die Walkbehinds wohl weniger Probleme machen, denke ich.

Re: KI für Dummies

Verfasst: 27.07.2008, 19:07
von DieFüchsin
Es ist wirklich sehr schade - nachdem ich jetzt so lange an der Umsetzung der Pfadfindung gehangen habe, kann ich sie letztendlich doch nicht umsetzen. AGS beschwert sich über zu viel Datenmaterial.

Mein Dank gilt allen, die mir geholfen haben. Ich denke, die Arbeit ist dennoch nicht umsonst gewesen.

Re: KI für Dummies

Verfasst: 27.07.2008, 19:09
von perfektopheles
Geht es weger der großen Arrays nicht? Wäre ja sehr schade.

Re: KI für Dummies

Verfasst: 27.07.2008, 20:07
von DieFüchsin
Nach khrismucs Hinweis habe ich alles in diese Arrays gespeichert: a[0].b[0]=1 bis a[107].b[107]=2

doch AGS meldete mir: "stack overflow, attempted grow to 160004 bytes". Was das nun genau bedeutet, weiß ich nicht, aber ich gehe davon aus, dass es einfach zu viel Datenmenge ist.