|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 16.04.2010, 14:31 Titel: BlitzBasicFunktionslibary(bisher 14 funktionierende Befehle) |
|
|
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.
Wenn Interesse an dieser Libary besteht, arbeite ich gerne weiter. |
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 16.04.2010, 16:22 Titel: |
|
|
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 |
|
|
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 16.04.2010, 17:25 Titel: |
|
|
Danke, habe es gleich umgesetzt und ich bekomme keine Fehler mehr, in der nächsten Version ist das dann also anders.
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. |
|
Nach oben |
|
|
Stueber
Anmeldungsdatum: 07.07.2008 Beiträge: 202
|
Verfasst am: 16.04.2010, 17:46 Titel: |
|
|
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 |
|
|
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 16.04.2010, 19:10 Titel: |
|
|
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. |
|
Nach oben |
|
|
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 22.04.2010, 10:10 Titel: |
|
|
Zitat: |
Ich bleibe bei der Funktionssammlung.
|
Warum auch einfacher, wenn es schwieriger geht.... |
|
Nach oben |
|
|
d1rty.h4rry
Anmeldungsdatum: 05.10.2006 Beiträge: 116 Wohnort: Cassel
|
Verfasst am: 04.05.2010, 21:14 Titel: |
|
|
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?
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
d1rty 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 |
|
Nach oben |
|
|
Stueber
Anmeldungsdatum: 07.07.2008 Beiträge: 202
|
Verfasst am: 04.05.2010, 22:07 Titel: |
|
|
Code: | oder seh ich da was falsch? |
Tust du nicht, du hast recht. |
|
Nach oben |
|
|
d1rty.h4rry
Anmeldungsdatum: 05.10.2006 Beiträge: 116 Wohnort: Cassel
|
Verfasst am: 04.05.2010, 22:27 Titel: |
|
|
@Stueber: war auch eher rhetorisch gemeint
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
auf jeden Fall würde ich einige Befehle noch ein bisschen optimieren
d1rty 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 |
|
Nach oben |
|
|
tim.vogt
Anmeldungsdatum: 01.03.2009 Beiträge: 56
|
Verfasst am: 04.05.2010, 22:33 Titel: |
|
|
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 |
|
|
d1rty.h4rry
Anmeldungsdatum: 05.10.2006 Beiträge: 116 Wohnort: Cassel
|
Verfasst am: 04.05.2010, 22:43 Titel: |
|
|
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
d1rty 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 |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 04.05.2010, 23:01 Titel: |
|
|
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 |
|
|
d1rty.h4rry
Anmeldungsdatum: 05.10.2006 Beiträge: 116 Wohnort: Cassel
|
Verfasst am: 04.05.2010, 23:10 Titel: |
|
|
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
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 [/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 |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 05.05.2010, 07:24 Titel: |
|
|
Die Syntax ist so ziemlich die selbe, eben typische BASIC-Syntax. 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. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 05.05.2010, 14:53 Titel: |
|
|
Äh nunja BB wird auch keine Geschwindigkeitsrekorde brechen |
|
Nach oben |
|
|
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 05.05.2010, 19:27 Titel: |
|
|
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. |
|
Nach oben |
|
|
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 16.05.2010, 10:29 Titel: |
|
|
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 |
|
|
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 16.05.2010, 12:27 Titel: |
|
|
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. |
|
Nach oben |
|
|
|
|
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.
|
|