KI für Dummies

Multimedia pur!
Benutzeravatar
DasJan
Adventure-Treff
Adventure-Treff
Beiträge: 14683
Registriert: 17.02.2002, 17:34
Wohnort: London
Kontaktdaten:

Re: KI für Dummies

Beitrag 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
"If you are the smartest person in the room, you are in the wrong room."
Benutzeravatar
DasJan
Adventure-Treff
Adventure-Treff
Beiträge: 14683
Registriert: 17.02.2002, 17:34
Wohnort: London
Kontaktdaten:

Re: KI für Dummies

Beitrag 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
"If you are the smartest person in the room, you are in the wrong room."
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Re: KI für Dummies

Beitrag 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.
Danke, Adventuretreff! <3
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Re: KI für Dummies

Beitrag 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?
Danke, Adventuretreff! <3
Beowulf

Re: KI für Dummies

Beitrag von Beowulf »

Hast du es schon eimal mit einem Feld aus jeweils 107 Feldern mit je 107 Werten versucht? Also einem Array-Array? ;)
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Re: KI für Dummies

Beitrag von DieFüchsin »

Öh wie meinst du das? 8-[
Danke, Adventuretreff! <3
Beowulf

Re: KI für Dummies

Beitrag 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?
Benutzeravatar
DasJan
Adventure-Treff
Adventure-Treff
Beiträge: 14683
Registriert: 17.02.2002, 17:34
Wohnort: London
Kontaktdaten:

Re: KI für Dummies

Beitrag 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
"If you are the smartest person in the room, you are in the wrong room."
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Re: KI für Dummies

Beitrag 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.
Danke, Adventuretreff! <3
perfektopheles

Re: KI für Dummies

Beitrag von perfektopheles »

Ich würde den Post von Rocco genauer durchlesen ;)

http://www.adventure-treff.de/forum/vie ... 31#p291231
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: KI für Dummies

Beitrag 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 ;)
Use gopher repellent on funny little man
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Re: KI für Dummies

Beitrag 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.
Danke, Adventuretreff! <3
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Re: KI für Dummies

Beitrag 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.
Danke, Adventuretreff! <3
perfektopheles

Re: KI für Dummies

Beitrag von perfektopheles »

Geht es weger der großen Arrays nicht? Wäre ja sehr schade.
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Re: KI für Dummies

Beitrag 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.
Danke, Adventuretreff! <3
Antworten