Prüfung des Objekttypen?
Übersicht

![]() |
juse4proBetreff: Prüfung des Objekttypen? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Wie kann ich in BlitzMax solche Objekttests vollziehen: PSEUDOCODE: Code: [AUSKLAPPEN] wenn variable=TWaffe dann hauen wenn variable=TSchild dann blocken wenn nicht tue nix noch eine anmerkung: Ich arbeite im SuperStrict... also wird der compiler denken, dass alle werte, die aus TWaffe kommen (welches eine Tochterklasse von TItem ist), nicht existieren, da Variable ja nur vom Typ TItem ist... Gibts da eine andere Lösung? mfg: juse4pro |
||
Portfolio |LinkedIn |XING |
- Zuletzt bearbeitet von juse4pro am So, Mai 02, 2010 21:49, insgesamt einmal bearbeitet
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN] If TWaffe(Item)<>Null Stichwort: Umcasten Bei einer Vererbung entsteht eine "ist ein"-Beziehung. Das heißt, dass ein Waffenobjekt auch ein Item-Objekt ist und entsprechend genutzt werden kann. Umgekehrt ist es aber nicht garantiert, dass ein Item-Objekt auch ein Waffen-Objekt ist, weil es auch ein Schildobjekt sein könnte. Daher benötigt man explizit eine Umwandlung der Referenz. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ahhh! Jetzt wird mir einiges klar... Dankesehr ![]() |
||
Portfolio |LinkedIn |XING |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
mpmxyz hat Folgendes geschrieben: BlitzMax: [AUSKLAPPEN]
If TWaffe(Item)<>Null Die Null-Prüfung muss man übrigens gar nicht explizit angeben, BlitzMax: [AUSKLAPPEN] If TWaffe(Item) reicht auch schon.
|
||
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 |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Falls du genaueres dazu wissen willst: http://zehr.de/downloads/BlitzMax-OOP.pdf
Das war mein erstes BM-Tut. Es ist sehr ausführlich, ich habe letzens erst wieder dort etwas nachgeguckt. Kann es nur empfehlen. MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nene, schongut, ich weis ja, was Casten ist, aber ich bin nicht draufgekommen, dass ich das hier anwenden kann...
Danke Leute! |
||
Portfolio |LinkedIn |XING |
![]() |
Alfadur |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest auch z.B. deiner Item Klasse eine "Action" (oder so) Methode geben, in der Waffen und Schild Klasse überschreibst du diese Methode so das die Waffe haut und das Schild blockt.
Dann brauchst du bei deinen Items immer nur Item.Action() aufzurufen und der Rest geht von allein ... in etwa so: Code: [AUSKLAPPEN] SuperStrict
Type TItem Global list:TList=CreateList() Field name:String Method New() Self.list.addlast(Self) End Method Method Action() Print name+" macht die Standard Action" End Method Function CreateObject:TItem(name:String) Local i:TItem=New TItem i.name=name Return i End Function Function AllActions() For Local i:TItem=EachIn Self.list i.Action() Next End Function End Type Type TWaffe Extends TItem Method Action() Print "Waffe "+name+" haut!" End Method Function CreateObject:TWaffe(name:String) Local w:TWaffe=New TWaffe w.name=name Return w End Function End Type Type TSchild Extends TItem Method Action() Print "Schild "+name+" blockt!" End Method Function CreateObject:TSchild(name:String) Local s:TSchild=New TSchild s.name=name Return s End Function End Type TSchild.CreateObject("vergammeltes Holzschild") TSchild.CreateObject("Großer Belagerungsschild der Elfen") TWaffe.CreateObject("Schattenmantelstecher Malak-Nir") TItem.CreateObject("Heiltrank") TItem.AllActions() WaitKey() |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
nene, das würde mein Konzept sprengen ![]() |
||
Portfolio |LinkedIn |XING |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group