|
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.
|