Die "QBasic-Times"



Ausgabe Nr.5 (4-2000)


 
Übersicht
 

QMidi Tutorial 
Informationen zum Programmieren mit QMidi.

So vertreiben Sie Ihre QBasic-Programme für LaOS
Wenn Sie ein Programm geschrieben haben, und Sie möchten, dass es alle möglichst einfach starten können, dann ...

Nachtag zum LaOS – Review aus der letzten Ausgabe.
So behebt man das Disketten Problem

Anfängerkurs
Es geht um Menüs, Tastenabfrage und ein kleines Beispielproramm. 

Neuvorstellung von Victory of the Stars 2
Neues Spiel von GvM Entertainment

Assembler Tutorial Nr. 1
Assemblergrundlagen

Neuvorstellung von MousePro
Neues über die MouseLibrarie

 



 

Hallo QBasic-Times-Leser.

Leider hat sich diese Ausgabe etwas verspätet, aber ich hoffe du bist nicht so verärgert darüber.
Jedenfalls ist diese Ausgabe vollgepackt bis oben hin.
Einmal ist das schon lag erwartete QMidi-Tutorial enthalten. Dann gibt es neues über LaOS.
Neu ist auch der Anfängerkurs und der 1. Teil das Assembler Tutorials.
Es gibt natürlich noch mehr, aber schau es dir doch einfach selbst an!

Viel Spaß!





 

Tutorial zu QMidi

Dieses Tutorial erläutert die Verwendung von QMidi4.1.
QMidi4.1 kann von http://basic.de.cx unter SFX down geloadet werden.

Zunächst sollte man alle Dateien von QMidi ins QBasicverzeichniss kopieren.
Um QMidi verwenden zu können, müssen die Midi-Driver installiert sein.
Am besten mach man das mit einer Bat Datei, deren Inhalt so aussehen sollte.

sbmidi.exe
sbsim.com
qb /l qb.qlb
sbsim.com/u
sbmidi.exe/u

SBMIDI.EXE und SBSIM.COM sind die beiden Midi-Driver. Sie werden in den Speicher gelanden und bleiben dort, bis sie wieder von SBMIDI.EXE/U und SBSIM.COM/U deaktivert werden.
Das /U bedeutet uninstall.

Qbasic selber muß mit
qb /l qb.qlb
gestatet werden.
 

Wenn man so weit ist, startet man die Bat und sucht sich dann die DEMO.BAS aus.
Diese demonstriert alle Funktionen von QMidi.
 

Wenn man nun selbst QMidi benutzten möchte sollte man die wichtigsten Befehle kennen.

LoadMIDI
PlayMIDI
loopmidi
StopMIDI
UnloadMIDI
TimeMIDI!

LoadMIDI lädt eine Mididatei und liefert einen Wert zurück.
PlayMIDI spielt die MIDI ab.
LoopMIDI wiederholt die MIDI
StopMidi beendet das Abspielen
UnloadMidi löscht die Midi aus dem Speicher
TimeMIDI! liefert die Zeit zurück, die die MIDI schon spielt
 

Wenn  man sich die Demo angesehen hat, kann man den ersten Schritt wagen.

Zunächst muß man die SMALL.BAS öffnen.
Diese Datei enthält die QMidi Minimalausstattung.  D.h. das nur die wichtigsten Sachen drin sind. Dazu gehören die Befehle von eben und das sollte für den Anfang auch erst mal noch reichen.

Also nach dem die small.bas geöffnet ist, sollte man einfach mal diesen Quellcode unten an die BAS dranhängen.

‘ Beispiel für QMidi

‘ Die Datei sample1. und wird geladen und wird MIDIHandle% zugewiesen
‘ MIDIHandle% enthält nun die Nummer der MIDI, mit der dann gearbeitet wird
MIDIHandle% = LoadMIDI("sample1.MID")

