[B3D] Type Engine (erweiterte OOP in B3D)

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

E. Urbach

ehemals "Basicprogger"

Betreff: [B3D] Type Engine (erweiterte OOP in B3D)

BeitragSo, Jan 15, 2006 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Download (mit Beispielen)

Ich habe mir mal die Zeit genommen und eine kleine Type Engine gecodet.
Dies dürfte vor allem die Personen interessieren, die kein BMax haben.
Es ist eine Engine, die auf den durch B3D gegebenen "Types" (Klassen) basiert.
Aktuelle Version: 0.12

;******************************************************************
;Features:
;******************************************************************

; + Types erstellen
; + Felder fuer Types
; + Instanzen erzeugen
; + Standardwerte fuer Felder einstellbar
; + Vererbung
; + Methoden fuer Types
; + Precompiler (w.i.p)


;******************************************************************
;Nicht so gut:
;******************************************************************

; - Werte fuer Felder sind immer vom Typ String --> hohe Speicherbelastung --> langsam
; - Includes muessen manuell veraendert werden


;******************************************************************
;Known Bugs:
;******************************************************************

; - Mindestens ein Feld muss vorhanden sein


;******************************************************************
;Geplant:
;******************************************************************

; > Felder von Typen koennen von einem Typ sein
; > Precompiler, um die Methoden zu realisieren
; > Vollstaendige Typendeklaration in einem String abrufbar
; > Mehrere Werttypen fuer Felder
; > Neues Schluesselwort: this (wie self)
; > Polymorphie


;******************************************************************
;Funktionen:
;******************************************************************

; > CreateType
; -> erstellt einen neuen Typ

; > CreateInstance
; -> erstellt eine neue Instanz eines Typs

; > SetValue ( tinst.TInstance, vname$, nvalue$ )
; -> setzt den wert eines Felds mit dem Namen vname$ einer Instanz tinst auf nvalue$

; > GetValue ( tinst.TInstance, vname$ )
; -> gibt den wert eines Felds mit dem Namen vname$ einer Instanz tinst zurueck


;******************************************************************
;Konstanten:
;******************************************************************

; > TE_VERSION
; -> die aktuelle Version der Type-Engine

; > TE_PC_VERSION
; -> die aktuelle Version des Precompilers

Ich hab zwar kein B+, aber es sollte dennoch problems darauf laufen.

Wenn ich den Precompiler endlich fertig geschrieben habe, dann kann man folgenden Code problemlos
unter B3D compilieren lasse:

Code: [AUSKLAPPEN]

Type TPoint
  Field x=5 ;Standardwerte
  Field y=2
End Type

Type TVector extends TPoint ;normalerweise nur in BMax
  Field z=1
End Type

vec.TVector = New TVector
vec\x = 1
vec\y = 1
vec\z = 1


Vector ist sozusagen die Subklasse von Point in diesem Beispiel.

Da ich den Precompiler noch nicht fertig geschrieben hab, muss man leider diesen Code benutzen:

Code: [AUSKLAPPEN]

cPoint.TType = CreateType("Point","x=5;y=2")
cVector.TType = CreateType("Vector","z=1", "Point")


Es wird ebenso möglich sein, Methoden zu definieren:

Code: [AUSKLAPPEN]

Type TPoint
  Field x=0
  Field y=0
 
  Method Draw()
    Plot Self\x, Self\y
  End Method
End Type


Falls jemand weitere Informationen braucht, kann er sich die beiliegende Dokumentation anschauen.

Download (mit Beispielen)

P.S.: gehört das zu Projekte?
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik
  • Zuletzt bearbeitet von E. Urbach am Do, Apr 27, 2006 16:57, insgesamt 5-mal bearbeitet
 

E. Urbach

ehemals "Basicprogger"

BeitragMo, Jan 16, 2006 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
neue Version 0.05:

+ eine Vorabversion des Precompilers
+ Einige Bugs verhindert

Man kann folgenden Code schon mit dem Precompiler compilieren lassen:

Code: [AUSKLAPPEN]

Type Point
   
   Field x=15
   Field y=30
   
End Type



Type Vector extends Point
   
   Field z=17
   
End Type

anders:
Code: [AUSKLAPPEN]

Point.TType = CreateType("Point","x=15;y=30")
Vector.TType = CreateType("Vector","z=17", "Point")


(siehe obiger Code/Download)

Morgen werde ich mir dann die Methoden vornehmen -> eine Idee habe ich schon...
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik

Artemis

BeitragMo, Jan 16, 2006 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht sehr aufwendig und genial aus.

Werds mir beizeiten mal angucken.
 

E. Urbach

ehemals "Basicprogger"

BeitragDo, Apr 27, 2006 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe jetzt nach langer Zeit mal wieder an meiner Type Engine gearbeitet.
Neue Version 0.12:

+ Precompiler erweitert -> Werte setzen und lesen
+ Bugfix: Kommentare verursachten einen Fehler

Download

Ich habe schon angefangen die Methoden zu realisieren, aber es braucht noch einige Zeit, bis es fertig ist.

Zur Info: Alle 0.X Versionen sind Betas, ich wäre euch dankbar, wenn ihr diese testen könntet, da es wahrscheinlich so viele Bugs geben wird, dass man sie gar nicht alle aufzählen kann. Am besten wäre es, wenn ihr mir sagt, ob example.bb bei euch erfolgreich abgelaufen ist.

P.S. Den Precompiler (der zurzeit nicht richtig funktioniert) startet ihr mit der beiliegenden Datei pre_comp.bb, sie "precompiliert" die Datei pre_comp_example.bb
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik

Xaymar

ehemals "Cgamer"

BeitragMo, März 01, 2010 1:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch wenn der Thread schon ziemlich alt ist, hat das vielleicht noch wer?
Warbseite
 

#Reaper

Newsposter

BeitragMo, März 01, 2010 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ganz oben ist doch der Download-Link. Der geht auch noch/wieder. Oder meinst du noch etwas anderes?
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Xaymar

ehemals "Cgamer"

BeitragMo, März 01, 2010 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich meinte ich den Link in dem Beitrag über mir, aber der im ersten geht ja^^
Warbseite

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group