verlinkung von types

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Blatolo

Betreff: verlinkung von types

BeitragMo, Jan 26, 2004 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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.
 

walski

Ehemaliger Admin

BeitragMo, Jan 26, 2004 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
For TypeVar.Type = each Type
if TypeVar\DeinFeld = DeineBedingung then
...
endif
next

Anders gehts nicht.

walski
buh!

Blatolo

BeitragMo, Jan 26, 2004 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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
 

walski

Ehemaliger Admin

BeitragMo, Jan 26, 2004 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jan 26, 2004 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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.
 

walski

Ehemaliger Admin

BeitragMo, Jan 26, 2004 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jan 26, 2004 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jan 26, 2004 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

TheShadow

Moderator

BeitragMo, Jan 26, 2004 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jan 26, 2004 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

TheShadow

Moderator

BeitragMo, Jan 26, 2004 23:00
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 27, 2004 7:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 27, 2004 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 27, 2004 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
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?

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group