QBASIC-Club
Home - QBasic - Tutorails - DirectQB


Weitere Teile:
DirectQB Teil 1 - Installation
DirectQB Teil 2 - Primitive Drawroutinen
DirectQB Teil 3 - Mouse und Sound
DirectQB Teil 4 - Sprites
DirectQB Teil 5 - Keyboard

DirectQB Teil 2 von Soeren Dressler

Nachdem nun DirectQB erfolgreich installiert wurde, kann man mit der Programmierung beginnen.
Fangen wir als erstes mit den so genannten primitiven Drawroutinen an. Ein QBasic-Programmierer versteht darunter, die von QBasic gegebenen Möglichkeiten zur Grafikprogrammierung. Dazu gehören zum Beispiel die Befehle LINE, PSET, POINT usw. DirectQB bietet diese Möglichkeiten auch, nur dass diese auf Assembler basieren und somit um ein vielfaches schneller sind, als die Befehle von QBasic. Die aller erste Zeile in dem Programm sollte 'INCLUDE: 'DIRECT.BI' sein. Dieses Kommando startet die Liste mit DirectQB-Befehlen, die erst jetzt verwendbar werden.
Als nächstes muß DirectQB gestartet werden. Das erfolgt durch folgenden Befehl:
DQBINIT (a, b, c)
Als erstes sollte man wissen, dass das eine Funktion ist, die einen Wert zurück liefert. Normalerweise ist der Wert 0. Das passiert aber nur wenn alles in Ordnung ist. D.h. wenn keine Fehler aufgetreten sind. Wenn es aber doch zu Fehler gekommen ist, wird ein Wert ungleich 0 zurück geliefert. In diesem Fall muß DirectQB sofort aus dem Speicher entfernt werden bevor es zu schwerwiegenderen Fehlern kommt, wie einem Systemabsturz. Für diese Aktion gibt es den Befehl DQBclose, auf jeden Fall vor dem Beenden des Programms stehen sollte. So sollte auf jeden Fall der Anfang aussehen:

'$INCLUDE: 'DIRECTQB.BI'
IF DQBINT (A, B, C) THEN PRINT "Es ist ein Fehler aufgetreten": DQBclose
PRINT "ES ist kein Fehler aufgetreten"
SLEEP
DQBclose
END

Was bedeutet nun A, B und C?
Diese Werte beschreiben die Speicherverwaltung. A gibt die Anzahl der Layer, B die Anzahl der Soundsampels und C die Größe des frei verwendbaren EMS Speichers an. Ein Beispiel:
DQBINIT(10, 5, 100)
Es wurden 10 Layer, 5 Soundsamples und 100 kb Speicher reserviert.

Was ist ein Layer?
Ein Layer ist eine Art grafische Plattform die wie Bildschirmseiten im EMS abgelegt werden. Jeder Layer benötigt 64kb Speicher und besitzt eine Größe von 320*200 Pixeln. Jeder Layer bekommt eine Nummer mit der er angewählt werden kann. Die 0 entspricht dem sichtbaren Bildschirm alle anderen Nummern die dahinter liegenden Seiten. Man kann nun beliebig auf diesen Layern malen, den Inhalt auf andere Layer kopieren und löschen. Vorher sollte man aber den Bildschirm auf Grafik umschalten. Normalerweise benutzt ein QBasic-Programmierer dafür den Befehl SCREEN 13. In diesem Fall benötigt man aber den Befehl DQBinitVGA welcher dem Format 320*200 mit 256 Farben entspricht.
Um nun einen Pixel auf den Bildschirm zu bringen, benutzt man das Kommando
DQBpset Layer, X, Y, Farbe
Layer gebt die Nummer des Layer's an auf dem gemalt werden soll. X und Y sind X- und Y-Koordinaten und Farbe gibt den Farbwert an.
Ähnlich funktioniert das mit dem LINE Befehl:
DQBline Layer, X1,Y1,X2,Y2, Farbe
Wobei hier X1 und Y1 die Anfangskoordinaten und X2 und Y2 die Endkoordinaten der Geraden sind.
Hier ein Beispiel:

'$INCLUDE: 'DIRECTQB.BI'
IF DQBINT (10, 0, 0) THEN PRINT "Es ist ein Fehler aufgetreten": DQBclose
DQBinitVGA
DO
X% = RND * 320
Y% = RND * 200
C% = RND * 255
DQBpset 0, X%, Y%, C%
LOOP UNTIL INKEY$ = ""

DO
X1% = RND * 320
Y1% = RND * 200
X2% = RND * 320
Y2% = RND * 200
C% = RND * 255
DQBline 0, X1%, Y1%, X2%, y2%, C%
LOOP UNTIL INKEY$ = ""

DQBclose
END

Um nun den Inhalt eines Layers auf einen anderen zu kopieren gibt es den Befehl
DQBcopylayer A, B
Der Wert A ist die Nummer des zu kopierenden Layers und B die Nummer des Layers auf den der Inhalt kopiert werden soll.
Der Ausdruck zum Löschen eines Layers heißt:
DQBclearlayer LAYER
LAYER ist die Nummer des Layers. Ist der Wert = 0 , dann wird der Bildschirm gelöscht.
Die Funktion POINT gibt es bei DirectQB auch.Sie lautet:
DQBpoint LAYER, X, Y
Diese Funktion liefert den Farbwert an Stelle X und Y zurück. LAYER ist wieder die Nummer des Layers. Hier ein Beispiel:
C% = DQBPOINT(0, 10, 20)

Der Farbwert an Position X = 10 und Y = 20 des Bildschirms wurde auf C% gespeichert.
 
 
 

Webmaster: Soeren Dressler

 
Click here now to get your free web page!!