Ausgabe Nr. 7  (8-2000)
 
 


Willkommen in der neuen Ausgabe der QBasic-Times.
Es had leider einige Zeit gedauert, aber nun ist sie da und das auch noch in eienem neuen Design.
Dieses mal gibt es Projekt-News, das beste Programm und beste Spiel wird vorgestellt.
Außerdem gibt Tutorials über Delays, Keyboard, RPG und Bits und Byte.

Viel Spaß beim Lesen!
 


Project News:

- Cyber Chick
WisdomDude hat ein tolles Spiel in der Entwicklung, CyberChick.
CC ist ein Metroid-Clone, mit guter Grafik. Das Spiel ist noch
sehr schwer, WisdomDude sollte das Spiel noch etwas entschärfen.
Hersteller: WisdomDude
Homepage  : http://petesqbsite.hypermart.net/
Release   : Unbekannt

- SOP 2 Engine
Master Creating wird leider keinen 2. Teil von SOP machen, doch
immerhin hat Merlin die (mögliche) Engine von SOP2 releast. Die
Engine ist ein Mix aus mehreren Librarys und läuft sehr schnell.
Für angehende RPG-Programmierer vielleicht ein guter Grundstein.
Hersteller: Master-Creating
Homepage  : http://www.master-creating.de/
Release   : ---

- GABasic
Gabriel Fernandez stellt einen neuen Compiler vor: GABasic.
Es ist ein Compiler der im "Protected Mode" arbeitet. Man hat
Zugriff auf EMS, XMS und RAM, ist sehr schnell und hat
High-Res/High-Col-Support.
Hersteller: Gabriel Fernandez
Homepage  : http://www.master-creating.de/gab/
Release   : Unbekannt

- Elite Forces
Stefan Hendriks, der Hersteller von Arrakis, hat ein neues Spiel
angekündigt. Es soll ein Counter-Strike-ähnliches Spiel mit der
Grafik von "C&C 2: Alarmstufe Rot" werden.
Hersteller: Stefan Hendriks
Homepage  : http://www.qb45.com/
Release   : Unbekannt

- Damnation
Von den deutschen 3iD Studios wird bald ein RPG-Projekt kommen.
Die Engine sieht schon sehr vielversprechend aus, jetzt muss man
schauen was sie aus dem technischen Grundgerüst machen.
Hersteller: 3iD Studios
Homepage  : http://www.3idstudios.de/
Release   : Unbekannt

- Wipeout-Clone
Dieter Malfurt, bekannt durch die eindrucksvollen Engines Kaboom und
Qmanche, will einen Wipeout-Clone machen. Das Spiel wird die Qmanche-
Engine benutzen, doch das Spiel wird schneller sein als Qmanche.
Hersteller: Dieter Malfurt
Homepage  : http://www.angelfire.com/id2/qworlds/
Release   : Unbekannt

- Zeta
Aethersoft hat einem ausgewählten Kreis von QB-Programmierern schon
die 2. BETA von Zeta gezeigt. Die Leute, die die BETA sahen waren
alle begeistert. Ich habe leider nur ein paar Screenshots gesehen, doch
diese waren wirklich eindrucksvoll.
Hersteller: Aethersoft
Homepage  : http://www.crosswinds.net/~aethersoft/
Release   : Unbekannt
 



 

Game of the Month:
 

- Promzone
Promzone (PZ) zeigt mal wieder was man aus QBasic alles herausholen
kann (mit der Hilfe von Librarys, in diesem Fall DQB). PZ hat gute
Grafiken und schöne Animationen. Auch die Steuerung geht leicht von
der Hand und ist schnell begriffen. Einer der Schwachpunkte des Spieles
ist der nicht vorhandene Sound und Musik. Hiermit hätte man nochmals
mehr Atmosphäre in das Spiel zaubern können. Auch der etwas hoch
geratene Schwierigkeitsgrad könnte für einige Spieler ein Hindernis
sein. Eins noch am Rande: Obwohl der Programmierer offensichtlich
DirectQB benutzt (DirectQB.BI im Verzeichnis, Standart-DQB-Error-
Messages) wurde kein Credit gegeben. Eigentlich gewöhnlich in der
Qmmuntity. Doch trotz dieser wenigen Schwachpunkte ist das Spiel sehr
gut.
Hersteller: SV Reanimator
Homepage  : Nicht vorhanden
Download  : http://www.qb45.com/files/download.cgi?download=35&page=platform
 



 

Tool of the Month:
 

- Multilib
Multilib ist ein nützliches Programm mit dem man mehrere Librarys
zu einer machen kann. Dieses Tool macht diesen normalerweise etwas
komplexen Akt ganz leicht. Man kann mit Multilib unendlich viele
Librarys zusammenlinken, was nützlich sein kann, wenn man z.B. die
Future.Library und eine MIDI-Routine benutzen will. Das Programm
hat eine einfache (Maus)Steuerung, die man sehr schnell versteht.
Mit Bugs hatte ich auch keine Probleme.
Hersteller: Kevin Coots
Homepage  : http://www.rainbowtel.net/~pitman/
Download  : http://www.rainbowtel.net/~pitman/multi300.zip
 



 