‘ MIDI wird abgespielt
PlayMIDI MIDIHandle%

CLS

PRINT “Es müßte jetzt eine Musik zu hören sein.“
PRINT “Diese spielt nun schon “
PRINT
PRINT “Taste drücken zum abbrechen“

‘  Öffne Schleife
DO

‘ TimeMIDI! zeigt die sekunden an.
LOCATE 3, 1
PRINT INT(TimeMIDI!); “ sek“

‘ Lied wird immer wiederholt
Loopmidi

‘ Verlasse Schleife wenn Taste gedrückt wird.
LOOP UNTIL INKEY$ <> ""

‘  Stoppt  die Wiedergabe
StopMIDI

‘ MIDI wird gelöscht
UnloadMIDI MIDIHandle%

END
‘ Ende des Beispiels
 
 

Wenn das soweit funktioniert hat, kann man die BAT Datei vom Anfang noch ein wenig modifizieren.

sbmidi.exe/3
qb /l qb.qlb
sbmidi.exe/u
 

/3 gibt an, dass MPU benutzt wird.
Das verbessert die Klangqualität.
Es muß aber eine MPU kompatible Soundkarte installiert sein.
SBSIM.COM wird nicht unbedingt benötigt.
 

So ich denke, dass das für den Anfang reichen sollte.

Soeren Dressler
 



 
 

So vertreiben Sie Ihre QBasic-Programme für LaOS
 
 

LaOS bietet dem QBasic-Nutzer eine einfache Möglichkeit, die angesammelten Programme von einer einheitlichen Oberfläche aus zu starten.

Wenn Sie ein Programm geschrieben haben, und Sie möchten, dass es alle möglichst einfach starten können, dann erstellen Sie eine LaOS-Installation für Ihr Programm.

Als erstes zeichnen Sie ein Symbol in QuickDraw oder 3DStudio. Sie können aber auch eines der vorhandenen Symbole verwenden.

Danach nehmen Sie Ihr Programm in LaOS auf, indem Sie Zubehör->Dos-Server wählen, und hier die QBasic-Datei auswählen und darauf F7 drücken. Dann erscheint ein Dialog, wo Sie den Programmnamen eingeben können, das Symbol auswählen können, und eine Beschreibung des Programmes geben können, die danach in der Statuszeile erscheint.

Jetzt sollten Sie die Datei im ausgewählten Ordner starten können. Überprüfen Sie, ob sich das Programm starten lässt.

Jetzt brauchen Sie eine leere Diskette. Wenn Sie gerade keien leere haben, aber eine, auf der noch ausreichend Platz ist für Ihr Programm, dann können Sie auch diese verwenden. Um auf der Diskette das LaOS-Dateisystem einzurichten, gehen Sie auf Zubehör->Laufwerke und wählen hier Menu->Formatieren. Dieser Befehl hat keinen Einfluss auf die Dos-Daten, die auf der Diskette sind. Denn bei diesem Formatieren wird nur das LaOS-Verzeichnis auf der Diskette erstellt, das Datenträgersymbol und der Datenträgername drin abgespeichert und einen ersten LaOS-Ordner erstellt.

Gehen Sie zu Ihrem Programm und drücken Sie Insert. Im nun erscheinenden Programmverwalter drücken Sie F7 und wählen in der Liste zuoberst die Diskette an. Jetzt noch beim Ordner bestätigen, und Enter drücken. Jetzt erscheint eine Meldung "Die Datei wird kopiert statt verschoben."

Von nun an ist das Programm auf der Diskette, und kann problemlos in jedem LaOS dieser Welt gestartet werden. Jetzt können Sie noch im LaOS-Editor eine Readme-Datei schreiben, und diese ebenfalls auf der Diskette abspeichern.

Die Diskette können Sie Ihren Freunden geben, welche LaOS ebenfalls installiert haben. Damit man Ihr Programm aber vom Internet herunterladen kann und direkt in LaOS installieren kann, sollten Sie sich von mir eine spezielle LaOS-Installation erstellen lassen.

