Der
Bildschirm eines PCs kann unter QBasic in verschiedenen Modi betrieben
werden. Man unterscheidet den Text- und den Grafikmodus.
Textmodus
Im Standard-Textmodus (ist beim Aufruf von QBasic eingestellt) sind
25 Zeilen zu je 80 Zeichen darstellbar. Zur Einstellung des gewünschten
Textmodus verwendet man den Befehl SCREEN und zur Einstellung der
Anzahl der Zeilen und Spalten den Befehl WIDTH.
Das
folgende Programm tmodus1.bas stellt den
Modus 0 ein und beschreibt alle möglichen Zeilen (bis auf die
letzte) mit zufälligen Zeichen des Alphabets. Starte das Programm
mehrfach und gib für die Anzahl der Zeilen und Spalten unterschiedliche
Werte ein. Beobachte die Bildschirmausgaben.
REM tmodus1
SCREEN 0
RANDOMIZE TIMER
INPUT "Anzahl der Zeilen (25, 43 oder 50): ",zeilen
INPUT "Anzahl der Spalten (40 oder 80): ",spalten
WIDTH spalten,zeilen
CLS
FOR z=1 TO zeilen-1
FOR s=1 TO spalten
PRINT CHR$(65+INT(26*RND));
NEXT s
NEXT z
Abhängig
vom verwendeten Bildschirmmodus können verschiedene Farben verwendet
werden (meist 16 Farben mit den Farbnummern 0 bis 15). Mit dem Befehl
COLOR (Vordergrundfarbe, Hintergrundfarbe) können die Farben
für Zeichen (Vordergrundfarbe) und Zeichenhintergrund (Hintergrundfarbe)
bestimmt werden. Folgendes Programm (tmodus2.bas)
gibt die Zahlen von 0 bis 1000 in Fünferschritten mit gewünschter
Farbe aus:
REM
tmodus2
SCREEN = 0
CLS
INPUT "Farbe der Zeichen: ", vordergrundfarbe
INPUT "Hintergrundfarbe: ", hintergrundfarbe
FOR zaehler = 0 TO 1000 STEP 5
COLOR vordergrundfarbe, hintergrundfarbe
PRINT zaehler;
NEXT zaehler
In
jedem Textverarbeitungsprogramm kann die Schreibmarke mit Hilfe der
Cursortasten (Pfeiltasten) an eine beliebige Stelle des Bildschirms
gebracht werden. Der anschließend eingegebene Text erscheint
exakt an dieser Stelle.
In QBasic kann die Schreibmarke ebenfalls positioniert werden. Dazu
dient der Befehl LOCATE.
Das
folgende Programm (tmodus4.bas) gibt verschiedene
Texte an verschiedenen Stellen des Bildschirms aus. Beachte, daß
mehrere Befehle in einer Zeile durch einen Doppelpunkt voneinander
getrennt werden.
REM tmodus4
SCREEN 0
WIDTH 80,25
CLS
LOCATE 10,1: PRINT "Zeile 10, Spalte 1"
LOCATE 15,20: PRINT "Zeile 15, Spalte 20"
Das
folgende Programm (tmodus5.bas) stellt verschiedene
Texte zentriert, d.h in der Bildschirmmitte, dar. Dazu wird das Unterprogramm
Center aufgerufen. Der Befehl LEN gibt dabei die Anzahl des Strings
text$ inklusive Leerzeichen wieder.
REM tmodus5
SCREEN 0
WIDTH 80,25
CLS
zeile=4: text$="Hallo Computer-Freak": GOSUB Center
zeile=6: text$="Der gesamte Text dieser Seite": GOSUB
Center
zeile=7: text$="wird zentriert": GOSUB Center
zeile=8: text$="ausgegeben.": GOSUB Center
END
Center:
LOCATE zeile, (80 - LEN(text$)) / 2: PRINT text$
RETURN
Grafikmodus
Im
Grafikmodus ist der Bildschirm viel feiner in Zeilen und Spalten aufgeteilt.
Wichtige Auflösungen sind z.B. 320 Spalten / 200 Zeilen, 640
Spalten / 200 Zeilen, 640 Spalten / 350 Zeilen oder 640 Spalten /
480 Zeilen. Die linke obere Ecke hat die Koordinaten 0/0, die rechte
untere Ecke z.B. 639/479.
Zur Einstellung des Grafikmodus dient ebenfalls der SCREEN-Befehl.
Linien werden mit dem LINE-Befehl, Punkte mit dem PSET-Befehl gezeichnet.
An jedem Schnittpunkt einer Zeile mit einer Spalte kann ein Punkt
in einer bestimmten Farbe gesetzt werden. Ein solcher Punkt heißt
Pixel.
Das
folgende Programm (gmodus1.bas) zeichnet
bei SCREEN 8 (640*200, 16 Farben) einen gelben Rahmen.
REM gmodus1
SCREEN 8
farbe = 14
LINE (0, 0)-(639, 0), farbe
LINE -(639, 199), farbe
LINE -(0, 199), farbe
LINE -(0, 0), farbe
LOCATE 13, 34: PRINT "Ende -> Taste"
DO
a$ = INKEY$
LOOP UNTIL a$ <> ""
Das folgende Programm (gmodus3.bas) zeichnet
bei SCREEN 12 (640*480, 16 Farben) eine Sinuskurve:
REM gmodus3
SCREEN 12: CLS
farbe = 12
FOR x= 0 TO 639
y = 220+210*SIN(x*x/10000)
NEXT x
Rechteck
Das
folgende Programm zeichnet bei SCREEN 12 (640*480, 16 Farben) ein
Rechteck. Die linke obere Ecke hat die Koordinate (20,40), die rechte
untere Ecke die Koordinate (500,400). Das Rechteck ist blau (9) und
gefüllt (BF). Speichere unter rechteck1.bas
REM
rechteck1
SCREEN 12
CLS
LINE (20, 40) - (500, 400), 9, BF
Das
folgende Programm (rechteck3.bas) zeichnet
bei SCREEN 12 (640*480, 16 Farben) 20 verschiedene Rechtecke an zufälligen
Bildschirmpositionen.
REM rechteck3
RANDOMIZE TIMER
SCREEN 12
CLS
FOR rechteck = 1 TO 20
LET breite = INT(RND * 80) + 20
LET hoehe = INT(RND * 80) + 20
LET x1 = INT(RND * (640 - breite))
LET y1 = INT(RND * (480 - hoehe))
LET farbe = INT(RND * 15) + 1
LINE (x1, y1)-(x1 + breite, y1 + hoehe), farbe, B
NEXT rechteck
Kreis
Mit
dem CIRCLE Befehl kann man an einer gewünschten Bildschirmposition
einen Kreis mit einem beliebigen Radius und einer beliebigen Farebe
zeichnen. Das folgende Programm (kreis1.bas)
zeichnet bei SCREEN 12 (640*480, 16 Farben) nach Eingabe von Farbe
und Radius (in Pixeln) zentriert auf dem Bildschirm einen Kreis!
REM
kreis1
SCREEN 12
CLS
INPUT "Radius (0 - 240): ", radius
INPUT "Farbe (0-15): " , farbe
CIRCLE (320,240), radius, farbe
Das
Programm kreis3.bas erzeugt 40 verschiedene
Kreise mit beliebigen Farben an zufälligen Bildschirmpositionen.
REM kreis3
SCREEN 12
CLS
RANDOMIZE TIMER
FOR kreis = 1 TO 40
LET radius = INT(RND * 80) + 20
LET x = radius + INT(RND * (640 - 2 * radius))
LET y = radius + INT(RND * (480 - 2 * radius))
LET farbe = INT(RND * 15) + 1
CIRCLE (x, y), radius, farbe
NEXT kreis
Ändere
die vorletzte Zeile des Programms kreis3.bas
wie folgt ab und speichere unter kreis4.bas:
:
CIRCLE (x, y), radius, farbe, , , .5
PAINT (x,y), farbe
NEXT kreis
Der
CIRCLE-Befehl wird im obigen Beispiel mit 7 Parametern aufgerufen.
x und y sind die Koordinaten des Mittelpunktes, radius ist der Kreisradius,
farbe ist die Farbe des Randes. Danach folgen 2 Parameter, die nicht
angegeben (ausgelassen werden) und der letzte Parameter (0,5) steht
für das Verhältnis der Radien in x bzw. y-Richtung (0,5
bedeutet, daß der y-Radius halb so groß ist wie der x-Radius).
Mit dem PAINT - BEFEHL kann man einen Bereich ausfüllen. Die
Füllfarbe wird hier zufällig erzeugt.
Weiter
mit Lektion 6!