Dynamiches Feld mit Banken

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Matthias

Betreff: Dynamiches Feld mit Banken

BeitragSa, Aug 18, 2007 12:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay. Ich habe da ein kleines Problem und weiß auch nicht mehr weiter.
Und zwar geht es um ein Feld mit 6Dimensionen. Allerdings kann ich dafür kein Dim Feld verwenden weil dieses Speicher frist, obwohl keine Daten enthalten sind. Also habe ich es mit verschachtelte Banken versucht. Und solange wie ich auch jede Bank einen Kostanten länge gebe klappt es auch. Aber ich will eigentlich das die bank erst dann entsprechend vergrößert werden wenn es notwendig ist. Und das klappt ebend irgendwie nicht.
Also hier mal der Code.


Code: [AUSKLAPPEN]

Global ScrX=800,ScrY=600
Graphics ScrX,ScrY,32,2
Dim Sets(1000)



TIDa(20,0,0,4,0,0,20)
TIDa(22,0,5,0,0,0,40)
AppTitle TIDa(22,0,5,0,0,0,-1)


;TIDb(20,0,0,4,0,0,20)              <
;TIDb(22,0,5,0,0,0,40)              <Hier fehler
;AppTitle TIDb(22,0,5,0,0,0,-1)  <



SetBuffer BackBuffer()
Repeat


Flip
Until KeyDown(1)
End

Function TIDa(S,U,X,Y,F,D,W)
U=U*4:X=X*4:Y=Y*4:F=F*4:D=D*4
Select Sets(S):Case 0:Sets(S)=CreateBank(500):End Select

B1=PeekInt(Sets(S),U)
Select B1:Case 0:B1=CreateBank(500):PokeInt(Sets(S),U,B1):End Select


B2=PeekInt(B1,X)
Select B2:Case 0:B2=CreateBank(500):PokeInt(B1,X,B2):End Select


B3=PeekInt(B2,Y)
Select B3:Case 0:B3=CreateBank(500):PokeInt(B2,Y,B3):End Select


B4=PeekInt(B2,Y)
Select B4:Case 0:B4=CreateBank(500):PokeInt(B3,F,B4):End Select

Select W:Case -1:Return PeekInt(B4,D):Default:PokeInt(B4,D,W):End Select
End Function 






Function TIDb(S,U,X,Y,F,D,W)
U=U*4:X=X*4:Y=Y*4:F=F*4:D=D*4
Select Sets(S):Case 0:Sets(S)=CreateBank(4):End Select
Select U=>BankSize(Sets(S)):Case 1:ResizeBank(Sets(S),U+4):End Select

B1=PeekInt(Sets(S),U)
Select B1:Case 0:B1=CreateBank(4):PokeInt(Sets(S),U,B1):End Select
Select X=>BankSize(B1):Case 1:ResizeBank(B1,X+4):End Select

B2=PeekInt(B1,X)
Select B2:Case 0:B2=CreateBank(4):PokeInt(B1,X,B2):End Select
Select Y=>BankSize(B2):Case 1:ResizeBank(B2,Y+4):End Select

B3=PeekInt(B2,Y)
Select B3:Case 0:B3=CreateBank(4):PokeInt(B2,Y,B3):End Select
Select F=>BankSize(B3):Case 1:ResizeBank(B3,F+4):End Select

B4=PeekInt(B2,Y)
Select B4:Case 0:B4=CreateBank(4):PokeInt(B3,F,B4):End Select
Select D=>BankSize(B4):Case 1:ResizeBank(B4,D+4):End Select
Select W:Case -1:Return PeekInt(B4,D):Default:PokeInt(B4,D,W):End Select
End Function 

D2006

Administrator

BeitragSa, Aug 18, 2007 12:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur so als kleine Frage, die mir gerade so durch den Kopf schwirrte...

Wozu in aller Welt brauchst du bitteschön ein 6-dimensionales Feld?
Braucht deine Tilemap noch die Zeit, alle Zustände innerhalb einer linearen Zeitskala sowie alle Entwicklungsmöglichkeiten für jeden Zustand innerhalb der Zeitskala?
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

Matthias

BeitragSa, Aug 18, 2007 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja. Ich habe mir das so vorgestellt.
Jedes Set(1D) hat Untersets(2D) aus dennen wird zb bei LandTiles ein Tiles zufällig ausgewählt beim Setzen, damit der Wiedererkenungswert nicht so hoch ist.

Jedes dieser TilesSets hat nun eine XGröße(3D) und eine YGröße(4D). Sowie mehrere Frames(5D)
die nach einen Bestimmten Zeitzyklus geflippt werden. Zusätzlich soll mann jedes Frame des einzelnen Tiles auch noch rückgängig(6D) machen können so 10 mal wenn mann es gezeichnet hat.

Auf dem Bild kann mann das schon erkennen mit den Untersetzs
https://www.blitzforum.de/gallery/?image=768
user posted image

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group