Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-01-2004, 18:20   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2001
Beiträge: 12
private Variablen fuer Funktion

Ich versuche momentan den MiniMax-Alghoritmus fuer ein Spiel mit Flash zu realisieren bin dabei ueber ein Problem gestolpert:
ActionScript:
  1. _global.ende=2;
  2. _global.tiefe=0;
  3.  
  4. function maxWert(zustand){
  5.   folgeZustandsArray=new Array(); //<--- Problemkind
  6.   if(_global.ende<_global.tiefe){
  7.     return true;
  8.   }else{
  9.     _global.tiefe++;
  10.     folgeZustandsArray = getFolgeZustaende(zustand);
  11.     for(i=0 ; i<folgeZustandsArray.length ; i++){
  12.       minWert(folgeZustandsArray[i]);
  13.     }
  14.     _global.tiefe--;
  15.   }
  16. }
  17.  
  18.  
  19. function minWert(zustand){ 
  20.   folgeZustandsArray=new Array(); //<--- Problemkind
  21.   if(_global.ende<_global.tiefe){
  22.     return true;
  23.   }else{
  24.     _global.tiefe++;
  25.     folgeZustandsArray = getFolgeZustaende(zustand);
  26.     for(i=0 ; i<folgeZustandsArray.length ; i++){
  27.       maxWert(folgeZustandsArray[i]);
  28.     }
  29.     _global.tiefe--;
  30.   }
  31. }

Das Problem ist dieser folgeZustandsArray. Er wird in maxWert() gefuellt. Nachdem maxWert() dann aber minWert() aufgerufen hat, ist er leer bzw. dann mit dem folgeZustandsArray der minWert()-Funktion gefuellt. Wird dann wieder maxWert() aus minWert() aufgerufen kann die for-Schleife in maxWert() natuerlich nicht richtig funktionieren.
Dies liegt daran das der Array im _level0/_root abgelegt wird und nicht jeder rekursiv aufgerufenen Funktion ihr eigener Array zugeordnet wird.
Ich habe schon alle folgeZustandsArray durch this.folgeZustandsArray ersetzt.

Ist es irgendwie moeglich die Variable nur in der sie verwendenden Funktion zu deklarieren, wie es z.Bsp. in PHP der Fall ist (hier muss eine globale Variable ja auch erst mit global() in eine Funktion geholt werden)?

Vielen ergebensten Dank


P.S. Der Code macht natuerlich so wie er dasteht nicht viel Sinn, soll aber das Problem etwas veranschaulichen...
Sollte jmd. schoneinmal mit MinMax (alfa,beta)-Alghoritmus und Flash gearbeitet hat wuerde es mich freuen wenn er etwas aus seiner Erfahrungskiste preisgibt, vielleicht sogar einen kleinen Codefetzen oder ein kleines .fla-chen.

Geändert von mapuche (23-01-2004 um 18:24 Uhr)
mapuche ist offline   Mit Zitat antworten
Alt 23-01-2004, 18:33   #2 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
lokal initialisieren

ActionScript:
  1. var folgeZustandsArray=new Array();

ansprechen geht ganz normal ohne this innerhaklb der funktion
nachdem die funktion abgearbeitet wurde verfällt die variable willst du nicht?

du könntest auch prüfen ob die länge des arrays >0 ist dann ist das array schon belegt und du musst es nicht mehr erstellen
ActionScript:
  1. if(arrayname.length>0 ) {
  2. //...
  3. }
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 23-01-2004, 18:34   #3 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
wenn du var davorschreibst, existiert er nur solange die Funktion existiert --> ist es das, was du meintest ?

tanti saluti,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Alt 23-01-2004, 19:17   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2001
Beiträge: 12

die Laufvariable auch noch auf lokal setzen (var z) und's laeuft....!

ich danke euch vielmals...
mapuche ist offline   Mit Zitat antworten
Alt 23-01-2004, 19:28   #5 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
Thumbs up



Grüß@delüx !
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele