Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

BlitzBasicFunktionslibary(bisher 14 funktionierende Befehle)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 16.04.2010, 14:31    Titel: BlitzBasicFunktionslibary(bisher 14 funktionierende Befehle) Antworten mit Zitat

Hi.

Bestimmt wissen es schon alle, ich schreibe eine Includedatei, mit der man es schafft(wenn das ganze fertig ist) BlitzBasic-2D(und vielleicht 3D) Code mit dem FreeBasic-Compiler zu kompilieren. Bisher umfasst das ganze 14 Befehle(die 3D-Befehle ausgelassen, da diese noch nicht alle funktionieren):
Code:
Graphics breite, höhe [, tiefe] [, modus] = initiiert den Grafikmodus
WaitKey = Wartet, bis eine Taste betätigt wird
Text x, y, string = Gibt einen Text aus
Delay millisekunden = Stoppt Programm für eine bestimmte Zeit
Bild = LoadImage (Datei) = Lädt eine Grafikdatei *
DrawImage bild, x, y = Zeichnet ein Bild auf den Bildschirm (mit Maske)
FreeImage bild = Löscht ein Bild aus dem Speicher *
bild = CreateImage (breite, hoehe) = Erstellt ein neues und leeres Bild *
Plot x,y = Zeichnet einen Punkt auf den Bildschirm
Stream = OpenFile (datei) = Öffnet eine Datei zum lesen/schreiben
wert = ReadInt (stream) = Liese eine Integerzahl aus einer Datei
text = ReadLine (stream) = Liest eine ganze Zeile(String) aus einer Datei
wert = ReadFloat (stream) = Liest eine Kommazahl aus einer Datei
CloseFile stream = Schließt eine Datei


Die Befehle die mit einem * gekennzeichnet sind funktionieren zwar, gegen aber einen >>warning 5(0): Implicit conversion<< aus.

Hier der Source Code, er lässt sich einfach über ein #Include "BB.bas" in die Datei includen:

Code:
declare sub Graphics(maxx as integer,maxy as integer,depth as integer,mode as integer)
declare sub Delay(tim as integer)
declare sub WaitKey
declare sub Text(x as integer,y as integer,texts as string)
declare function LoadImage(datei as string)as integer
declare sub DrawImage(bildx as any ptr,x as integer,y as integer)
declare sub Plot (x as integer,y as integer)
declare function OpenFile(datei as string)as integer
declare sub CloseFile(datei as integer)
declare function ReadLine(datei as integer)as string
declare function ReadInt(datei as integer)as integer
declare function ReadFloat(datei as integer)as single
declare function CreateImage(breite as integer, hoehe as integer)as integer
declare sub FreeImage(bild as integer)

sub Graphics(maxx as integer,maxy as integer,depth as integer,mode as integer)
   screenres maxx,maxy,depth,,mode
end sub

sub Delay(tim as integer)
   sleep tim,1
end sub

sub WaitKey
   Getkey
end sub

sub Text(x as integer,y as integer,texts as string)
   Draw string(x,y),texts
end sub

function LoadImage(datei as string)as integer
   dim bildy as any ptr
   dim as integer breit,hoch
   open datei for binary as #1
      get #1, 19,breit
      get #1,23,hoch
   close #1
   bildy=Imagecreate(breit,hoch)
   Bload datei,bildy
   return bildy
end function

sub DrawImage(bildx as any ptr,x as integer,y as integer)
   put(x,y),bildx,Trans
end sub

sub Plot(x as integer,y as integer)
   Pset (x,y)
end sub

function OpenFile(datei as string)as integer
   dim dateiy as integer
   open datei for input as #1
   return dateiy
end function

sub CloseFile(datei as integer)
   Close #1
end sub

function ReadLine(datei as integer)as string
   dim dateiy as string
   line input #1,dateiy
   return dateiy
end function

function ReadInt(datei as integer)as integer
   dim dateiy as integer
   input #1,dateiy
   return dateiy
end function

function ReadFloat(datei as integer)as single
   dim dateiy as single
   input #1,dateiy
   return dateiy
end function

function CreateImage(breite as integer, hoehe as integer)as integer
   dim bild as any ptr
   bild=Imagecreate(breite,hoehe)
   return bild
end function

sub FreeImage(bild as integer)
   imagedestroy bild
end sub


Und ein Beispiel:
Code:
#include "BB.bas"

dim as any ptr test
dim as integer test2,test4
dim as string test3
dim as single test6

Graphics 200,200,32,0
Text 12,12,"Hello World"
WaitKey
Text 12,22,"Wait"
test=LoadImage("Test.bmp")
DrawImage test,4,4
WaitKey
Cls
test2=OpenFile("Test.txt")
test3=ReadLine(test2)
test4=ReadInt(test2)
test6=ReadFloat(test2)
Print test3
Print test4
print test6
CloseFile test2
waitkey
FreeImage test
End


Vielleicht kann mir ja jemand bei den "Implicit conversion" helfen. grinsen