Beenden Sie LaOS und erstellen Sie aus dem "Laos"-Verzeichnis der Diskette eine Zip-Datei. Schicken Sie diese Zip-Datei einfach an laos@datacomm.ch und ich werde Ihnen die Installroutine hinzufügen.

Urs Langmeier (Datacomm)
 
 



 

Nachtag zum LaOS – Review aus der letzten Ausgabe.

Im Test war aufgefallen, dass LaOS stendig versuchte auf die, nicht vorhandene, Diskette zu zugreifen.
Ebenfalls fehlte die Möglichkeit, Dateien zu verschlüsseln.

Der Autor sagte dazu folgendes:

Der Disketten-Ladevorgang lässt sich abstellen, indem man im Ordner "Zubehör" auf "Laufwerke" geht, und dort Menu->Datenträger deaktivieren anwählt.

Deativiert Diskette
 

Die Verschlüsselungsfunktion ist zugegebenermassen etwas versteckt:
Drücke auf der, zu verschlüsselnden Datei, "Insert" und geh im nun erscheinenden Programm-Verwalterfenster aufs Menu "öffnen/schliessen".

Verschlüsselt Dateien
 


Anfängerkurs
 

Thema: Menu

Sicherlich habt ihr in anderen Spielen schon viele Menüs gesehen. Eines davon ist mit Tastenauswahl.

Zum Beispiel:

Mainmenu

[N]eues Spiel
Spiel [l]aden
Spiel [s]peichern
[E]nde

Wie macht man das nun, dass man jetzt nur noch eine Taste drücken muß?

Der Quellcode ist sehr einfach.

SCREEN 13
PRINT “ [N]eues Spiel“
PRINT “ Spiel [l]aden“
PRINT “ Spiel [s]peichern“
PRINT “ [E]nde“

DO
K$ = INKEY
IF K$ <> ““ THEN
  SELECT CASE K$
  CASE “n“
   GOTO neuesSpiel
  CASE “l“
   GOTO Spielladen
  CASE “s“
   GOTO Spielspeichern
    CASE “e“
   END
  END SELECT
 END IF
LOOP
 
 

Thema: Cusortasten und andere Spezialtasten

Wenn man ein Spiel machen will braucht man manchmal die Cusortasten aber mit INKEY$ ist das nicht so einfach, da kein einfaches Zeichen zurück geliefert wird.
Und wie macht man das mit Enter und ESC.

Inkey$ liefert immer ein ASCII Zeichen zurück von der Taste, die gerade gedrückt wurde aber es wartet nicht auf die Taste.
Hier ein kleine Beispiel.

CLS
DO
K$ = INKEY$
IF K$ <> ““ then PRINT “Taste als ASCII : “ K$, “Taste als Zahl : “ ASC(K$)
LOOP UNTIL K$ = CHR$(27)

Dieses Beispiel zeigt die Rückgabe von Inkey$.
ASC(K$) hat das Zeichen immer in eine Zahl umgewandelt.
CHR$(27) wandelt eine Zahl in ein Zeichen um.
In diesem Fall wird die 27 in ein Zeichen umgewandelt und genau die 27 ist ESC.
In unserem Beispiel  läuft also die Schleife so lange, bis ESC gedrückt wird.

Man kann das ganze jetzt so verändern, dass man Enter drücken muß damit die Schleife verlassen wird.

CLS
DO
K$ = INKEY$
IF K$ <> ““ then PRINT “Taste als ASCII : “ K$, “Taste als Zahl : “ ASC(K$)
LOOP UNTIL K$ = CHR$(13)

13 ist in diesem Fall Enter

Das Programm liefet auch immer die Zahlen für jede Taste zurück..

