Übersicht
DirectQB Teil 4 - Sprites
Neuvorstellung
von Explosive
Interview
zu Explosive
Neuvorstellung von LaOS
Neues Projekt
von GvM Entertainment
|
In dieser Ausgabe gibt es natürlich
wieder ein DirectQB Tutorial. Diesmal geht es um Sprites.
Zusätzlich wird ein Spiel von Iguansoft
vorgestellt und ich habe mit dem Programmierer darüber auch ein Interview
geführt, welches ihr auch in dieser Ausgabe lesen könnt.
Dann gibt es einen Test über LaOS,
einem netten kleinen OS in QBasic von Urs Langmeier.
Und ganz exklusiv hat die QBasic-Times
die ersten Information zum neuen Projekt von GvM Entertainment.
Viel Spaß beim Lesen!
In diesem Tutorial geht es nun um Sprites
in DirectQB.
Aus QBasic selbst, kennt man nur die Befehle
GET und PUT. Leider besitzen diese einige Nachteile. Sie sind starr, nicht
transparent und dürfen nicht den Bildschirmrand verlassen. Obwohl
gerade diese Effekte beim programmieren benötigt werden.
Bei DirectQB ist das anderes.
Die Palette der Grafikfunktionen ist sehr
groß. Sprites können transparent dargestellt werden. Sie können
den Bildschirm verlassen. Man kann Sprites drehen und in ihrer Größe
ändern und sie können im RAM abgelegt werden.
Um Sprites ein zu scannen, kann man den Befehl DQBget benutzten. Er arbeitet genauso wie Get von QBasic nur dass der Syntax etwas anders ist.
DQBget Layer, X1, Y1, X2, Y2, SpriteSeg, SpriteOff
Mit Layer ist natürlich die Nummer
des Layers gemeint, von dem das Bild eingescannt werden soll.
X1, Y1, X2 und Y2 sind die Koordinaten
des Feldes. Aber was ist SpriteSeg und SpriteOff.
Diese beiden Werte geben die Speicherbereich
des Arrays an. Keine Angst den muß und kann man gar nicht wissen.
Den weiß nur QBasic selbst.
Mit VARSEG() und VARPTR() kann man diese
Werte ermitteln.
Um nun das Bild auch wieder auf den Bildschirm
zu bringen gibt es den Befehl DQBput.
Das ist der Syntax
DQBput Layer, X, Y, SpriteSeg, SpriteOff
X und Y sind die Koordinaten an denen das
Sprite gemalt werden soll.
SpriteSeg und SpriteOff werden wieder
mit VARSEG() und VARPTR() ermittelt.
Hier ist einfach mal ein kleines Beispiel:
'$INCLUDE: 'DIRECTQB.BI'
' Setzte Array mit
der Länge 1000
DIM bild%(1000)
' Initialisiere DQB
mit 2 Layern
IF DQBinit(2, 0,
0) THEN DQBclose: PRINT DQBerror$: END
' starte VGA Grafik
Modus
DQBinitVGA
' male einfaches
Muster
FOR Y%=0 TO 20
FOR
X%=0 TO 20
DQBpset(1,
X%, Y%, (X%*Y%))
NEXT X%
NEXT Y%
' Scanne Sprite ein
und lege es auf dem Array „BILD%“ ab
DQBget 1, 0, 0,
20, 20, VARSEG(bild%(0)), VARPTR(bild%(0))
' Starte Schleife
DO
' Male Sprite
an zufällige Position
DQBput 0,
RND * 100, RND * 100, VARSEG(bild%(0)), VARPTR(bild%(0))
' Verlasse Schleife
wenn Taste gedrückt wird
LOOP UNTIL INKEY$
<> ““
' deaktiviere DQB
DQBclose
END
Nun gibt es ja noch viele andere Möglichkeiten,
mit den man in DirectQB ein Sprite darstellen kann.
Zum Beispiel kann man es drehen. Das geht
mit DQBrPut.
Syntax:
DQBrPut Layer, X, Y, SpriteSeg, SpriteOff, Winkel, Zoom
Layer ist wieder der Layer auf den das
Bild gemalt werden soll.
X und Y sind die Koordinaten.
SpriteSeg und SpriteOff sind der Speicherbereich.
Winkel ist ein Wert zwischen 0 und 255.
Bei 0 wird das Bild um 0° gedreht. Bei z.b. 128 wird das Bild um 180°
gedreht. Bei 256 wird das Bild um 360° gedreht.
Zoom ist der Vergrößerungswert.
Er wird in Prozent angegeben. 100 ist die Originalgröße. 200
ist die doppelte Größe und bei 50 wird das Bild halbiert.
Es gibt aber auch einen Befehl, mit dem
man das Sprite mit veränderten Seitenlängen darstellen kann.
Es ist der Befehl DQBsPut
Der Syntax:
DQBsPut Layer, X, Y, SpriteSeg, SpriteOff, Neue Breite, Neue Höhe
Layer, X, Y, SpriteSeg und SpriteOff sind
wieder das selbe wie oben.
Mit „neuer Breite“ gibt man die Breite
an mit der das Sprite dargestellt werden soll.
Mit „neue Höhe“ gibt man die Höhe
an mit der das Sprite dargestellt werden soll.
Es gibt noch einen Put Befehl der dem von
QBasic am ähnlichsten ist. Er ist zwar der schnellste, ist aber weder
transparent noch kann er den Bildschirmrand verlassen. Es ist DQBfPut
Syntax:
DQBfPut Layer, X, Y, SpriteSeg, SpriteOff
Alle Werte sind wieder die selben wie oben.
Alle diese Möglichkeiten sind zwar
toll, haben aber den Nachteil, dass sie sehr viel Speicher benötigen,
von welchem, in QBasic, ja sowieso schon immer Mangel herrscht.
Wenn man also sehr viel Bilder hat, sollte
man am besten DQBxPut benutzten. Dieser
Befehl scannt den Inhalt eines Layer ‘s ein und legt in auf einem anderen
wieder ab ohne Speicher zu Benutzten.
Syntax:
DQBxPut QuellLayer, X1, Y1, X2, Y2, ZielLayer, x, y
QuellLayer ist der Layer von dem das Bild
eingescannt werden soll.
X1, Y1, X2 und Y2 sind die Eckkoordinaten
des Sprits welches eingescannt werden soll.
ZielLayer ist der Layer auf den das Sprite
gemalt werden soll und
x und y sind die Zielkoordinaten.
In der Breite gibt es keine Beschränkungen
aber in der Höhe. Das Sprite darf höchstens 50 Pixel hoch sein.
Leider ist es ein bißchen langsamer
als DQBput. Aber Transparens und und Clipping ist möglich.
Hier ist ein Beispiel:
'$INCLUDE: 'DIRECTQB.BI'
' Initialisiere DQB
mit 2 Layern
IF DQBinit(2, 0,
0) THEN DQBclose: PRINT DQBerror$: END
' erstelle Bilder
auf Layer 2
FOR i% = 0 TO 14
DQBbox 2, (i% * 16),
0, (i% * 16) + 15, 15, 4
DQBline 2, (i% *
16) + (15-i%), 15, (i% * 16) + i%, 0, 40
DQBline 2, (i% *
16) + 15, i%, (i% * 16), (15 – i%), 40
NEXT i%
' starte VGA Grafik
Modus
DQBinitVGA
FOR i% = -16 TO 320
' lösche layer
1
DQBclearLayer 1
' Suche Frame aus
Frame% = ((i% +
16) \ 2) MOD 15
' Male Frame auf
Layer 1
DQBxPut 2, (Frame% * 16), 0, (Frame% * 16) + 15, 15, 1, i%, 92
' warte auf Bildschirm
DQBwait 1
' Kopiere Layer 1
auf Bildschirm
DQBcopyLayer 1,
VIDEO
NEXT i%
DQBclose
END
Das war‘s für dieses Mal. Das nächste Mal lernen wir, wie man BMP und PCX einbindet und wie man die Palette manipuliert.
Neuvorstellung
von Explosive von Manuel Oetiker "Iguan"
Es gibt immer wieder Spiele, welche einfach
gelungen sind. An diesen Spielen erkennt man einfach, dass der Entwickler
sehr viel Zeit und Mühe hinein gesteckt hat.
Eines diese Spiele ist "Explosive"
von Manuel Oetiker "Iguan".
Das Spielprinzip ähnelt sehr dem alte
Sokoban aus den Zeiten des 286. Der Spieler, welcher in die Rolle eines
Bombenenschärfungsspezialisten schlüpft, muß, in der Kanalisation,
durch das Verschieben der Wände an Bomben heran kommen, um diese zu
entschärfen. Die schon sehr anspruchsvollen Levels erfordern eine
große Portion logischen Denkens. Hinzu kommt, dass ein Timer abläuft,
der den Spieler zum schnellen Handeln zwingt und es so immer wieder
Fehler provoziert.
Nicht nur das Spiel selbst, sondern auch
das lustige Intro sind ein Muß für jeden Kombinationsfreak.
Mein Tip: Seht es euch an!
Das Spiel gibt es explosiv auf der QBasic-Club Homepage.
Ich habe natürlich dem Programmierer
eine Fragen gestellt.
Das Interview ist hier.
Soeren:
Ich werde jetzt nicht fragen: "Wie hast du das gemacht?" aber:Iguan:
Wie lange hast du an dem Spiel gearbeitet?
ca. 2 MonateSoeren:
Wie bist du auf die Idee gekommen, so ein Spiel zu programmieren?Iguan:
Die Idee hab ich von einem Game&Watch-Spiel (von Nintendo®) abgeguckt und etwas aufgemotzt(grössere Bewegungsfläche und mehrere Bomben).Soeren:
Da dieses Spiel früher eines meiner Lieblings Game&Watch-Spiele war, und mir dieses eines Tages wieder in die Hände kam, entschloss ich mich es "nach-" zu programmieren.
Die Grafik sieht sehr gut aus. Ist sie in Handarbeit entstanden?Iguan:
Ja, ganz Explosive ist in Handarbeit enstanden. Obwohl ich nicht besondersSoeren:
zeichnerisch begabt bin, habe ich mich sehr bemüht, dass das Ganze optisch
gut rüberkommt.
Wie hast du dir die Levels ausgedacht?
Iguan:
Ich habe die Levels mit dem fast gleichen Editor kreirt, wie der, der beim Spiel mit dabei ist. Die Levels habe ich fortlaufend schwieriger gemacht, damit das Spiel nicht allzu schnell langweilig wird und man dabei langsam das Spielprinzip kennen lernt.Soeren:
Wird es einen Nachfolger geben?Iguan:
Nein, sehr wahrscheinlich nicht! Das Einzige, was ich vielleicht machen werde, sind Zusatzlevels. Ich habe Explosive update-tauglich gemacht, so dass man neue Levels anhängen kann.Soeren:
Was ist als nächstes geplant?Iguan:
Zuerst werde ich noch etwas mit DirectQB experimentieren. Besonders mit transparenten Sprites, Maus und Sound werde ich mich intensiver befassen.
Mein nächstes Spiel könnte ein Jump n' Run werden...
Soeren:
Vielen Dank!
LaOS
Wenn man OS hört denkt man zunächst
an ein Betriebsystem wie Windows, DOS oder Linux.
Aber ein Operation System in QBasic kann
sich keiner vorstellen.
Seit einiger Zeit haben sich - warum auch
immer - QBasicprogrammierer dazu entschieden, ein OS in QBasic zu schreiben.
Jeder der ein wenig Ahnung von Computern
hat und sich zusätzlich mit Programmieren auskennt, wird wissen, dass
dieses Unterfangen absolut unmöglich ist.
Einige, die einen Höllentrubel um
angebliche, gelungene Ergebnisse machten und sogar noch Geld damit verdienen
wollten, wurden sehr unsanft auf den Boden der Tatsachen zurück beordert.
Nichtsdestotrotz machen viele Programmierer
weiter und einige Ergebnisse können sich sogar sehen lassen. Nur handelt
es sich dabei eher um eine Grafische Benutzeroberfläche als um ein
Betriebssystem.
Eines dieser OSs ist LaOS v.5 von Urs Langmeier.
LaOS ist ein Warenzeichen
von Urs Langmeier.
Es ist, wie schon gesagt, kein OS. Obwohl
das OS auch für Open Sorce (offener Quellcode) stehen könnte.
Jedenfalls ist es eine nett gemachte Benutzeroberfläche,
die einige, nicht mal schlechte, Programme mitbringt.
LaOS ist für QBasic 1.1 ausgerichtet.
Es arbeitet mit einer ungewöhnlichen Auflösung von 640*350 mit
16 Farben.
Auf den ersten Blick wirkt es sehr einfach,
aber hinter den Ordnern befindet sich ein sehr komplexer Quellcode.
Die Steuerung erfolgt per Tastatur. Das
ist zwar nicht schlimm, wird aber sehr anstrengend, weil die Tastaturbelegung
bei jedem Programm und Fester anders ist. Man fängt die Mouse richtig
an zu vermissen. Ebenso nervend ist das ständige Zugreifen auf das
Diskettenlaufwerk, auch wenn sich überhaupt keine Diskette im Laufwerk
befindet. Ist dann aber doch eine drin, benötigt LaOS eine halbe Ewigkeit
um festzustellen, das die Diskette gar nicht benötigt wird.
Auf der andren Seite enthält LaOS
viele Features.
Da sind zum Beispiel ein Texteditor, ein
Drawprogram, ein Musikprogramm zum einfachen komponieren und auch ein paar
Systemprogramme, welche den Computer ein wenig durchforschen können.
In einer der Dokumentationen ist von einer
Verschlüsselungsoftware, die mit in LaOS integriert sein soll, die
Rede. Gefunden hab ich es aber nicht.
Es gibt die Möglichkeit neue Ordner
zu erstellen und wieder zu löschen.
Ganz ansehnlich sind auch die vielen Schemen,
die dem Benutzer die Möglichkeit geben, das Gesamtbild zu verändern.
Leider ist die Installation von LaOS ein
wenig umständlich, wenn nicht sogar unnötig.
Wenn man LaOS ist ein Verzeichnis entpackt
hat, muß man die Install.bat starten. Ein Teil des Programms wird
dabei in ein Verzeichnis mit dem Namen „c:\laos“ kopiert. Die eigentliche
Software bleibt aber im selbst gewähltem Verzeichnis und muß
auch dort bleiben.
Im Großen und Ganzen kann man sagen,
dass LaOS eine gelungene Grafische Benutzerobefläche ist, die noch
ein paar Macken besitzt. Aber welches Betriebsystem ist schon perfekt.
Soeren Dressler über LaOS von Urs Langmeier
Mehr Informationen und den Download gibt's
auf
http://come.to/laos2000
Neues Projekt von GvM Entertainment
GvM Entertainment entwickelt zur Zeit ein
Rollenspiel und die QBasic-Times hat exklusiv die ersten Informationen
dazu.
Der Story nach, schlüpft der Spieler
in die Rolle eines Helden.
Bei einem Einsatz auf einer Kampfstation
verliert er seine Einheit. Er
überlebt als einziger. Später
stellt sich heraus, dass es ein Trick war,
und seine Einheit absichtlich verlieren
und exekutiert werden sollte.
Exklusiv: Der erste Screenshot
des Projekts
Im Spiel wird es drei verschiedene Charaktere
geben, welchen man selbst Namen geben kann.
Die Erfahrung, der Charaktere, steigt
mit jedem besiegten Gegner, von denen es sehr viele geben wird.
Dem Spieler werden verschiedene Angriffsmöglichkeiten
zur Verfügung stehen. Da sind zum Beispiel der Angriff mit Waffen
oder Magie. Wobei sich die Magie nur auf den Zauberer bezieht. Alle anderen
Charaktere besitzen die Möglichkeit Technik ein zusetzten.
Da das Spiel mit DirectQB programmiert
wird können wir uns schon auf ein geniales Spiel freuen.
Soeren
Dressler über das neue Projekt von GvM
Entertainment
So, das war’s für diese
Ausgabe. Ich hoffe das die QBasic-Times in Zukunft genauso gut ankommt
wie bisher.
Also, wenn ihr etwas habt,
was unbedingt mit in die nächste Ausgabe soll (Werbung für eurer
Spiel oder Tool oder ein Tuturial ...) , dann schick es mir einfach.
Bis zum nächsten Mal!