Type System in BMAX
Übersicht

![]() |
TimBoBetreff: Type System in BMAX |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
eine kurze Frage: gibt es in Bmax die Möglichkeit Types zu erstellen, die sich im Mainloop selbst aufrufen. Also Types oder Klassen egal, haben ja Methoden, z.B. das Zeichnen. Wenn ich also eine Klasse "Sterne" als Beispiel erstelle, die mir Sterne malt (in ein Canvas), musste ich sie bislang in B3D oder B+ immer selbst aufrufen. DrawSterne(S.Stern) kann ich das dank dem OOP jetzt automatisieren ? ich stell mir das so vor Sterne = New Sterne Mainloop End Mainloop ist leer Lg TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst es auf eine Zeile kürzen indem du eine Funktion schreibst, die das machst, was du möchtest:
TSterne.Update() - in der Hauptschleife. Man könnte das über einen Funktions-Hook vll. auch automatisch an das Flip binden - aber das hab ich selbst noch nicht gemacht und kann dir nichts genaues dazu sagen. Ich würde es auch bei einer Update-Funktion belassen... |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei einfachen Systemen spart man eher wenig Code.
einfaches Beispiel für Sterne: BlitzMax: [AUSKLAPPEN] SuperStrict (ohne die tollen OOP-Möglichkeiten und ungetestet) OOP zeigt hier erst seine Vorteile, wenn es mehrere Klassen gibt, die Gemeinsamkeiten besitzen. Diese Gemeinsamkeiten kommen dann in die abstrakte Basisklasse. (Einmal implementieren, mehrfach nutzen!) Die "konkreten" Objektklassen erweitern die Basisklasse und können somit auf die dort geschriebenen Implementierungen zurückgreifen. (Lese dir am Besten ein paar Tutorials oder OOP-Fragethreads durch.) mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
- Zuletzt bearbeitet von mpmxyz am Mo, Nov 22, 2010 18:53, insgesamt einmal bearbeitet
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ mpm, bei dir kommt ein Error
Missing Type Specifier (Method New wird makiert) das mit dem hook hört sich gut an. ich schau es mir mal an ![]() |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann entferne die Zeile
BTW geile Idee den Link zu löschen anstatt die Liste nach der Instanz zu durchsuchen. Merk ich mir. |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
TimBo hat Folgendes geschrieben: @ mpm, bei dir kommt ein Error
Ja, er hat eine versehentliche "Method New"-Zeile zu viel.
Missing Type Specifier (Method New wird makiert) Aber wie schon von mpmxyz gesagt, OOP kommt dann richtig zum Zuge, wenn das ganze größer wird. Wenn Klassen voneinander abgeleitet sind, und die allgemeinsten Dinge in den obersten Klassen behandelt werden (du rufst dann nur noch TGameObject.UpdateAll() o.ä. auf, die leitets dann an die Unterklassen weiter etc.) ![]() Das mit dem Hook würd ich lassen, ich kann mir vorstellen, dass das eher unübersichtlich und fehleranfällig wird. |
||
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 |
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
das ist ja echt geschickt das System.
kann mir jemand nur sagen, was FIRST LAST und AFTER in BMax funktioniert ? Und bei "Verlinkungen" habe ich auch so meine Probleme. In B3D konnte man sowas machen:oops: Type Schiff field schutz.schild End Type und später dann sowas schreiben Schiff\Schutz\Power = 1 das geht doch bestimmt in BMax auch oder ? BTW: wie geht es, bmax-Code im Portal zu highlighten? Lg TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Highlighten für Blitz3D geht ja mit dem Button unter der Zeile mit den Smileys das vorletzte rechts wo "BB" dransteht, Blitzmax eins daneben (ganz Rechts) wo "BM" dransteht ![]() Und natürlich geht das in BlitzMax, du hättest es einfach nur ausprobieren müssen ![]() Mit After und Last etc. Musst du mit den "TList" Einträgen arbeiten, aber da kenn ich mich selber noch nicht so aus ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
klepto2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hier nochmal eine kleine abgeänderte Variante (der vollständigkeit halber), die ohne einen Funktionsaufruf im Mainloop auskommt (mehr oder wenger). In dem Beispiel wird eine Hookfunktion in den FlipHook eingebaut. Der FlipHook wiederum ruft intern die ihm zugewiesenen Funktionen auf bevor der Flip selbst ausgeführt wird. Für weitere Infos in der Hilfe im Kapitel "Modules/Events/Hook Functions" nachschauen. Hooks selber können nützlich sein, wenn du zb Module schreibst und sichergehen willst, das an einer Stelle auf jedenfall etwas ausgeführt wird. (zb bei Timing berechnungen).
BlitzMax: [AUSKLAPPEN]
First und Last sind in BMax Methoden von TList und funktionieren wie in bb. After selbst gibt es in BMax nicht. Das muss man über umwege über den TLink machen. ( link.NextLink().Value() ). Bei deiner anderen Frage versteh ich nicht so ganz was du meinst. Meinst du sowas? BlitzMax: [AUSKLAPPEN]
BMX Highlighting geht im Forum am besten wenn du in der editbox auf den "BM"-Button klickst und dann deinen Code zwischen die Tags einfügst. Alternativ kannst du die Tags auch von Hand reinschreiben. |
||
Matrix Screensaver
Console Modul für BlitzMax KLPacker Modul für BlitzMax HomePage : http://www.brsoftware.de.vu |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
TimBo hat Folgendes geschrieben: Und bei "Verlinkungen" habe ich auch so meine Probleme. In B3D konnte man sowas machen:oops:
Type Schiff field schutz.schild End Type und später dann sowas schreiben Schiff\Schutz\Power = 1 das geht doch bestimmt in BMax auch oder ? Geht in BMax genauso ![]() BlitzMax: [AUSKLAPPEN] Type Schiff |
||
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 |
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
ah cool , thx !!
was bedeuted aber in dem Code von klepto2 dieses Object( id:Int,data:Object,context:Object ) das kommt 2 mal im Code vor obwohl ich z.B. nie den Integer ID finde ![]() |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist der Datentyp "Funktion, die die Parameter (id:Int,data:Object,context:Object) nimmt und ein Object zurückgibt". | ||
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 |
Macintosh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kuerz: ein Function-pointer | ||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
und das Object( id:Int,data:Object,context:Object )
ist nur dafür gut, dass man eien Funktion erstellen kann, auf die man von außen zugreifen kann? |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Macintosh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
verstehe ich nicht.
Der Funktionszeiger zeigt auf die Funtion TStart.DrawAll und er wird dem FlipHook "zugeteilt". Der pointer wird dadurch jedes flip automatisch aufgerufen aufgerufen. |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich frage mich nur, warum das Hook-Objekt ne ID Data und Context hat ? | ||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Macintosh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
weil eine "Hook-funktion" das so haben muss, bzw. eine Funtionspointer der dem Hook übergeben wird muss eine vor-deffinierte liste an argumenten besitzen. sonst geht es nicht. | ||
undefined |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Beim Fliphook sind diese zusätzlichen Parameter unbedeutend. Bei anderen Hooks können sie aber durchaus von Bedeutung sein (bei Eventhooks zb.).
Dein Anliegen würde ich im Übrigen nicht mit einem Fliphook lösen, es sei denn, Du möchtest Deine Sterne wirklich _immer_ gezeichnet haben (auch in den Menüs und jedem anderen Substate). Für Fliphooks gibt es nur wenige vernünftige Anwendungsmöglichkeiten. Dann aber ist es wirklich richtig praktisch! Beispiele dafür sind FPS-Counter, das Zeichnen eines Mousecursors oder die Abfrage immer gültiger Hotkeys (Screenshot ect). |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok vielen Dank, das hat mir jetzt weitergeholfen. bin mal gespannt ob ich mit bmax zurecht komme oder ob ich mächtig auf die Schnauze fliege. Habe Angst vor OOP ![]() |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Trau Dich! Es braucht ein wenig Zeit und Du wirst sicher auch ein oder zwei mal stolpern, aber wenn Du erstmal die Grundprinzipien verstanden und verinnerlicht hast wirst Du es nicht mehr missen wollen.
Viel Erfolg! |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group