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.
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)
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.
Das ist der Code
// --------------------------------- //
// 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
Naja, vieleicht sagt ja Schranzor hier noch, was er sich dabei gedacht hat. =D
Jow Sorry sollte eigentlich sein:
DRAWSPRITE tile[x][y],xpos-ScrollX,ypos-ScrollY // Draw sprite
Fehlt halt nur(vor der While-Schleife) :
FOR x = 0 TO 19
FOR y = 0 to 19
tile[x][y] = 1+RND(1)
NEXT
NEXT
Erklärung:
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 ;)