KI für Dummies

Multimedia pur!
perfektopheles

Re: KI für Dummies

Beitrag von perfektopheles »

Hilft dir vllt. dieser Post: http://www.bigbluecup.com/yabb/index.php?topic=31330.0

Dort wurde das Array global gemacht und evtl. statt "int" der Datentyp "short" nehmen.
Beowulf

Re: KI für Dummies

Beitrag von Beowulf »

Klingt schlüssig. Die Variablen für Funktionen werden im Stack gespeichert.

Grosse Strukturen sollten immer ausserhalb des Stacks gespeichert werden, werte Füchsin. Wenn du das gemacht hast, wird das AGS bestimmt auch nicht mehr meckern, wenn die Array-Größe jenseits der 500 liegt! ;) Ausserdem ist es besser für die Geschwindigkeit des Programms, wenn das ganze Array nicht bei jedem Funktionsaufruf neu initialisiert wird.

Auch frage ich mich, wie du auf das Array von anderen Funktionen aus zugreifen wolltest, wenn du dieses aber nur innerhalb einer speziellen Funktion definiert hast. :?
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 »

Klar, der Array darf selbstverständlich nicht im Inneren einer Funktion deklariert werden, sondern am Anfang des room scripts.
Ich konnte ohne Probleme einen 200x200er Array erstellen und ihm Werte zuweisen.

Ein Int belegt 4 byte und eine Funktion kann nur 4 kb für Variablen reservieren, deswegen ist bei 1000 Ints schluss.
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 »

Hmm dann liegt der Fehler wohl darin, dass ichs in eine der Room-Functions gepackt hab. Wie peinlich :oops:
Danke, Adventuretreff! <3
Beowulf

Re: KI für Dummies

Beitrag von Beowulf »

Ein Int belegt 4 byte
Also bei anderen Programmiersprachen sind es 2 Byte. Ist das bei AGS anders?
und eine Funktion kann nur 4 kb für Variablen reservieren, deswegen ist bei 1000 Ints schluss.
Kommt drauf an wie groß der Stack ist. Und wenn der Stack schon von den aufrufenden Funktionen ziemlich belegt ist, kann noch viel eher Schluss sein.
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:
Ein Int belegt 4 byte
Also bei anderen Programmiersprachen sind es 2 Byte. Ist das bei AGS anders?
Die 90er sind vorbei, Beowulf. ;)
http://en.wikipedia.org/wiki/Integer_%2 ... type_names

Das Jan
"If you are the smartest person in the room, you are in the wrong room."
td
Süßwasserpirat
Süßwasserpirat
Beiträge: 344
Registriert: 26.07.2006, 03:57
Wohnort: Dresden-Südvorstadt

Re: KI für Dummies

Beitrag von td »

Ein int kann auch 1337 Bytes belegen, das haengt von einer ganzen Reihe von Faktoren ab, unter anderem Prozessor, Betriebssystem, Programmiersprache und Compiler.
I will not be broken, though I am the one that bleeds.
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 »

Tatsächlich....!? Mann, da bin ich aber platt. Hätt ich ja niiiiiiiie gedacht. Was Du alles weißt! Boah!
Achso, wir sind ja im "für Dummies"-thread.
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 »

Im Room-Script habe ich nun folgendes stehen:

Code: Alles auswählen

// room script file

int start;
int ziel;

zweidim a[200];  

a[0].b[0]=0;

...

und AGS meldet mir beim Test: "unexpected a" :(
Danke, Adventuretreff! <3
Beowulf

Re: KI für Dummies

Beitrag von Beowulf »

Die Strukturdefinition für zweidim fehlt.
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 »

Die hab ich in den Global Script Header gesetzt:

Code: Alles auswählen

struct zweidim {
  int b[200];
};
Danke, Adventuretreff! <3
perfektopheles

Re: KI für Dummies

Beitrag von perfektopheles »

Im Post vom AGS-Forum stand noch was von "export". Funzt es damit?
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 »

Soweit ich weiß, müssen Dinge im Global Script Header nicht exportiert werden, weil sie automatisch in jedem Room-Script stehen. Wenn ich beginne, "a[0]." zu tippen, schlägt mir AGS auch vor, danach b[] einzufügen, es erkennt das gescriptete also an. Nur beim Testlauf danach meint es, a wäre unerwartet.
Danke, Adventuretreff! <3
Beowulf

Re: KI für Dummies

Beitrag von Beowulf »

Wo passiert der Fehler denn? Wirklich in dieser Codezeile?

Code: Alles auswählen

a[0].b[0]=0;
Oder irgendwo anders? Meine telepathischen Fähigkeiten sind etwas eingerostet, daher kann ich dir nicht helfen wenn du nicht mehr Infos schreibst.
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 »

Wie jede andere Variable auch müssen bereits deklarierte a[].b[]s innerhalb einer Funktion ihren Wert zugewiesen bekommen.

Also z.B. im before fadein-Event des Raumes.
Use gopher repellent on funny little man
Antworten