Vererbung von Types?
Übersicht

![]() |
M0rgensternBetreff: Vererbung von Types? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute.
Wollte mal nachfragen, ob man Types vererben kann. Ich möchte nämlich gerne Gegner programmieren, die nicht sterben, sondern sich aufteilen. Diese sollen dann in etwa die Werte des "alten" gegners übernehmen etc. Ist Vererbung in BlitzBasic (Blitz3D) möglich? Ich möchte nämlich nicht die GegnerErstellen() Funktion umändern. Mit Vererbung wäre das einfacher. Hoffe mir kann jemand helfen. Lg, M0rgenstern |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kurz und knapp: Nein. | ||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also muss ich das doch als neue Funktion machen.
Schade. Okay, danke. Lg, M0rgenstern |
||
Meik |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm mach doch sowas wie:
Code: [AUSKLAPPEN] Gengertyp.type ... function Kopie.type( Quelle.type ) Kopie.type = new Type Kopie\leben = Quelle\leben Kopie\PosX = Quelle\PosX ... return Kopie end function Ist zwar keine Vererbung aber so ersparst du dir ( denk ich mal ) das umbaun deiner Funktion und du hast nur eine Funktion mehr im Quelltext. MFG |
||
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das hab ich mir gedacht, dass sowas besser ist.
Werd ich dann tun, ist ja im Grunde sowas wie Vererbung in dem Moment. Geht halt nur um die Werte etc. Dankeschön. Lg, M0rgenstern |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Vererben was du meinst ist auch ein anderes als das Allgemeine Vererben, dass man so aus der Programmiersprache kennt.
Du musst dem PC schon so sagenw as du vorhast besonders deshalb weil du sicher nicht alle werte einfach kopierst sondern verschiedene anpasst wie zB das Leben oder ähnliches |
||
Fredko |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn du bloß die Werte übergeben willst, gehe doch folgend vor:
Wenn der Gegner kein Leben mehr hat, also Sterben müsste, "speicherst" du alle Werte, die übergeben werden sollen, in einzelne Variablen und erstellst so oft die neuen Gegner wie nötig mit den Variablen die du "gespeichert" hast. Diese sind dann einfache lokale Variablen, die z.B. die Namen der Typefelder haben, am besten mit einem Präfix zur Unterscheidung. Wichtig ist, dass die Variablen während des Aufrufes des zu klonenden Gegners speicherst, denn du wirst die garantiert nicht vom Type abrufen können, wenn du schon ein neues initialisiert hast. Als Beispiel: BlitzBasic: [AUSKLAPPEN]
|
||
! |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Fredko, ja so kann ichs machen.
Aber ich hab neulich im Forum sowas gesehen wie das: Code: [AUSKLAPPEN] Type TTier
field XPos, YPos Field Verschiedene Eigenschaften... end type Type TKatze field Tier.TTier field verschiedene Eigenschaften end type type THund field Tier.TTier field verschiedene Eigenschaften End type . . . So kann man das doch auch halten, oder? Das würde doch im prinzip auch unter Vererbung laufen, oder? Lg, M0rgenstern |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
kann man so machen.
Evtl musste die Handle ![]() |
||
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ah okay.
Das hatte ich nämlich im Hinterkopf, war mir aber nicht mehr sicher. Vielen Dank... Darauf zugegriffen wird ja so: Code: [AUSKLAPPEN] New Tier.TTier
Zuweisungen... New Katze.TKatze Zuweisungen.. Katze\Tier.TTier = (Tiertyp der dazugehört) ;Und dann: for Katze.TKatze = each TKatze Katze\Tier.TTier\PosX Oder ist das falsch? Lg, M0rgenstern |
||
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nicht ganz.
So: Code: [AUSKLAPPEN] Local Tier.TTier=New TTier
Zuweisungen... Local Katze.TKatze=New TKatze Zuweisungen.. Katze\Tier = (Tierobjekt das dazugehört) ;Und dann: For Katze = Each TKatze Katze\Tier\PosX ... Bei New gibt man nur den Typenamen an, z.B. "TTier". Das ".TTier" braucht man nur, wenn man eine neue Variable deklariert, genau wie "#" oder "$". Die "Local"s sind nicht unbedingt nötig, erleichtern aber die Fehlersuche, wenn man eine gute IDE wie IDEal benutzt. |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group