Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-06-2006, 12:31   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2006
Beiträge: 3
Array-Problem - Dringend Hilfe gesucht

Ich versuche gerade ein Spiel zu programmieren und scheitere im Moment an einem Verständnisproblem.

Ich brauche ein System, mit dem ich automatisch Namen generieren kann, die aus Buchstaben und Zahlen bestehen.

Code:
 
onClipEvent (load) {
    // Boxbezeichnung;
    box = new Array;
    box[0] = "A";
    box[1] = "B";
    box[2] = "C";
    box[3] = "D";
    box[4] = "E";
    box[5] = "F";
    box[6] = "G";
    box[7] = "H";
    box[8] = "I";
    // Reihenbezeichnung;
    field = new Array;
    field[0] = 1;
    field[1] = 2;
    field[2] = 3;
    field[3] = 4;
    field[4] = 5;
    field[5] = 6;
    field[6] = 7;
    field[7] = 8;
    field[8] = 9;
    // Erstellung der Feldnamen;
    for (z=0; z<9; z++) {
        for (y=0; y<9; y++) {
            name = new Array;
            numero = new String(box[z] + field[y]);
            name.push(numero);
            trace (numero);
        }
    }
}

Der Code befindet sich auf einem leeren MC.

Die Boxen sollen so bezeichnet werden: "A1", "A2" ... "A9", "B1" ... bis zur letzten Variante "I9". Beim Ausführen des Scripts zeigt der trace-Befehl wunderbar, was ich haben will. Allerdings schreib er die 81 Werte nicht in den Array. Warum nicht. Wie kann ich erreichen, dass die Werte in meinen name-Array geschrieben werden? Mit 81 Werten im Array?

Und gäbe es eine andere, bessere Methode, einen solchen Array zu erstellen?
Das Ziel sieht ja so aus:

name[0][0] = name[box[0]] [field[0]] = equivalent to A1
name[0][1] = name[box[0]] [field[1]] = equivalent to A2
...
name[9][9] = name[box[9]] [field[9]] = equivalent to I9


Danke für die Hilfe im Voraus.
SunnySideUp
SunnySideUp ist offline   Mit Zitat antworten
Alt 25-06-2006, 12:42   #2 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Hi.
PHP-Code:
onClipEvent (load) {

    
// Boxbezeichnung;
    
box = new Array("A""B""C""D""E""F""G""H""i");

    
// Reihenbezeichnung;
    
field = new Array(123456789);

    
// Erstellung der Feldnamen;
    
name = new Array();
    for (
z=0z<9z++) {
        for (
y=0y<9y++) {
            
numero = new String(box[z] + field[y]);
            
name.push(numero);
        }
    }


Habs nicht getestet, aber so in die Richtung müßte das gehen.
Übrigens stellt name[0][0] ein zweidimensionales Array dar.
Aber Du willst, so weit ich das gesehen habe, doch nur ein
eindimensionales Array mit 81 Einträgen haben, oder nicht?

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 25-06-2006, 12:54   #3 (permalink)
Neuer User
 
Registriert seit: Jun 2006
Beiträge: 3
Danke für die Antwort.

Nein, das geht immer noch nicht. Das Problem ist, dass name.push(numero) immer nur den letzten numero-Wert behält. Es müssen aber alle der Reihe nach in den Array geschrieben werden.

Das andere Problem ist, dass es sein kann, dass ich für mein Vorhaben doch einen zweidimesionalen Array brauche und die habe ich schon so lange in ActionScript nicht mehr gemacht, dass ich überhaupt nicht mehr weiß, wie die eigentlich geschrieben werden.

Mir wäre fast sogar noch besser geholfen, wenn jeder Wert tatsächlich einzeln steht und erst mit der Ansprache beider Arraywert zu einem String zusammengefügt wird.

Also array[7][2] = array[wert: H][wert: 3] => newString("H"+"3") = "H3"

Wie aber kann ich aus meinen zwei Basisarrays (box und field) dieses mehrdimensionale Array bilden?
SunnySideUp ist offline   Mit Zitat antworten
Alt 25-06-2006, 13:07   #4 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Habs gerade nochmla getestet.

name als varibalenname ist nicht so gut,
da der begriff von flash reserviert ist.
so geht es:
PHP-Code:
box = new Array("A","B","C","D","E","F","G","H","I"); 

//Reihenbezeichnung; 
field = new Array(1,2,3,4,5,6,7,8,9); 

//Erstellung der Feldnamen; 
myName = new Array();
for (
i=0i<9i++) {
    for (
j=0j<9j++) {
        var 
numero = new String(box[i] + field[j]);
        
myName.push(numero);
    }
}

for (
i=0i<81i++) {
        
trace(myName[i]);

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 25-06-2006, 13:14   #5 (permalink)
Neuer User
 
Registriert seit: Jun 2006
Beiträge: 3
Supercool. Vielen lieben Dank. Darauf wäre ich glaube ich nicht gekommen. Hab' schon ewig nicht mehr geflasht.
SunnySideUp ist offline   Mit Zitat antworten
Alt 25-06-2006, 13:19   #6 (permalink)
GetYourYoYosOut
 
Benutzerbild von harnisch
 
Registriert seit: Jun 2002
Ort: Hamburg
Beiträge: 620
oder so in 2d-Arrays, falls Du die noch brauchen solltest.

PHP-Code:
box = new Array("A","B","C","D","E","F","G","H","I"); 

//Reihenbezeichnung; 
field = new Array(1,2,3,4,5,6,7,8,9); 

//Erstellung der Feldnamen; 
myName = new Array();
for (
i=0i<9i++) {
    
myName[i]=[];
    for (
j=0j<9j++) {
        var 
numero = new String(box[i] + field[j]);
        
myName[i].push(numero);
    }
}

for (
i=0i<myName.lengthi++) {
        
trace(myName[i]);

harnisch ist offline   Mit Zitat antworten
Alt 25-06-2006, 15:20   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
noch ein kleiner beitrag von mir ;-)
Code:
myName=[], i=-1, n=9;
while (++i<n*n) myName.push(chr(ord('A')+int(i/n))+(i%n+1));
trace(myName.join('\r'));
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (25-06-2006 um 15:23 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 26-06-2006, 10:38   #8 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
@hgseib:

Das ist allerdings ultra-compressed!

gruß, gaspode
gaspode 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 11:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele