GLBasic forum

Other languages => GLBasic - de => Topic started by: Shogun on 2008-May-06

Title: Ja, bin immer noch bei den Basics
Post by: Shogun on 2008-May-06
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.


Title: Re: Ja, bin immer noch bei den Basics
Post by: Quentin on 2008-May-06
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)
Title: Re: Ja, bin immer noch bei den Basics
Post by: Tiuz on 2008-May-06
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.
Title: Re: Ja, bin immer noch bei den Basics
Post by: Shogun on 2008-May-07
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
Title: Re: Ja, bin immer noch bei den Basics
Post by: Tiuz on 2008-May-07
Naja, vieleicht sagt ja Schranzor hier noch, was er sich dabei gedacht hat.  =D
Title: Re: Ja, bin immer noch bei den Basics
Post by: Schranz0r on 2008-May-07
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 ;)