Ja, bin immer noch bei den Basics

Previous topic - Next topic

Shogun

Hallo alle zusammen,
bin gerade dabei mich mit Feldern zu beschäftigen. Wenn ich z.Bsp. sage DIM playfield [40] [40], warum muss ich dann nicht unbedingt darauf Bezug nehmen (wie es in der Hilfe beschrieben wird)?

In dem Iso-Beispiel von Schranzor sagt er DIM tile [20] [20]. Aber tile taucht nirgends mehr auf. Erkennt das for x und das for y das irgendwie automatisch oder übersehe ich da was?

Würde mich über Hilfe freuen.



Quentin

na in irgendeiner Form wird er schon darauf Bezug nehmen, sonst macht das wenig Sinn. Welche Stelle meinst du denn? (Link oder Code-Schnipsel bitte)

Tiuz

#2
Das Feld tile verwendet er im Beispiel nicht. Ich denke es wird für die späteren Ausbau des Programms definiert. Der nachfolgende User verwendet es ja um sich zu merken ob auf dem Feld (heisst da map), bereits ein Haus steht.
Grundsätzlich wird der Speicherplatz einer Feldvariable auch in Schleifen über seine Indizierung angesprochen z.B. tile[j][k] = 8. Ausnahme ist in gewisser Weise FOREACH, wo eine Laufvariable mit jedem Schleifendurchlauf einen anderen Wert des Feldes annimmt. (Siehe Hilfe)

Tiuz.

Shogun

#3
Das ist der Code
Code (glbasic) Select

// --------------------------------- //
// Project: isogame
// Start: Thursday, April 05, 2007
// IDE Version: 4.142

LOADSPRITE "boden.png",1  // Load Isosprite

DIM tile[20][20] // Set Array              tile taucht hier nirgends mehr auf, alles andere ist soweit klar. Danke schonmal

WHILE TRUE

//-----Set Locals----------
w=72     // Tile width
h=36     // Tile hight
w2=w/2   // Half Tile width
h2=h/2   // Half Tile hight
//-------------------------

FOR x = 0 TO 19
FOR y = 0 TO 19

xpos = w2*(x-y)-w2  // calculate xpos
ypos = h2*(x+y)     // calculate ypos

SPRITE 1,xpos-ScrollX,ypos-ScrollY    // Draw sprite

NEXT
NEXT

//--------Scroll-----------------------

IF KEY(200) THEN ScrollY = ScrollY -3
IF KEY(208) THEN ScrollY = ScrollY +3
IF KEY(203) THEN ScrollX = ScrollX -3
IF KEY(205) THEN ScrollX = ScrollX +3

//---------------------------------------

SHOWSCREEN
WEND
END

Tiuz

Naja, vieleicht sagt ja Schranzor hier noch, was er sich dabei gedacht hat.  =D

Schranz0r

#5
Jow Sorry sollte eigentlich sein:

Code (glbasic) Select
DRAWSPRITE tile[x][y],xpos-ScrollX,ypos-ScrollY    // Draw sprite

Fehlt halt nur(vor der While-Schleife) :

Code (glbasic) Select
FOR x = 0 TO 19
    FOR  y = 0 to 19
   
        tile[x][y] = 1+RND(1)
   
    NEXT
NEXT


Erklärung:
Code (glbasic) Select

tile[x][y] = 0   // Nix
tile[x][y] = 1   // Grass
tile[x][y] = 2   // Haus


Man muss dafür natürlich auch einmal ein Sprite Haus und Grass laden ;)
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