Wenn Interesse an dieser Libary besteht, arbeite ich gerne weiter. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 16.04.2010, 16:22    Titel: Antworten mit Zitat

Die Fehlermeldung bekommst du, weil du falsche Typen zurückgibst, die nicht mit dem Funktionsheader übereinstimmen.

Bei LoadImage ist die Rückgabevariable vom Typ Any Ptr, sollte aber laut Funktion ein Integer sein und das gleiche bei CreateImage.

Desweiteren muss der Typ von 'bild' in der Sub FreeImage vom Typ Any Ptr sein und kein Integer.

Ich finde es aber generell nicht sinnvoll alle Befehle mehr oder weniger nachzubauen. Besser wäre ein Wrapper in Form einer DLL, über die man die BlitzBasic-Befehle direkt aufrufen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 16.04.2010, 17:25    Titel: Antworten mit Zitat

Danke, habe es gleich umgesetzt und ich bekomme keine Fehler mehr, in der nächsten Version ist das dann also anders. grinsen

Ich halte es nicht für sinnvoll, eine DLL zu schreiben. Soweit ich weiß, wird das unter DOS und Linux nicht funktionieren und der Vorteil der Platzformunabhängigkeit wäre verloren. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 16.04.2010, 17:46    Titel: Antworten mit Zitat

Naja, auf Linux gibts ein Äquivalent (.so Dateien) und für DOS kann man ja die Funktionen als Quelltext liefern. Alternativ kann man die Funktionen noch in eine statische Bibliothek kompilieren oder nur kompilieren und sie bei der DOS Version dann dazulinken. Egal wie du dich entscheidest, der Quelltext wird nahezu identisch für alle Möglichkeiten.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 16.04.2010, 19:10    Titel: Antworten mit Zitat

Aber so ist es für mich einfacher, da ich erstens auch gar kein Windows habe, wo ich eine DLL erzeugen könnte. Ich bleibe bei der Funktionssammlung. grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 22.04.2010, 10:10    Titel: Antworten mit Zitat

Zitat:

Ich bleibe bei der Funktionssammlung.


Warum auch einfacher, wenn es schwieriger geht.... lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
d1rty.h4rry



Anmeldungsdatum: 05.10.2006
Beiträge: 116
Wohnort: Cassel

BeitragVerfasst am: 04.05.2010, 21:14    Titel: Antworten mit Zitat

hi Westbeam:
kenn mich jetzt mit BB nicht so wirklich aus aber ist es da nicht möglich 2 dateien gleichzeitig zu öffnen?
denn wenn du bspw.
Code:

Datei1 = OpenFile( "Test.txt" )
Datei2 = OpenFile( "Test2.txt" )

Datei1Line = ReadLine( Datei1 )
Datei2Line = ReadLine( Datei2 )
[...]

so etwas machst müsste eigentlich ein Fehler kommen denn:
Code:

function OpenFile(datei as string)as integer
   dim dateiy as integer
   open datei for input as #1
   return dateiy
end function

und sämtliche andren Datei-Befehle verwenden immer "#1"
bei "ReadLine" der Parameter "datei as Integer" ist doch dann auch ziemlich überflüssig? lächeln
Code:

function ReadLine(datei as integer)as string
   dim dateiy as string
   line input #1,dateiy
   return dateiy
end function


oder seh ich da was falsch?
is mir nur mal so eben aufgefallen lächeln

d1rty happy h4rry
_________________
"Das Fernsehen ist so etwas wie eine geistige Neutronenbombe, das Gehirn wird weggestrahlt. Nur der Kopf bleibt da!" -Olliver Kalkhofe
-> http://fernsehkritik.tv/tv-magazin/
"Wenn alle Stricke reißen, dann häng ich mich auf", Karl Kreiss lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 04.05.2010, 22:07    Titel: Antworten mit Zitat

Code:
oder seh ich da was falsch?

Tust du nicht, du hast recht. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
d1rty.h4rry



Anmeldungsdatum: 05.10.2006
Beiträge: 116
Wohnort: Cassel

BeitragVerfasst am: 04.05.2010, 22:27    Titel: Antworten mit Zitat

lächeln @Stueber: war auch eher rhetorisch gemeint lächeln

aber überhaupt, warum nimmt man für BlitzBasic code nicht einen (Äh...) BlitzBasic-Compiler
Ich denke auch, dass diese Art BB in FB zu implementieren, bzw zu übersetzten nicht gerade (zur Laufzeit) geschwindigkeitsrekorde knacken wird..
wenn die BB-Befehle wirklich so aufgebaut sind bin ich ein bisschen froh, dass es FB gibt grinsen
auf jeden Fall würde ich einige Befehle noch ein bisschen optimieren

d1rty happy h4rry
_________________
"Das Fernsehen ist so etwas wie eine geistige Neutronenbombe, das Gehirn wird weggestrahlt. Nur der Kopf bleibt da!" -Olliver Kalkhofe
-> http://fernsehkritik.tv/tv-magazin/
"Wenn alle Stricke reißen, dann häng ich mich auf", Karl Kreiss lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
tim.vogt



