Verständisfrage zu LinkedLists
Übersicht

SkulkBetreff: Verständisfrage zu LinkedLists |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() jepeee ein weiterer schritt in richtung einfach zu modifizierende engine... |
||
War doesn't determine who's right,
war determines who's left... |
![]() |
Suco-X |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
War doesn't determine who's right,
war determines who's left... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group