Dim brett[a][b] mit werten füllen funktioniert irgendwie nich so

Previous topic - Next topic

x-tra

Code (glbasic) Select
                   DIM brett[9][9]


FOR a = 0 TO 9
    FOR b = 0 TO 9
                               brett[a][b] = 0
    NEXT
NEXT
warum kommt hier die fehlermeldung "Ausserhalb des DIM Bereichs"


ich verzweifle grad.....


[edit] ich habs schon, wußte nicht, dass man lieber 0 -10 nehmen soll, und dann immer -1.  warum auch immer, aber funktioniert jetzt.

D2O

DIM brett[9][9]  // je 9 felder erstellen ;)

// 0- 9 sind 10 felder, also 0-8 machen :)
FOR a = 0 TO 8
    FOR b = 0 TO 8
                               brett[a] = 0
    NEXT
NEXT
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

x-tra

achso, nadann.....dachte dim fängt auch bei 0 an.


P.S. da hab ich gleich mal eine andere Frage.Wie kann ich in solch einem Dim
  • [y] feld mehr als nur einen wert speichern?
      Types?

       Womit auch immer, kann mir das jemand kurz anhand von einem Beispiel erklären, also im feld
  • [y]  sollen bspw. 4 Werte festgehalten werden.

        Und wie kann man diese dann gezielt auslesen?

Kitty Hello

Code (glbasic) Select
TYPE Tabcd
 a
 b
 c
 d
ENDTYPE

LOCAL abcd[] AS Tabcd

DIM abcd[100]
abcd[99].a = 42

x-tra

ich weiß dass es vielleicht unnötig ist, aber geht das auch mit zweidimensionalen dims?

ich will eine art schachbrett machen, welches mit sprites, bzw. tiles gefüllt werden soll.
und dann durch verschieben der tiles werden kombinationen erzeugt, deren resultat die löschung derer ist.und dann füllen sich von oben die felder wieder neu.also alles rutscht wieder nach unten, ähnlich wie tetris, nur mit einem ständig gefüllten spielfeld.

Kitty Hello

Code (glbasic) Select
LOCAL abcd[] AS Tabcd
DIM abcd[15][24]
Yo, geht.

x-tra

super, danke, hoffe mal ich bekomm das alles so hin, wie ich will.


und dann müsste es heißen:
Code (glbasic) Select
abcd[x][y].a = 42richtig?

Kitty Hello

jo.
Wenn Du Zeilen haben willst, kannst Du's auch so machen:
Code (glbasic) Select
TYPE TZeile
   werte[20] // 20 Werte (x) pro Zeile
ENDTYPE

LOCAL feld[] AS TZeile

DIM feld[30] // Zeilen

feld[iZeile].werte[ispalte] = wert
DIMDEL feld[], iZeile // Zeile rauswerfen

LOCAL z AS TZeile
DIMPUSH feld[], z // Zeile anhängen

x-tra

ich hab das jetzt nur überflogen, aber ich will ein feld also dim mit x spalten und y zeilen erstellen, und in jedem x, y feldchen sollen mehrere daten liegen, also via types.

ist mein ansatz da richtig, oder nicht.

dein beispiel sieht doch etwas komplizierter aus.

Kitty Hello

Sieht es?
Ja, der Vorteil ist dann, wenn die Zeile in einem TYPE ist, dass Du mit DIMPUSH und DIMDEL ganze Zeilen auf einmal löschen kannst.

x-tra

naja ich will in meinem code keine zeilen löschen.

kennst du bejeweled? dann weißt du was ich meine.

ich will so ein spiel schreiben.

hatte so einen grundsatz in einem bb forum gesehen, und umgeschrieben für glb.

Schranz0r

Gernot seine Methode ist wohl die schnellste!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello

Für ein reines 2D Feld ist ein Feld besser (also - mein erstes Beispiel).

Schranz0r

Naja kommt auch die große drauf an :)
Und ich glaub Bejuweld hatte ja eine feste Faldanzahl?
Da wird der wohl den unterscheid zu einen LEVEL[X][Y][Felder_pro_Feld] net merken :D
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

x-tra

also würde ich das ganze eindimensional machen, und mittels den types definiere ich ja auch x und y koordinaten des feldinhaltes, bspw. ein tile.
hab ich das jetzt richtig so verstanden?

oder wie würdet ihr sowas machen?

ein 10x10 spielbrett gefüllt mit bsp. 3 unterschiedlichen stein(tile)arten.
wenn ich zwei austausche durch anklicken und sich dadurch eine kombination aus 3 steinen ergibt, verschwinden diese und die darüberliegenden steine fallen nach, sowie wird das spielfeld wieder bis zum rand oben gefüllt.

jemand noch ein paar denkanstösse dazu.

wenn möglich easytounderstand, hab ne weile nix mehr programmiert, war paar monate mit webdesign beschäftigt und muss mich erst wieder reinfrickeln.