verlinkung von types
Übersicht

![]() |
BlatoloBetreff: verlinkung von types |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde gerne in einem type zu einer bereits bestehenden variable eines anderen types linken oder sogar zu mehreren oder am besten zu allen die eine bestimmt Bedingung erfüllen.
Ist dies überhaupt möglich? also man soll von einem anderen type direkt auf variablen anderer types zugreifen können die bestimmte bedingungen erfüllen. |
||
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
For TypeVar.Type = each Type
if TypeVar\DeinFeld = DeineBedingung then ... endif next Anders gehts nicht. walski |
||
buh! |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich meinte eigentlich dass man zwei types hat.
Ich brauch das z.B. um bei jedem Spieler direkt die Eigenschaften seiner Städte auflisten kann. also ein type stadt und ein type spieler und jeder spielder kann nunmal x städte haben aber es sollen dazu keine neuen gemacht werden sondern zu bereits bestehenden verlinkt werden. Dies könnte man ja so lösen indem man bei jeder stadt den namen des besitzers mit dem des spielers vergleicht und wenn sie übereinstimmen, dann gehört sie ja ihm, aber man kann dann immer noch nicht in dieser Art: spieler/stadt/x_koordinate darauf zugreifen. Und genau das ist mein ziel man könnte zwar eine variable des types stadt als field im type spieler machen aber so gäbe es ja eine neue oder besteht die möglichkeit so auf eine bestehende zu linken? Und außerdem wäre die städtezahl begrenzt durch ein array |
||
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Type Stadt
Field BlaBlaBla end type Type DeinDummerSpieler Field BlaBla Field SeineStadt.Stadt end type A.DeinDummerSpieler = new DeinDummerSpieler A\SeineStadt.Stadt = new Stadt A\SeineStadt\BlaBlaBla = 5 geht doch. walski |
||
buh! |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber ein Spieler soll mehr als eine Stadt haben können, aber dann müsste man das ja mit nem Array/Blitzarray lösen und dadurch wäre die Städtezahl begrenzt. | ||
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Type Stadt Field BesitzerID Field Name$ End Type Type Spieler Field ID Field Name$ Field Citys.Stadt End Type For i=1 To 3 XMan.Spieler = New Spieler XMan\ID = i XMan\Name$ = "Spieler " + Str(i) For j=1 To 5 XMan.Spieler\Citys.Stadt = New Stadt XMan.Spieler\Citys\BesitzerID = i XMan.Spieler\Citys\Name$ = "Stadt " + Str(j) + "(Besitzer: " + XMan\Name$ + ")" Next Next For XMan = Each Spieler Print XMan\Name$ For XMan\Citys.Stadt = Each Stadt If XMan\Citys.Stadt\BesitzerID=XMan\ID Then Print XMan\Citys\Name$ EndIf Next Next WaitKey() Geht doch so wunderbar. walski |
||
buh! |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klar so wäre es möglich.
Danke für deine Hilfe. Dann kann man zwar die einzelnen Städten nicht separat ansprechen sondern nur per for each, da ja lle den gleichen namen haben, aber das wird schon gehen mit before und after. Das ist nämlich dass was mich stört wenn man die varis von types in for schleifen erstellt da es dann erschwert ist diese einzeln anzusprechen |
||
CodeMaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Schonmal was von "Handle" und "Object" gehört? Solltest du dir vielleicht mal näher anschauen, sind nämlich zwei sehr nützliche Funktiönchen, um Type-Einträge direkt auszulesen... | ||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
geht auch ohne handle/object
siehe dazu blitzbase.de / quellcodes / typeinstanzen kannst damit beliebig viele gruppen von types erzeugen - die musst du nur dann zu irgendwas zuweisen (also halbfertig) |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mir jetzt den handle und object befehl mal in der online hilfe angeguckt.
Aber ich kann dort keinen großen Vorteil erkennen, da die handle id ja in einer vari abgelegt wird und somit bräuchte man für jede container variable eines typs auch noch eine variable mit der id oder habe ich da etwas falsch verstanden ode rkann man es einfacher lösen? Denn so sehe ich keinen Vorteil gegenüber der Verbindung von types und Arrays. edit: @theShadow hört sich interressant an. Werd ich mir mal näher angucken, aber erst morgen da ich meinen Kopf heute nicht mehr so überanstrengen will. |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
natürlich musst du handle/objekt mitbank benutzen
TYPE alien FIELD bank END TYPE bank musst du dann selbst handlen/vergrößern/verkleinern etc - und mit handle werten füllen und handles auslesen... ist aufwendiger - geht aber ist sicher bisschen einfacher als typeinstanzen |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
bkann man denn ne bank als type-variable nutzen?
Denn ich will ja in einem type zu einer typevariable eines anderen types linken aber diese dann direkt ansprechen. Sorry ich kenn mich mit banks überhaupt nicht aus. |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man kann nicht einzelne Variablen (Felder) eines Types miteinander verlinken. Nur die Types selber miteinander. Von jedem Type kann man beliebig viele Objekte erstellen.
Auch wenn man in der Type definition zu einer anderen Type Variable linken könnte, woher sollte Blitz dann wissen zu welchem Objekt/Objektfeld gelinkt werden muss? Ausser natürlich mann würde es vorher bestimmen. Aber das wäre dann sinnlos weil man ja auch einfach auf das ganze Objekt linken kann. Code: [AUSKLAPPEN] Type eins Field x,y Field objekt.zwei End Type Type zwei Field x,y,z Field pitch,yaw,roll Field parent.eins End Type variable.eins = new eins variable\x = 1 variable\y = 1 ;10 Objekte des Types zwei erstellen For i = 0 to 9 variable\objekt = new zwei variable\objekt\x = 2 variable\objekt\y = 2 variable\objekt\z = 2 variable\objekt\pitch = 0 variable\objekt\yaw = 0 variable\objekt\roll = 0 variable\objekt\parent = variable ;Parent setzen Next ;Abfrage For objekt.zwei = each zwei If objekt\parent = variable ;Alle Objekte die zu variable gehören ....... EndIf Next Wenn man mehrere Objekte erstellt und nur 1 Handle hat ist es zwar auch nicht mehr so sinnvoll. Da wäre es wohl besser mit einem Blitz Array damit man dann auch auf jedes Objekt direkt zugreifen kann. Oder man macht es ganz ohne dieses Handle (im ersten Type), weil das nicht nötig ist eigentlich solange man das Parent im zweiten Type gespeichert hat. Code: [AUSKLAPPEN] Type eins Field x,y End Type Type zwei Field x,y,z Field pitch,yaw,roll Field parent.eins End Type variable.eins = new eins variable\x = 1 variable\y = 1 ;10 Objekte des Types zwei erstellen For i = 0 to 9 objekt.zwei = new zwei objekt\x = 2 objekt\y = 2 objekt\z = 2 objekt\pitch = 0 objekt\yaw = 0 objekt\roll = 0 objekt\parent = variable ;Parent setzen Next ;Abfrage For objekt = each zwei If objekt\parent = variable ;Alle Objekte die zu variable gehören ....... EndIf Next |
||
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich möcht, dass in einem type auf beliebig viele Objekte eines anderen types gelinkt wird und man alle separat ansprechen kann.
Und die Anzahl soll nicht durch ein Blitzarray begrenzt sein. Könnte man das per handle und banks lösen? Wenn ja wie? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group