Die "QBasic-Times"



Ausgabe Nr.4 (3-2000)


 
Übersicht

DirectQB Teil 4 - Sprites
Erklärung wie man DirectQB benutzt.

Neuvorstellung von Explosive
Neues Kombinationsspiel

Interview zu Explosive
Interview mit Manuel Oetiker

Neuvorstellung von LaOS
Nettes FakeOS in QBasic 1.1

Neues Projekt von GvM Entertainment
Exklusive die ersten Informationen
 


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!
 



 

DirectQB Teil 4 - Sprites
 
 

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.

Soeren Dressler
 
 



 

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.
 



 

Interview zu Explosive

Soeren:

Ich werde jetzt nicht fragen: "Wie hast du das gemacht?" aber:
Wie lange hast du an dem Spiel gearbeitet?
Iguan:
ca. 2 Monate
Soeren:
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).
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.
Soeren:
Die Grafik sieht sehr gut aus. Ist sie in Handarbeit entstanden?
Iguan:
Ja, ganz Explosive ist in Handarbeit enstanden. Obwohl ich nicht besonders
zeichnerisch begabt bin, habe ich mich sehr bemüht, dass das Ganze optisch
gut rüberkommt.
Soeren:
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!




 

Neuvorstellung von LaOS

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

Soeren D.