Aber was ist nun mit den Cursortasten?
Bei den Cursortasten wird kein einstelliger String zurück geliefert, sondern ein zweistelliger String.
Dabei ist die erste Stelle eine Leerzeichen und die zweite Stelle ein Großbuchstabe.

So sieht es aus:
Links = “ K“
Oben = “ H“
Unten = “ P“
Rechts = “ M“

Wenn man das nun auswerten will, muß man das rechte Zeichen überprüfen.
QBasic kann dieses mit dem Befehl RIGHT$( STRING ,  Position )

Will man also prüfen, ob die obere Cursortaste gedrückt wurde,
sagt man einfach:

k$ = INKEY$
IF RIGHT$(  k$ , 1 ) = “H“ THEN .....

Hier ein kleines Beispiel:

‘ GRAFIKMODUS mit 320*200 Pixeln und 256 Farben
SCREEN 13

‘ Startwert
x% = 160
y% = 100

‘ Öffne DO Schleife
DO

 ‘ Eingabe auf K$ speichern
k$ = INKEY$

 ‘ nach einzelnen Tasten suchen
IF RIGHT$(k$, 1) = "K" THEN x% = x% - 1
IF RIGHT$(k$, 1) = "H" THEN y% = y% - 1
IF RIGHT$(k$, 1) = "P" THEN y% = y% + 1
IF RIGHT$(k$, 1) = "M" THEN x% = x% + 1

 ‘ Malt ein Pixel an die angegebene Position
PSET (x%, y%), (x% / y% * 5) + 32

‘ Schleife Verlassen wenn ESC gedrückt wurde
LOOP UNTIL k$ = CHR$(27)

‘ Ende
END
 

Hier ist nun noch ein kleines Beispielprogramm für Grafikeffekte, da ich weiß, dass man eine Programmiersprache am leichtesten mit möglichst vielen Beispielen lernen kann.
 

' Kleines Beispielprogramm für QBasic
' von Soeren Dressler
'
' Dieses kleine Programm soll Anfängern helfen, QBasic besser zu verstehen.
' Das Programm kann frei manipuliert werden und zu eigenen Zwecken verwendet
' werden.
' Ich gebe aber keine Garantie, dass das Programm fehlerfrei ist.
'
'
' Programmcode

' Hier werden Konstanten fest gelegt
CONST ObjektAnzahl% = 1000  ' Anzahl der Objekte
CONST Bremse& = 100         ' Bremse

' Hier werden Variablen dimensioniert
DIM hintergrundbild%(100, 100)
DIM ObjektX%(ObjektAnzahl%)
DIM ObjektY%(ObjektAnzahl%)
DIM ObjektRichtung%(ObjektAnzahl%)
DIM ObjektXalt%(ObjektAnzahl%)
DIM ObjektYalt%(ObjektAnzahl%)

' Der Zufallsgenerator wird gestartet
RANDOMIZE TIMER

' ein zufälliger Hintergrundbild wird erstellt.
FOR y% = 0 TO 100
 FOR x% = 0 TO 100
  Hintergrundbild%(x%, y%) = RND * 2 + 20
 NEXT x%
NEXT y%

' Startwerte der Objekte werden zufällig festgelegt.
FOR n% = 0 TO ObjektAnzahl%
        ObjektX%(n%) = RND * 310 + 3
        ObjektY%(n%) = RND * 190 + 3
        ObjektRichtung%(n%) = RND * 3 + 1
NEXT n%

' Grafikmodus 13
SCREEN 13

' Hier kann der Hintergrund gemalt werden
'FOR y% = 0 TO 199
' FOR x% = 0 TO 319
'  PSET (x%, y%), Hintergrundbild%(x% MOD 100, y% MOD 100)
' NEXT x%
'NEXT y%

' Öffne Do-Schleife
DO

' Speichere Taste auf k$
k$ = INKEY$