Sinnvolle Delays
    von Fabian Schwahn

Viele, in QB geschriebene Spiele, haben kein DELAY und laufen
auf neueren Rechnern viel zu schnell. Das liegt entweder daran
das der Programmierer kein DELAY eingebaut hat oder es so macht:
FOR DELAY=1 TO 10000: NEXT DELAY
Diese Methode ist aber sehr ungeeignet da sie auf jedem PC
unterschiedlich läuft da es von der Rechner-Geschwindigkeit abhängt,
wie lange die Verzögerung dauert.

Hier kommt nun eine Methode die auf allen PCs gleich-schnell läuft:
Fügt diesen Code in eure Main-Schleife ein:

...

DO                   ' Start der Main-Schleife
  delay# = TIMER
  ...
  FOR DELAY=1 TO 10000: NEXT DELAY
  LOCATE 1, 1: PRINT TIMER-delay#
LOOP

Verändert den Befehl "FOR DELAY = 1 TO XXXXX: NEXT DELAY" so lange
bis ihr eine geeignete Geschwindigkeit für euer Spiel habt.
Jetzt merkt ihr euch die Zahl die ausgegeben wurde. Wir nehmen
in diesem Beispiel 0.56 . Später muss dort eure Zahl eingefügt werden.

...

DO
  delay# = TIMER
  ...
  DO: LOOP UNTIL (TIMER - delay#) => .56
LOOP

Was macht das Programm jetzt?
Nun, nehmen wir 3 Beispiele:
Tim spielt dein Spiel auf einem Pentium 500. Das Spiel braucht
0.11 Sekunden um das Spiel zu berechnen. Also wartet das Programm
noch 0.45 Sekunden und macht weiter.
Jim spielt dein Spiel auf seinem alten 486er.
Das Spiel braucht 0.49 Sekunden um dir Berechnungen und alles andere durchzuführen.
Jetzt wartet das Programm noch 0.07 Sekunden und arbeitet weiter.
Kim hat jetzt auch Lust dein Spiel zu spielen und probiert es auf seinem alten 286er.
Nun, das Programm braucht 0.77 Sekunden um durch das Spiel darzustellen und so weiter.
Das Programm merkt das es schon länger als 0.56 Sekuden gedauert hat das Spiel zu berechnen und macht ohne Pause weiter.

So, das war mein kleines Mini-Tutorial über Delays. Wer noch Fragen
oder Anmerkungen hat der soll diese an mich mailen.

Fabian Schwahn
 



 

Keyboard-Handler
    von Fabian Schwahn
 

Viele Spiele in QBasic scheitern an der Steuerung. Da INPUT langsam
ist und mit piepen anfängt wenn man längere Zeit auf einer Taste
bleibt ist es sehr ungeeignet für schnelle Action/Arcade Spiele.
Nun, hier habe ich eine Routine die das piepen verhindert und
mehrere Tasten gleichzeitig erkennt. Diese Routine ist zwar nicht ganz
perfekt, doch für Leute die ohne ASM auskommen wollen ist geeignet, da
es viel besser als INPUT ist. Hier der Code:

...

DO
  DO: LOOP UNTIL INKEY$ = ""        ' Um das BEEPEN zu verhindern
  Taste% = INP(96)
  ...

LOOP UNTIL Taste% = 1               ' ESC
 

Die Codes für die Tasten kann man der QBasic-Hilfe entnehmen.

Wer noch Fragen oder Anmerkungen hat der soll diese an mich mailen.

Fabian Schwahn
 



 

RPG-Tutorial
    by Fabian Schwahn (based on the Tut of DarkDread)
 

Hallo zum meinem RPG-Tutorial. Ich plane im Moment 3 Teile, doch wenn
ich genug Feedback bekomme können es auch noch mehr werden. Nun, hier
ist der erste Teil:

Viele von euch werden diesen Teil hassen, doch es muss halt auch sein:
Bevor wir anfangen zu coden, machen wir erstmal einen Plan. Die Story,
die Charaktere, ...

1.1 Die Story
Der wichtigste Teil eines RPGs ist die Story. Denn eine tolle Technik
beeindruckt zwar am Anfang, aber wenn die Story schlecht ist, dann
spielt man das Spiel nicht sehr lange. Die Story muss einen von Angang
an in ihren Bann ziehen. Hier ein paar Anhaltspunkte:
- Die Story muss originell sein. Keiner will ein Spiel spielen dessen
  Story er schon 1000 gehört hat.
- Die Story muss den Spieler in den Bann ziehen, nicht mehr loslassen.
  So kann der Spieler nicht aufhören, bevor er das Ende der Story
  erfährt.
- Man sollte die Richtlinien verfolgen, denen auch gute Bücher
  unterliegen. Die Charaktere müssen für ihre Handlungen einen
  Hintergrund haben, sie müssen einen Grund haben etwas zu tun.
  Alles in der Story sollte genauestens geplant sein.

1.2 Die Charaktere
So, als zweites muss man die Charaktere planen. Jeden einzelnen.
Welche Vergangenheit haben sie? Welche Eigenschaften? Aber der
Charakter darf sich während der Story auf keinen Fall verändern.
Und wenn er sich verändert braucht er dafür eine wirklich guten Grund.
In einem Dialog zwischen einem guten und bösen Charakter muss man
allein an der Sprache erkennen wer der gute und wer der böse ist.
Wenn ihr damit fertig seid könnt ihr damit anfangen die Dialoge
zwischen den Charakteren zu planen.

1.3 Das Gameplay
So, die Story ist jetzt komplett geplant. Jetzt entscheidet ihr über
das Gameplay in dem Spiel. Welche Engine? Tile-Engine, 3D-Engine, oder
etwas ganz anderes? Wenn ihr euch entscheidet dann bezieht auch eure
Programmier-Fähigkeiten mit ein. Wenn ihr noch nie was von 3D gehört
habt, dann ist diese Perspektive auch nicht geeignet.
Und wie laufen die Kämpfe ab? In Echtzeit, Rundenbasiert, oder eben
doch ein revolutionäres, neues?
Und wieviel Charaktere steuert ihr? Einen das ganze Spiel über, eine
ganze Party, oder abwechselnd verschiedene Charaktere?

1.4 Bis zum nächsten mal
Jetzt haben wir euer RPG völlig durchgeplant. Jetzt wird es Zeit für
ein bischen Praxis. Im nächsten Teil beginnen wir mit der
Programmierung einer Tile-Engine.

Fabian Schwahn
 



 

Bits und Byte
Alles über digitale Zahlen.
    by Soeren Dressler
 

Wie ist der Computer in der Lage Zahlen zu benutzten? Er besteht doch nur aus Chips, Schaltkreisen und einer menge Kabelsalat.
Das Stichwort ist Binärsystem oder auch Dualsystem genannt.
Bei diesem System gibt es nur zwei Ziffern: die 0 und die 1.
Und diese zwei Ziffern können mit einem Stromkabel dar gestellt werden.
Bei 1 fließt ein Strom und bei 0 fließt er nicht.
Diese 0 und 1 sind unsere Bits. Wie bekannt, besteht ein Byte aus 8 Bits. Es ist also eine achtstellige Dualzahl.
Ein Byte könnte so aussehen: 10001011
Aber wie funktioniert das nun?
00000000 ist 0
00000001 ist 1
00000010 ist 2
00000011 ist 3
00000100 ist 4
00000101 ist 5
00000110 ist 6
00000111 ist 7
00001000 ist 8
......
00010000 ist 16
......
00100000 ist 32
......
01000000 ist 64
......
10000000 ist 128
11111111 ist 255

So lassen sich nun 256 verschiedene Zahlen mit Hilfe von 8 Kabeln darstellen.
Welchen Wert die 1 oder 0 hat, hängt von ihrer Position ab.
Ganz Rechts ist die 1. Dann kommt die 2. Danach kommt die 4, dann 8, danach 16 usw.
Je nach dem ob das Bit eine 1 oder 0 ist addiert man die Werte zusammen und erhält die eigentliche Zahl.

Bsp.:
10011010

Das zweite, das vierte, das fünfte und achte Bit sind 1. Das heißt wir addieren 2 + 8 + 16 + 128.
Das sind 154.

Anders kann man auch rechnen.

2^2 + 2^4 +2^5 +2^8 = 154.

Noch ein anderes Beispiel.
01101101

Wir addieren 1 + 4 + 8 + 32 + 64 = 109
Oder 2^1 +2^3 +2^4 +2^6 +2^7 = 109

Wenn das erste Bit, also des Rechte, eine 1 ist kann man sicher sagen, dass die Zahl eine ungerade zahl ist.
Und wenn es eine 0 ist, ist es immer eine gerade Zahl.

Nun kann der Computer auch mit größeren Zahlen arbeiten.
In dem Fall benutzt er 16Bit Zahlen. Das sind entweder Integer Zahlen oder Word Zahlen.
Der unterschied ist das Vorzeichen. Bei Word gibt es nur positive Zahlen von 0 bis 65535.
Bei Inzteger gibt geht es von –32000 bis +32000.
Es gibt aber auch noch 32Bit Zahlen. Das sind DubbleWord und LongInteger.

Um nun eine negative Zahl darzustellen wird einfach das letzte Bit also das linke auf 1 gesetzt.
Was ist dann also
1111111111111111 ist –1
1111111111111110 ist –2
1111111111111101 ist –3
1111111111111100 ist –4
1111111111111011 ist –5
1111111111111010 ist –6
1111111111111001 ist –7
1111111111111000 ist –8
1111111111110111 ist –9
1111111111110110 ist –10
1111111111110101 ist –11
1111111111110100 ist –12
usw.
 

Ich hoffe das war soweit verständlich.

Soeren Dressler



 

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!