Anmeldungsdatum: 01.03.2009
Beiträge: 56

BeitragVerfasst am: 04.05.2010, 22:33    Titel: Antworten mit Zitat

d1rty.h4rry hat Folgendes geschrieben:

aber überhaupt, warum nimmt man für BlitzBasic code nicht einen (Äh...) BlitzBasic-Compiler


Weil der was kostet, und man durch das Einbauen in FreeBasic gleich FB und BB lernt?
_________________
"Nichts ist wahrhaftig und alles ist erlaubt."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
d1rty.h4rry



Anmeldungsdatum: 05.10.2006
Beiträge: 116
Wohnort: Cassel

BeitragVerfasst am: 04.05.2010, 22:43    Titel: Antworten mit Zitat

tim.vogt hat Folgendes geschrieben:
Weil der was kostet, und man durch das Einbauen in FreeBasic gleich FB und BB lernt?


ja da hast du natürlich recht...
aber warum kostet der was? is der so toll?
ich werd wohl mal googln müssen lächeln

d1rty happy h4rry
_________________
"Das Fernsehen ist so etwas wie eine geistige Neutronenbombe, das Gehirn wird weggestrahlt. Nur der Kopf bleibt da!" -Olliver Kalkhofe
-> http://fernsehkritik.tv/tv-magazin/
"Wenn alle Stricke reißen, dann häng ich mich auf", Karl Kreiss lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 04.05.2010, 23:01    Titel: Antworten mit Zitat

d1rty.h4rry hat Folgendes geschrieben:
aber warum kostet der was? is der so toll?

es soll ja noch leute geben, die meinen, dass man mit einem haufen bits geld verdienen kann.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
d1rty.h4rry



Anmeldungsdatum: 05.10.2006
Beiträge: 116
Wohnort: Cassel

BeitragVerfasst am: 04.05.2010, 23:10    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
es soll ja noch leute geben, die meinen, dass man mit einem haufen bits geld verdienen kann.

Wenn es sein Geld wert ist durchgeknallt
Aber ich schätze BB kann nichts, was man mit FB und ein paar OGL oder DX Kenntnissen nicht auch kann.
Aber is Ok, vllt is da die Synthax leichter verständlich o.ä, egal lächeln [/code]
_________________
"Das Fernsehen ist so etwas wie eine geistige Neutronenbombe, das Gehirn wird weggestrahlt. Nur der Kopf bleibt da!" -Olliver Kalkhofe
-> http://fernsehkritik.tv/tv-magazin/
"Wenn alle Stricke reißen, dann häng ich mich auf", Karl Kreiss lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 05.05.2010, 07:24    Titel: Antworten mit Zitat

Die Syntax ist so ziemlich die selbe, eben typische BASIC-Syntax. Zunge rausstrecken Es ist halt u.A. noch einfacher, was Grafisches hinzuzaubern.

Zitat:

Aber ich schätze BB kann nichts, was man mit FB und ein paar OGL oder DX Kenntnissen nicht auch kann.

Stimmt, sind beide Turing-vollständig, du kannst damit so ziemlich das selbe machen. Zunge rausstrecken
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 05.05.2010, 14:53    Titel: Antworten mit Zitat

Äh nunja BB wird auch keine Geschwindigkeitsrekorde brechen grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 05.05.2010, 19:27    Titel: Antworten mit Zitat

Nun ja. Blitzbasic hat so seine gewissen Vorteile. Besonders die einfache 3D-Spieleprogrammierung. Einfache Befehle wie LoadEntity(ein beliebiges Modell laden, wie 3ds,b3d,x und viele mehr). Man kann es so sagen: Du kannst es schaffen, an einem Tag einen 3D-Ego Shooter zu programmieren mit gerade einmal 200-300 Zeilen Code. Das waren auch schon die Vorteile. Nachteile sind folgendes:
-Läuft nur auf Windows 32 Bit(unter Windows 7 läuft es nicht mehr richtig)
-Kostet Geld
und noch mehr, habe aber gerade keine Zeit den Rest aufzulisten. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 16.05.2010, 10:29    Titel: Antworten mit Zitat

Zitat:

unter Windows 7 läuft es nicht mehr richtig


Also bei mir läuft B3D 1.105 mit Win7 einwandfrei (Notebook AMILO)
Im Compilat werden jetzt auch durch ein Programm(Freeware) Dx9 und Dx10-Befehle benutzt statt Dx7.

Keine Abstürze oder unerklärlichen Dinge.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 16.05.2010, 12:27    Titel: Antworten mit Zitat

Hast du es auch mit der 64 Bit Version getestet?
Da funktioniert es soweit ich weiß nämlich nicht.

Und BlitzBasic funktioniert nicht unter Linux,DOS und Win_16. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz