Arrays in Strukturen
Arrays in Strukturen
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?
Ich habe gelesen, dass Strukturen nur statische Arrays akzeptieren. Kann man diese auch mehrdimensional verwenden?
Falls nicht -> wie arbeite ich dann mit mehreren Dimensionen?
(Win 11 64-bit, PB 6.04 und 6.10)
No Problem,
FF 
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

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
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
@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?
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?
(Win 11 64-bit, PB 6.04 und 6.10)
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
@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.
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.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
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.
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.
(Win 11 64-bit, PB 6.04 und 6.10)
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
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)]
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.