FOR n% = 0 TO ObjektAnzahl%

        ObjektXalt%(n%) = ObjektX%(n%)
        ObjektYalt%(n%) = ObjektY%(n%)

        SELECT CASE ObjektRichtung%(n%)
                CASE 1
                ObjektX%(n%) = ObjektX%(n%) + 1
                ObjektY%(n%) = ObjektY%(n%) + 1

                IF ObjektX%(n%) = 319 THEN ObjektRichtung%(n%) = 2
                IF ObjektY%(n%) = 199 THEN ObjektRichtung%(n%) = 4

                IF ObjektX%(n%) = 319 AND ObjektY%(n%) = 199 THEN ObjektRichtung%(n%) = 3

                CASE 2
                ObjektX%(n%) = ObjektX%(n%) - 1
                ObjektY%(n%) = ObjektY%(n%) + 1

                IF ObjektX%(n%) = 0 THEN ObjektRichtung%(n%) = 1
                IF ObjektY%(n%) = 199 THEN ObjektRichtung%(n%) = 3

                IF ObjektX%(n%) = 0 AND ObjektY%(n%) = 199 THEN ObjektRichtung%(n%) = 4

                CASE 3
                ObjektX%(n%) = ObjektX%(n%) - 1
                ObjektY%(n%) = ObjektY%(n%) - 1

                IF ObjektX%(n%) = 0 THEN ObjektRichtung%(n%) = 4
                IF ObjektY%(n%) = 0 THEN ObjektRichtung%(n%) = 2

                IF ObjektX%(n%) = 0 AND ObjektY%(n%) = 0 THEN ObjektRichtung%(n%) = 1

                CASE 4
                ObjektX%(n%) = ObjektX%(n%) + 1
                ObjektY%(n%) = ObjektY%(n%) - 1

                IF ObjektX%(n%) = 319 THEN ObjektRichtung%(n%) = 3
                IF ObjektY%(n%) = 0 THEN ObjektRichtung%(n%) = 1

                IF ObjektX%(n%) = 319 AND ObjektY%(n%) = 0 THEN ObjektRichtung%(n%) = 2

        END SELECT

        ' Male Hintergrund auf alter Position
        PSET (ObjektXalt%(n%), ObjektYalt%(n%)), hintergrundbild%(ObjektXalt%(n%) MOD 100, ObjektYalt%(n%) MOD 100)

        ' Male Objekt
        PSET (ObjektX%(n%), ObjektY%(n%)), (ObjektX%(n%) / 7 + ObjektY%(n%) / 8 + 32)

NEXT n%
 

' Bremse
FOR pause& = 0 TO Bremse&: NEXT pause&

' Verlasse Schleife, wenn ESC gedrückt wird.
LOOP UNTIL INKEY$ = CHR$(27)

' Ende
END
 

So das war’s. Ich hoffe, dass es den einen oder Andreren weiter geholfen hat.
 
 
 



 

Neuvorstellung von Victory of the Stars 2
 

Wie man bereits aus dem Titel entnehmen kann, handelt es sich bei diesem Spiel um den Zweiten Teil der Spaceshoter-Serie von GvM Entertainment.
Dieses Spiel muß sich aber nicht hinter seinem Vorgänger verstecken.
Ganz im Gegenteil. Vots2 wurde nicht nur in seiner Optik sondern auch im Handling und ganzen Spielaufbau verbessert.

