2- oder 3-dimensionales Datenfeld

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Abstauber

Betreff: 2- oder 3-dimensionales Datenfeld

BeitragMo, Mai 07, 2012 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

ich habe ein Feld A mit 32 mal 32 Kacheln und ein darüberliegendes Feld B mit 64 mal 64 Kacheln. Beide Felder haben eine gleich große Gesamtfläche. Legt man also Feld B über Feld A, besteht jede Kachel von Feld A aus vier Feld-B-Kacheln (umständlich formuliert, tut mir leid).

Wie würdet ihr die Daten verarbeiten - in mehreren (zweidimensionalen?) Datenfeldern oder in einem dreidimensionalen Datenfeld? Könnt ihr mir mit eurer reichlichen Erfahrung einen Tipp geben, was übersichtlicher und/oder speicherschonender ist?

Danke. Smile

user posted image

Xeres

Moderator

BeitragMo, Mai 07, 2012 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
2x 2D Felder scheinen mir am sinnigsten zu sein, sonst ist eine Ebene 4x größer, als du sie benötigst.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

SpionAtom

BeitragMo, Mai 07, 2012 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn die kleinen Kacheln untrennbar an die großen Kacheln gebunden sind, kannst du auch ein 2D-Array für das 32x32 Feld machen, und diesem vier Attribute geben. Das wäre mit einer Mischung aus Array und Type zu realisieren. Das macht es recht einfach zu jeder großen Kachel seine vier kleinen Kacheln zu finden. Es macht allerdings das iterieren über das 64x64-Feld schwieriger.

Ich denke am einfachsten ist es wirklich, wenn man zwei 2D-Arrays erstellt. Die Umrechnung von den großen Arraykoordinaten zu den kleinen (und umgekehrt) sollte auch nicht zu schwer sein (wenn das überhaupt gewünscht ist).

Wie so oft kommt es in der Programmierung aufs Detail an. Was genau hast du vor? Worauf kommt es dir an?
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Abstauber

BeitragMo, Mai 07, 2012 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, Xeres! Dann werde ich es mit zwei Datenfeldern versuchen.

Wenn ich mich gerade nicht zu dusselig anstelle, brauche ich den jeweils vier Kacheln ja nur zu sagen, zu welcher großen Kachel sie gehören, sprich angehängte Types zu erstellen, gell?

Edit: Auch dir vielen Dank, SpionAtom. Ich lag also richtig. Aber ich präzisiere gerne noch mal, was ich vorhabe:

Auf jeder großen Kachel werden bis zu vier Objekte positioniert - links oben, rechts oben, links unten, rechts unten. Jedes der vier Objekte hat die gleichen Einträge, nur deren Werte sind verschieden. Die jeweils vier Feld-B-Kacheln müssen also wissen, zu welcher Feld-A-Kachel sie gehören.

SpionAtom

BeitragMo, Mai 07, 2012 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Umrechnen ist easy:

Code: [AUSKLAPPEN]
Graphics 640, 640, 0, 2
SetBuffer BackBuffer()

   Repeat

      mouse_x = MouseX()
      mouse_y = MouseY()


      ;Koordinaten vom 64x64 Feld
      A_x = mouse_x / 10
      A_y = mouse_y / 10
      ;Koordinaten vom 32x32 Feld lassen sich aus den anderen Koordinaten leicht berechnen
      B_x = A_x / 2
      B_y = A_y / 2

      Cls
      Color 63, 63, 63
      For x = 1 To 63
         Rect 0, 10 * x, 640, 1
         Rect 10 * x, 0, 1, 640
      Next
      Color 150, 150, 150
      For x = 1 To 31
         Rect 0, 20 * x, 640, 1
         Rect 20 * x, 0, 1, 640
      Next


      Color 255, 255, 255
      Text 0, 0,  "Mausposition: " + mouse_x + ", " + mouse_x
      Text 0, 16, "64x64 Array:  " + A_x + ", " + A_y
      Text 0, 32, "32x32 Array:  " + B_x + ", " + B_y
      Flip()

   Until KeyDown(1)
   End
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Abstauber

BeitragMo, Mai 07, 2012 19:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Argh... Ja, das Umrechnen ist einfach. Danke für den Vorschlaghammer. Dann kann ich mich ja dank eurer ausgezeichneten Hillfe ans Werk machen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group