Seite 1 von 1

Was sind Arrays ?

Verfasst: 20.06.2007 14:13
von Fusselohr
Ich weis es klingt blöd, aber ich habe keine Ahnung was Arrays sind. Kann mir jm. helfen?

Mit freundlichen Grüßen,
Fusselohr

Verfasst: 20.06.2007 14:22
von a14xerus
ich weiß nicht ob du schon mal in die lage gekommen bist, aber irgendwann wirst du merken, das du mit normalen Variablen nicht mehr weiterkommst.
Ein besipeil was mir jetzt grade nur einfällt ist zum beispiel bei Mehrspielermodi die Variablen für die ganzen Spieler.
Du kannst ja nich unendlich Viele Variablen erstellen, jede für einen Spieler.
Wäre ja total umständlich. In dem Fall nimmt man einfach eine LinkedList und kann beliebig elemente hinzufügen / auswählen / löschen, und zwar soviele bis der Speicher überläuft ;)
Arrays sind so etwas ähnliches wie LinkedLists.
SIe bieten auch die Möglichkeit meherer Werte unter einem "Ansprechpartner" zu speichern.
Kleines BSP:

Code: Alles auswählen

var1 = 1
var2 = 2
var3 = 3
; usw
dim var(3)
var(1) = 1
var(2) = 2
var(3) = 3
Anstatt drei variablen (var1 - var3) hast du nurnoch das Array var() wo du die Werte abspeichern kannst.
So kannst du das ganze auch zum beispiel Mit Forschleifen durchgehen.
Dann gibt es auch noch die 2d Arrays

Code: Alles auswählen

dim anderesarray(4,4)
Einmfach Bespiel: Schachbrett.
Da ich kein Schach spiel, weil ich nicht wie viele Felder ein brett hat, aber so kannst du einfach ein Array erstellen, wo die eigenschaften eines jeden Feldes abgespeichert werden können.
Beliebt ist auch die nutzung von Arrays in Verbindung mit Structuren.
Ändert nichts an der Benutzung
Zum Speicher:
Ein Array wird per Dim erstellt und damit wird direkt der ganz Speicher allociert, leere Arrays gibt es sozusagen nicht, um zu löschen musst du das selbe array mit (0) Feldern nochmal erstellen.
Der Benutzte Speicher befindet sich in einem Zusamenhängenden Blcok.
Wenn du ein Array mit Longwerten hast, liegt Feld 6 also auch genau 4 Byte hinter Feld 5

Verfasst: 20.06.2007 14:25
von Fusselohr
Also wäre es nicht schlecht wenn ich Arrays für meine Tile Engine nehme oder ?

Verfasst: 20.06.2007 14:30
von a14xerus
Alles andere Wäre sinnlos;)

Code: Alles auswählen

structure tilemap
  Layer1.l
  Layer2.l
  Layer3.l
  action.l
  ;...
endstructure
dim tilemap.tilemap(999,999)
for x = 0 to 999
  for y = 0 to 999
    tilemap(x,y)\Layer1 = 0 ;SpriteID von Ebene 1 (Boden)
    tilemap(x,y)\Layer2 = 0 ;SpriteID von Ebene 2 (gegenstände)
    tilemap(x,y)\Layer3 = 0 ;SpriteID von Ebene 2 (Bäume oder was weiß ich)
  next
next
Hier im Forum gibt es einige Tilemap Beispiel, benutz mal die Sufu, du findest da bestimmt was

Edit: WICHTIG: Arrays müssen ab PB4 als Global gekennzeichnet werden, sonst sind sie nur Local, also:

Code: Alles auswählen

Global Dim array(0)

Verfasst: 20.06.2007 14:31
von Xaby
Ja, kannste machen.

Zwei dimensionales Array:

Stell dir einfach ein karriertes Blatt vor, in jedes Kästchen kannst du eine Zahl schreiben.

Welches Kästchen du meinst, legst du dann mit dem Abstand in Kästchen zum Wunschkästchen vom Rand aus fest.

:allright:

Verfasst: 20.06.2007 14:32
von Fusselohr
Vielen Dank ^^. Probier ich gleich mal aus- aber erst noch Hausaufgaben :(