Seite 1 von 1
Arrays in Strukturen
Verfasst: 28.08.2007 11:32
von Sebastian
Hallo!
Ich habe gelesen, dass Strukturen nur statische Arrays akzeptieren. Kann man diese auch mehrdimensional verwenden?
Falls nicht -> wie arbeite ich dann mit mehreren Dimensionen?
Verfasst: 28.08.2007 11:54
von mk-soft
No Problem,
Code: Alles auswählen
Structure udtPos
player.l
points.l
EndStructure
Dim pos.udtPos(9,9)
For x = 0 To 9
For y = 0 To 9
i + 1
pos(x,y)\player = i
Next y
Next x
For x = 0 To 9
For y = 0 To 9
i + 1
Debug Str(x) + ":" + Str(y) + " - Player: " + Str(pos(x,y)\player)
Next y
Next x
FF

Verfasst: 28.08.2007 12:09
von #NULL
du könntest dimensionen > 1 wrappen, in zusätzlichen strukturen:
Code: Alles auswählen
#xmax=3
#ymax=7
Structure S_yDim
y.l[#ymax+1]
EndStructure
Structure S_myStuff
foo0.b
foo1.b
x.S_yDim[#xmax+1]
foo2.b
foo3.b
EndStructure
var.S_myStuff
For i=0 To #xmax
For k=0 To #ymax
var\x[i]\y[k] = Random(9)
temp.s + " " + Str( var\x[i]\y[k] )
Next
Debug temp
temp=""
Next
Verfasst: 28.08.2007 12:16
von Sebastian
@mk-soft:
Wenn ich Deinen Vorschlag ausführe, dann habe ich aber doch für jedes Element die Playerposition (das ist okay), jedoch auch die Playerpunkten. Sagen wir, ich will die x,y Koordinaten für jedes Element, die Punkte brauche ich aber doch nur ein einziges mal und nich 81 mal?
Verfasst: 28.08.2007 12:21
von #NULL
mit einem macro hast du sogar zugriff wie bei gewöhnlichen arrays:
Code: Alles auswählen
#xmax=3
#ymax=7
Structure S_yDim
y.l[#ymax+1]
EndStructure
Structure S_myStuff
foo0.b
foo1.b
x.S_yDim[#xmax+1]
foo2.b
foo3.b
EndStructure
Macro array(_i_, _k_)
x[_i_]\y[_k_]
EndMacro
var.S_myStuff
For i=0 To #xmax
For k=0 To #ymax
var\array(i,k) = Random(9)
temp.s + " " + Str( var\array(i,k) )
Next
Debug temp
temp=""
Next
Verfasst: 28.08.2007 12:38
von mk-soft
@Sebastian,
ich weis noch nicht wo rauf du raus willst.
Die Structure ist ja nur ein beispiel für eine zwei Dimensionale Rasterkarte welcher Player sich auf der Position XY befindet.
Mit einer zweiten Structure kann man ja eine Playerliste erstelle an welcher Position sich der Player aufhält und diese mit der Rasterkarte abgleichen.
Verfasst: 28.08.2007 12:40
von Sebastian
Moment: Das ist ein Anfänger-Forum. Das verstehe ich nicht.
Ich will mehrere Layer darstellen, ich weiß aber vorher nicht, wieviele Layer vorhanden sein werden. Ich dachte, dass ich deshalb eine Linked-List verwende. Jeder Layer soll ein paar Variablen haben:
IstderLayerAktiv = 0 oder 1 (Soll der Layer dargestellt werden)
IstderLayertransparent = 0 oder 1 (Sollen die Sprites mit Transparenz gezeichnet werden?)
und dann natürlich die TileId
layer(x,y) = TileID
Ich dachte, dass ich das alles mit Structure --- EndStructure definieren kann.
Die Dimensionsgröße von layer(x,y) muss sich jedoch auch ändern können, das Level könnte ja im Nachhinein doch größer sein sollen, als erst gedacht.
Verfasst: 28.08.2007 12:41
von Kaeru Gaman
warum immer so umständlich?
Code: Alles auswählen
Macro BiCoord5( BCRow, BCLine )
( 5 * BCLine + BCRow )
EndMacro
Structure Puit
Narf.c[25]
EndStructure
Define Fjord.Puit
Fjord\Narf[BiCoord5(2,3)] = 42
Debug Fjord\Narf[BiCoord5(2,3)]