Der Spieler hat entweder die Möglichkeit, ein freies Spiel zu wählen und damit den Computergegner selber einzustellen oder in einem Campaignmodus mit Story zu Spielen.
Im Mittelpunkt stehen eine außerirdische Rasse, die sich Tareaner nennen und die Erde angreifen.
Der Spieler, welcher in die Rolle des Helden schlüpft, ist selbstverständlich die einzige Hoffnung für die Menschheit.
Wehrend des Campainmodus hat man immer wieder die Möglichkeit zwischen maximal Zwei Missionen zu wählen. Dabei ändert sich jeweils das ziel der Mission.
Vorwiegendes Ziel ist es aber immer zu überleben.
Damit der Spieler jederzeit an seine letzte Position zurückkehren kann , gibt es im Menü die Möglichkeit, das Spiel ab zu speichern oder zu laden.
Das Spiel selbst läßt sich nun sehr viel besser steuern als sein Vorgänger, da es keine Verzögerung mehr bei der Tastatur gibt.
Im Ganzen ist das Spiel schon sehr gut gelungen und wenn GvM Entertainment die Entwicklung abgeschlossen hat, wird es selbstverständlich auf der Homepage des QBasic-Clubs zum Download angeboten.
 

Soeren Dressler über Victory of the Stars 2 von GvM Entertainment
 



 

Assembler Tutorial Nr. 1
 
 

Was ist eigentlich Assembler?
 

Wie jeder Programmierer versteht der Computer nur eine Maschinensprache, die so komplex und so schwierig ist, dass sie von keinem Menschen erlernt werden kann.
Deswegen wurden Programmiersprachen wie QBasic, Turbo-Pascal oder C entwickelt, die in der Lage waren, eine für den Menschen verständlichen  Sprache in Maschinensprache um zu wandeln s.g. compilieren.
Besonders hohe Programmiersprachen, also welche, die für den Menschen besonders einfach sind aber von der Maschinensprache sehr weit entfernt sind, wie QBasic, haben aber den Nachteil, dass sie sehr langsam sind.
Je niedriger eine Programmiersprache ist, desto näher kommt sie der Maschinensprache.
Assembler ist die niedrigste Programmiersprache die es für des PC gibt.
Assembler ist  nun dadurch sehr schnell aber eben auch nicht sehr einfach zu verstehen.
Es ist auch keine übliche Programmiersprache, da schon sehr einfache Programme unglaublich aufwendig zu schreiben sind. Es wird eher als Librarie für andere Programmiersprachen benutzt.
 

Wenn man nun mit Assembler arbeiten will, sollte man wissen, dass man nur 4 Variablen zu Verfügung hat.
Es gibt zwar noch mehr Variablen, aber diese haben feste Aufgaben.
Wenn ich nun sage “Variablen“, dann ist das so nicht ganz richtig.
Es sind Register aus dem Prozessor.
Sie heißen AX, BX, CX und DX.
A wie Accumulator
B wie Base
C wie Count
D wie Data

Es sind alles 16Bit Register. Also so ähnlich wie Integer in QBasic.

Den ersten und wichtigsten Befehl in ASM ist „MOV“.
Dieser kopiert den zweiten Wert in den ersten.
Bsp.:
 MOV  AX,  BX
In diesem Beispiel wird der Wert aus BX nach AX kopiert.
Oder:
 MOV  CX, 7h
 In diesem Beispiel erhält CX den Wert 7.
Oder:
 MOV  DX, 0h
 In diesem Beispiel erhält DX den Wert 0.

Ich denke das sollte soweit klar sein
Kommen wir nun zur Addition.
Addition war das mit dem „+“
Bei ASM geht das mit „ADD“.
Dabei wird der zweite Wert zum ersten dazu addiert.
Bsp.:
 MOV  AX, 1h
 ADD  AX, 5h
In diesem Beispiel wird zuerst AX = 1 gesetzt und dann wird 5 dazu addiert.
Was uns zu dem Schluß kommen läßt, dass AX den Wert 6 hat.

Um einfach mal zu überprüfen, ob du dass nun verstanden hast, ist hier ein kleiner Test.

 MOV  AX, 2h
 MOV  BX, AX
 ADD  AX, BX

Was ist nun in AX?

Richtig! 4
Hey, du bist gut.

Es gibt aber noch mehr Sachen. Da ist z.B. die Subtraktion.
Du weißt schon, das mit dem „-“
Der Befehl ist „SUB
Dabei wird der zweite Wert vom ersten abgezogen.
Bsp.:
 MOV  AX, 9h
 SUB  AX, 3h
