type, tlist , handle und object

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Meoqan

Betreff: type, tlist , handle und object

BeitragDi, Jul 15, 2008 0:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Morgen!

ich such in blitzmax folgendes was in blitz3d so aus schaut:

jetzt speziell "id=Handle(beispiel)" und "beispiel = Object.beispiel(id)"

ich google schon zeit stunden finde aber nicht exakt das was ich suche.

Code: [AUSKLAPPEN]


Type beispiel
   Field value$
End Type
Global beispiel.beispiel


beispiel = New beispiel
beispiel\value="my"

beispiel = New beispiel
beispiel\value="world"

beispiel = New beispiel
beispiel\value="hello"

For beispiel = Each beispiel
   If "world" = beispiel\value Then id=Handle(beispiel)
Next


beispiel = Object.beispiel(id)
Print beispiel\value

WaitKey()



in blitzmax bin ich bereits soweit:



Code: [AUSKLAPPEN]


Type beispiel
   Field value:String
End Type
Global beispielList:TList = CreateList()

Local Newbeispiel:beispiel

Newbeispiel = New beispiel
Newbeispiel.value = "my"
ListAddLast beispielList, Newbeispiel

Newbeispiel = New beispiel
Newbeispiel.value = "world"
ListAddLast beispielList, Newbeispiel

Newbeispiel = New beispiel
Newbeispiel.value = "hello"
ListAddLast beispielList, Newbeispiel


For b:beispiel = EachIn beispielList
   If "world" = b.value Then ??? = ?????(???)
Next

??? = ?????????????
Print ??.value



danke schonmal im voraus! und gruß an Tobi!
meine codes sind die essenz des bössen. nicht du veränderst meine codes sondern meine codes verändern dich!

Firstdeathmaker

BeitragDi, Jul 15, 2008 1:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Kein Wunder das du das nicht findest, das gibt es bei BMax nämlich nicht, da man es nicht braucht. Darf man fragen wozu du es denn überhaupt brauchen würdest?

Und die codes oben sind noch nicht wirklich identisch, dazu müsstest du das Objekt noch der Liste hinzufügen:

Code: [AUSKLAPPEN]
Type beispiel
   Field value:String
End Type
Global beispielList:TList = CreateList()

Local Newbeispiel:beispiel

Newbeispiel = New beispiel
beispielList.addlast(Newbeispiel)
Newbeispiel.value = "my"


bzw. würde man das total Objektorientiert wohl eher so schreiben:
Code: [AUSKLAPPEN]
Type Beispiel
   Global list:TList = New TList
   Field value:String
   Field link:TLink
   
   Method New()
      Self.link = beispiel.list.addlast(Self)
   End Method
   
   Method setValue(value:String)
      Self.value = value
   End Method
   
   Method getValue:String()
      Return Self.value
   End Method
   
   Method remove()
      RemoveLink(Self.link)
   End method
End Type


Local newbeispiel:Beispiel = New Beispiel
newbeispiel.setValue("my")
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Meoqan

BeitragDi, Jul 15, 2008 1:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bin dabei ein spiel zu proggen und das ganze wow like... um rechner leistung vom server zu sparen und keine 3d welt zu laden habe ich für die bots die gültigen lauf bereiche in text form gespeichert.

leider haben die maps mehr als 15 000 einträge und das "for g:grind = eachin grindList" prinzip verbraucht sehr viel leistung.

die einzelnen punkte untereinander sind verbunden... mit der technik von b3d müsste ich kein einziges mal eine for schleife anfangen...

ich hoffe ich hab das verständlich erklärt :/


user posted image
meine codes sind die essenz des bössen. nicht du veränderst meine codes sondern meine codes verändern dich!

Firstdeathmaker

BeitragDi, Jul 15, 2008 1:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie genau sieht denn diese Verbindung aus? Meinst du mit Einträgen auf der Map die Tiles? Also 15000 Tiles pro map? Wenn ja, dann kannst du doch über ein Array sowieso direkt drauf zugreifen, oder?

Ansonsten, wenn es nur ein loses Netzwerk von Knoten ist, dann kannst du doch die Nachbarknoten pro Knoten speichern, und von dort aus direkt zugreifen.

Oder erklär einfach mal ausführlicher deine Datenstruktur.

(ich geh jetzt schlafen, werde aber später mal schauen ob ich dir helfen kann)
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Meoqan

BeitragDi, Jul 15, 2008 1:44
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image


so sieht die text map aus wenn man diese lädt und grafisch anzeigt... jeder punkt kennt seinen nachbar und anderstrum... also von oben(d1), oben rechts(d2), rechts(d3), unten rechts(d4), unten(d5),...usw

um es mal bildlich vorzutellen hat ein punkt(ID) folgende daten:

d8,d1,d2
d7,ID,d3
d6,d5,d4
meine codes sind die essenz des bössen. nicht du veränderst meine codes sondern meine codes verändern dich!

Firstdeathmaker

BeitragDi, Jul 15, 2008 9:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Müsste deine Struktur dann nicht einfach so aussehen?:

Code: [AUSKLAPPEN]

Type TPunkt
   Field d:TPunkt[8] 'array von 0-7 für die Nachbarn, angefangen mit oben(0), oben rechts(1), rechts(2) usw...   
End Type
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Tobchen

BeitragDi, Jul 15, 2008 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke!
Gruß auch an dich!
Tobchen - die Welt von Tobi!

Meoqan

BeitragDi, Jul 15, 2008 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
so... nach einwenig rumprobieren hab ich genu das was ich brauche:

Code: [AUSKLAPPEN]


Type Tbeispiel
   Field value:String
   Field nachbar:Tbeispiel
End Type
Global TbeispielList:TList = CreateList()

Local NewTbeispiel:Tbeispiel

NewTbeispiel = New Tbeispiel
ListAddLast TbeispielList, NewTbeispiel
NewTbeispiel.value = "my"


NewTbeispiel = New Tbeispiel
ListAddLast TbeispielList, NewTbeispiel
NewTbeispiel.value = "world"
For b:Tbeispiel = EachIn TbeispielList
   If b.value = "my" Then NewTbeispiel.nachbar = b
Next

NewTbeispiel = New Tbeispiel
ListAddLast TbeispielList, NewTbeispiel
NewTbeispiel.value = "hello"
For b:Tbeispiel = EachIn TbeispielList
   If b.value = "world" Then NewTbeispiel.nachbar = b
Next


For b:Tbeispiel = EachIn TbeispielList
   If "hello" = b.value Then bei:Tbeispiel = b.nachbar
Next

bei = bei.nachbar

Print bei.value



thx @ Firstdeathmaker
meine codes sind die essenz des bössen. nicht du veränderst meine codes sondern meine codes verändern dich!

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group