Carsti: Wie kann ich einen zweidimensionalen Array mit JS erstellen?

Tach auch!

Ich möchte über Javascript ein kleines Schachspiel realisieren.
Das Ziel ist, das ich einen 8x8-Feld erstelle, in dessen einzelne "Felder" ich die jeweiligen Schachfiguren eintragen kann, die Positionierung soll dann auch mit Javascript und DHTML erfolgen.
Ziel: Nur den Array ändern, den Rest erledigt das Skript.

Aber - unter Javascript kann man so keinen zweidimensionalen Array erstellen. Wie kann ich mir da behelfen?

Vielen Dank im voraus,

CU,

Carsti

  1. Hallo Carsti

    Aber - unter Javascript kann man so keinen zweidimensionalen Array erstellen. Wie kann ich mir da behelfen?

    Hilft dir die Lektuere von <../../sfarchiv/1998_3/t00351.htm#a1380> eventuell weiter?

    viele Gruesse
      Stefan Muenz

  2. Moin!

    Tach auch!

    Ich möchte über Javascript ein kleines Schachspiel realisieren.
    Das Ziel ist, das ich einen 8x8-Feld erstelle, in dessen einzelne "Felder" ich die jeweiligen Schachfiguren eintragen kann, die Positionierung soll dann auch mit Javascript und DHTML erfolgen.
    Ziel: Nur den Array ändern, den Rest erledigt das Skript.

    Aber - unter Javascript kann man so keinen zweidimensionalen Array erstellen. Wie kann ich mir da behelfen?

    Für ein streng 2-dimensionales Array hast Du ja schon eine Antwort... Eine mögliche Alternative ist aber auch, ein großes eindimensionales Array zu erzeugen, wobei das 2D-Schachbrett mittels einer Funktion wie

    index1D = reihe*8+spalte;    // reihe, spalte von 0..7

    auf den eindimensionalen Index abgebildet werden. Besser ist es meistens noch, einen
    "Rand" um das eigentliche Spielfeld zu legen, um die Programmierprobleme zu umgehen, die sich ergeben, wenn man über den Spielfeldrand "hinausguckt". Also für ein Schachbrett demnach ein 10x10-Feld

    feld = new Array(100);

    definieren und mittels

    index1D = reihe*10 + spalte; // diesmal reihe, spalte von 1...8

    die Zuordnung machen.
    Der Vorteil an der ganzen Sache ist, daß man jetzt z.B. für alle 4 "Himmelsrichtungen" und Diagonal-Richtungen einfache Integer-Offsets angeben kann und sich so sehr schnell von einem Feld zum anderen bewegen kann. Beim Schachbrett mit Rand wäre dass z.B.

    hoch = -10;  runter=10; rechts=1; links=-1;
        oben_rechts = -9; oben_links=-11; unten_rechts = 11; unten_links=-9;

    (Dabei hat die linke obere Ecke den Index 0, und die rechte untere den Index 99. Kann man natürlich auch anders definieren).
    Meistens guckt man sich bei solchen Spielen ja in irgendeiner Weise benachbarte Felder an, und kann so mit diesen Skalaren Variablen schnell in alle Richtungen navigieren.
    Ich vermute mal stark (habs noch nicht mit der Stopuhr getestet...), daß diese Methode letztlich schneller geht als bei einem 2D-Array, wo auch die Offsets immer aus 2 Koordinaten bestehen müssen (... und aus denen der JavaScript-Interpreter dann noch die eigentliche Speicheradresse berechnen muß, die ja nach wie vor "eindimensional" ist).

    Das Spiel "Eggsweeper" auf PAF's Seite, http://www.atomic-eggs.com, ist übrigens nach diesem Muster gestrickt, vielleicht kann Dir das Skript dort noch weitere Anregungen geben.

    Viele Grüße

    Andreas

  3. Vielen Dank, der Array ist klasse.

    Mein nächstes Problem steht momentan oben in der Fragenliste :-)