Erst wurde AX mit 9 belegt und dann  wurde 3 abgezogen.
Wenn ich mich nicht irre hat AX nun den Wert 6.

Des weiteren gibt es noch einen Befehl um das Register um 1 zu erhöhen.
Der Befehl lautet „INC“ das kommt vom englischen „increment“ (Zunahme)
Bsp.:
 MOV  AX, 3h
 INC  AX
Erst wird AX mit 3 belegt und dann um 1 erhöht.

Es gibt aber auch einen Befehl, um ein Register um 1 zu vermindern.
Das ist dann „DEC“ von englischen „decimate“ (dezimieren).
Bsp.:
 MOV  AX, 7h
 DEC  AX
Die 7 in AX wir um 1 vermindert. Es ist also nur noch 6.
 

Nun zum Abschluß noch en kleiner Test.

 MOV  AX, 5h
 MOV  BX, 7h
 ADD  AX, 3h
 SUB  AX , BX
 DEC  AX
 MOV  AX, BX
 DEC  BX
 INC  AX

Was ist nun AX?
Wenn du glaubst, es ist 8
dann liegst du richtig.

Wenn du dich nun fragst, wozu das eigentlich gut ist, kann ich nur sagen, dass das Grundlage ist um mit Assembler zu arbeiten.

Soeren Dressler
 



 

Neuvorstellung von MousePro

Jeder kennt das Problem:
QBasic unterstützt keine Mouse.
Es gibt zwar einige Programme im Internet, mit denen man eine Mouse in seinem Programm einbauen kann. Diese enthalten aber meist den Quellcode in Maschinensprache, so dass man immer gezwungen ist ein fremdes Programm mit Subs und Funktionen in sein eigenes ein zu bauen. Häufig sind diese auch nicht besonders benutzerfreundlich, da sie nur mit „Call Interrupt“ arbeiten, was besonders unerfahrenen Programmieren arges Kopfzerbrechen bereitet.
Zudem kommt, dass Erklärungen nur in englischer Sprache sind, was bei den jüngeren  Programmieren doch noch nicht ganz so beliebt ist.

Aber es gibt nun auch eine deutsche Mouselibrarie für QBasic4.5.
Sie heißt MousePro und ist vollständig in Deutsch. Na gut, die Befehle sind Englisch . Aber dafür unterstützt sie massenweise Befehle.
Zum Standart gehört natürlich das An- und Ausschalten des Mouscursors und das Erkennen der X- und
Y-Position sowie der Button.
Besondere Feature sind zum Beispiel das festlegen eines Aktionsraumes der Mouse oder eine einfache
Neupositionierung des Cursors.
Selbst die horizontale und vertikale Geschwindigkeit kann bestimmt werden.
Aber als absolute Neuerung ist veränderbare Mousecursor. Diese Cursor können mit dem CursorEdit erstellt werden. Oder, wer zu faul ist selber einen Cursor zu malen, kann sich aus den Beispielen einen aussuchen.
In der Neuesten Version 1.41 kann man nun auch die Mousetroutine auf  Screen 13 umschalten, wodurch das lästige umrechnen wegfällt.
Außerdem kann man sich bis zu 5 vorinstallierten Mousecursor aussuchen. Der Cursor wird bei der Änderung nun auch immer mit aktualisiert.
Fehler, die durch versehentliches Mehrfach- aktivieren bzw. deaktivieren  auftreten können wurden beseitigt, da die MousePro selbst kontrolliert ob der Mousezeiger  bereits sichtbar ist oder nicht.

MousePro ist ein Freeware, was es dem Programmierer  erlaubt, die Software frei zu nutzten und auch weiter zu geben. Das bedeutet auch, das MousePro auf anderen Homepages veröffentlicht werden darf.
 
 





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.