Verständisfrage zu LinkedLists

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Skulk

Betreff: Verständisfrage zu LinkedLists

BeitragDi, Aug 08, 2006 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe eine Verständnis Frage zu linked-Lists.
Bei LinkedLists habe ich die Funktion "FindLink" gefunden.

Verstehe ich es richtig, dass ich damit das objekt (und somit seine eigenschaften) kennen muss um es in der liste zu finden?

Mein Problem ist nämlich folgendes.
Ich suche nach einer Möglichkeit, mehrere Werte (davon einer ein String) in einer Art Liste oder Array zu speichern, und möchte diese Daten anhand des Strings indizieren können.
Der String dient mir als Primärschlüssel und ist somit eindeutig.

mein lösungsansatz war, ein simples objekt zu erstellen, welches diese felder beinhaltet und es einer liste anzufügen.
Nur wie finde ich dieses objekt in der liste wieder, wenn ich nur eine eigenschaft (die ID) kenne?

Wenn ich das richtig verstehe sind linked lists dafür nicht geeignet, oder?

Gibt es bereits implementierte ansätze dazu, oder muss ich mir etwas einfallen lassen? Ich kann nicht glauben dass ich der erste mit solch einer anforderung bin...bzw das Mark das nicht bedacht hat.

Ideal wäre eine Art "Descriptive-Array" (gabs soviel ich weiss bei PHP)
d.h. statt die arrayelemente durch zahlen zu indizieren, gebe ich einen String an.



zur Sicherheit erläutere ich noch einmal, was ich konkret benötige und wie ich es einsetzen will.
Ich entwickle an einer Möglichkeit, Spielobjekte anhand von Dateien zu platzieren. Ich habe 2 Dateien.
Datei eins beinhaltet Objekte, welche mir zur Verfügung stehen (ID als string, pfad zur Grafik) und Datei zwei beinhaltet Objekte, welche ich verwendet habe (ID als string, coordinaten x,y).
Ich lese zu erst Datei 1 und lade alle nötigen Grafiken in den Speicher. Anschliessend lese ich datei 2, stelle anhand des ID-Strings einen Bezug zwischen beiden dateien her, und suche mir nun das ImageHandle zu meinem Objekt und zeichne es.

Beispiel Datei 1:
Haus ./gfx/haus1.bmp
Busch ./gfx/busch.bmp

Beispiel Datei2:
Busch 10,20
Busch 40,30
Haus 60,60
Busch 50,50

Ich möchte ungern auf den ID-String verzichten und ihn gegen eine Nummer tauschen. Einfach der leserlichkeit wegen.
War doesn't determine who's right,
war determines who's left...

Suco-X

BeitragDi, Aug 08, 2006 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie sich das anhört, bist du mit TMap besser bedient.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

Skulk

BeitragDi, Aug 08, 2006 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du mir jetzt noch ein Schlagwort gibts, mit dem ich TMaps in der ModuleReference nachlesen kannst, oder vielleicht sogar ein Tut parat hättest, wäre ich glücklich Smile

Edit:
Ok, bin fündig geworden.
Vielen Dank! Ich les mich mal ein
War doesn't determine who's right,
war determines who's left...

Suco-X

BeitragDi, Aug 08, 2006 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Strict

Type TGameObjekt
   Field x:Float , y:Float
   Field Path:String
   
   Method SetPosition(X:Float , Y:Float)
      self.X = X
      self.Y = Y
   End Method
   
   Method SetPath(Path:String)
      self.Path = Path
   End Method
   
   Method PrintOut()
      Print "X: " + X
      Print "Y: " + Y
      Print "Path: " + Path
   End Method
End Type



Local Map:TMap = New TMap
Local Objekt:TGameObjekt


'Datei 1 Lesen
Objekt = New TGameObjekt
Objekt.SetPath(".gfx/asddshsadhsduauhasdusda.png")
Map.Insert("Haus" , Objekt)


'Datei 2 Lesen
Local ExistingObjekt:TGameObjekt = TGameObjekt(Map.ValueForKey("Haus") )
ExistingObjekt.SetPosition(200 , 200)


'Was auch immer. Objekt ist jedenfalls jederzeit über den Namen Erreichbar

TGameObjekt(Map.ValueForKey("Haus")).PrintOut()



So, kleines Beispiel. Doku ist wohl noch nicht, müsstest in brl.map schauen.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

Skulk

BeitragDi, Aug 08, 2006 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, Suco-X, du hast mir wieder mal das leben gerettet *gg*

Funktioniert einwandfrei. ich bin zwar gerade drüber gestolpert, dass ich den Rückgabe .ValueForKey extra nochmal als mein Objekt Casten muss aber dank deinem beispiel funzts etz einwandfrei Smile

jepeee ein weiterer schritt in richtung einfach zu modifizierende engine...
War doesn't determine who's right,
war determines who's left...

Suco-X

BeitragFr, Aug 11, 2006 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, habe den Thread ganz vergessen. Np natürlich, helfe meinem Skulk doch immer gern. Übrigens hat Mark auf bb.com eine neue Testversion zu TMap geposted, vielleicht gibt es da nützliche Verbesserungen für dich.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

Skulk

BeitragFr, Aug 11, 2006 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich guck mal rein. aber die Maps hab ich schon wieder vergessen. hab zwischenzeitlich andre probleme gehabt und die maps funzen perfekt...da gibts nix zu korrigieren Very Happy
War doesn't determine who's right,
war determines who's left...

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group