5.1; Grafik:
Bisher haben wir im Textmodus gearbeitet, ohne es zu wissen. In diesem Modus ist es lediglich möglich, reinen Text auszugeben. Das Darstellen von Grafiken ist nicht möglich, sofern sich diese nicht aus Textzeichen zusammensetzen. (aber derartiges dürfte man wohl nicht als "vollwertige" Grafiken ansehen) In diesem Abschnitt beschäftigen wir uns mit den einfachen Dingen der Grafik-Programmierung.
Bevor wir Grafiken darstellen können, müssen wir zunächst mal in den hiefür geeigneten Modus - den Grafikmodus - umschalten. Dies geschieht mit dem Befehl SCREEN.
Jedoch gibt es nicht bloß einen Grafikmodus sondern gleich mehrere Grafikmodi. Dies hat nichts damit zu tun, dass man hiermit die Programmierer ärgern möchte, sondern geht auf die technische Entwicklung im Laufe der Zeit zurück. Laufend gab es Neuentwicklungen, insbesonders im Grafik-Sektor. Grafikkarten waren in der Lage immer höhere Auflösungen und Bildwiederholfrequenzen darzustellen. Weiters kam hinzu, dass Monitore auch in der Lage waren, eine immer größere Farbanzahl darzustellen. Eine Ende fand man bei rund 16,7 Millionen Farben.
Die wichtigsten Modi werden im Folgenden aufgezählt:
Modus
Beschreibung
Auflösung
Farbanzahl
0
Textmodus
80 * 25
16 Farben
12
Grafikmodus
640 * 480
16 Farben
13
Grafikmodus
320 * 200
256 Farben
Wer 256 Farben nutzen möchte, muss sich mit einer Auflösung von 320 * 200 abgeben. 640 * 480 ist übrigens die höchste Auflösung, die wir verwenden können.
Das Umschalten in einen Modus sieht folgendermaßen aus:
SCREEN Modus
Nun können wir mit dem Zeichnen beginnen. Den ersten Befehl, den Sie kennen lernen werden, ist PSET. PSET erlaubt es Ihnen,
Punkte auf dem Bildschirm zu platzieren. Sie müssen lediglich wissen, wohin mit dem Punkt, geben die Koordinaten sowie
an, und der Punkt erscheint am Bildschirm. Die Syntax von PSET sieht folgendermaßen aus:
PSET (X-Koordinate, Y-Koordinate)
Das nächste Programm - eine kleine Grafikspielerei - gibt nach Zufallskoordinaten (mittels Zufallsgenerator erzeugt) Punkte aus.
CLS
SCREEN 12
RANDOMIZE TIMER
FOR i = 0 TO 300
PSET (i / RND, RND + i + RND)
NEXT i
Was entsteht ist ein wirres Muster von Punkten. Ändern Sie einfach mal die Zeile, in der es an die Ausgabe der Punkte geht, (PSET ...) nach Ihren Wünschen ab. Übrigens ist die Berechnung eine rein willkürliche. Welche Berechnung verwendet wird, ist natürlich vollkommen egal. Ebenso egal ist es, ob überhaupt eine Berechnung verwendet wird. Der Sinn hiervon liegt nur darin, viele Punkte an möglichst verschiedenen Koordinaten auszugegben.
Der nächste Befehl, den Sie nun kenne lernen, ist LINE. Seine Funktion ist wohl nicht schwer zu erraten - Linien zeichen.
Die Syntax sieht folgendermaßen aus:
LINE (X-Koordinate_Start, Y-Koordinate_Start)-(X-Koordinate_Ziel, Y-Koordinate_Ziel), Farbe
Übrigens ist der Punkt X: 0, Y: 0 links oben und nicht wie mathematisch üblich links unten. Die Linie benötigt einen Start- und einen Endpunkt. Vom Start- bis zum Endpunkt wird dann die Linie gezogen. Ebenso ist es, wenn sie etwas mit der Hand zeichnen. Irgendwo setzen Sie den Stift an, ziehen eine Linie und irgendwo nehmen Sie den Stift wieder vom Blatt weg. Die Punkte des Ansetzen (Startpunkt) und Wegnehmen (Zielpunkt) werden benötigt. Als Farbe können Sie auch eine der bekannten Farbnummern angeben. (0 bis 15; allerdings sind hier Werte bis 255 erlaubt - wenn in Modi gearbeitet wird, die dies unterstützen)
Ein Beispiel zum leichteren Verständnis:
LINE (200, 100)-(400, 300), 12
Diese rote Linie (Farbcode hierfür 12) würde sich vom Startpunkt X: 200, Y: 100 bis zum Endpunkt X: 400, Y: 300 erstrecken. Ein Beispiel, in dem auch Linien verwendet werden folgt in Zusammenhang mit CIRCLE.
Ein paar kleine Tipps am Rande: Sie können beispielsweise die Punktfarbe auch damit beeinflussen, indem Sie - wie bei der Arbeit im Textmodus - COLOR dazu verwenden. (COLOR 12 vor PSET erzeugt roten Punkt ...) Ebenso können Sie PRINT zur Textausgabe verwenden!
Den letzten Befehl, den Sie kennen lernen werden, ist CIRCLE. CIRCLE ermöglicht es, Kreise zu zeichnen. Dazu wird ein Startpunkt, ein Radius und ein Farbwert benötigt. Um wieder ein Beispiel aus dem richtigen Leben zu nennen: Wenn Sie mit einem Zirkel einen Kreis zeichnen, müssen Sie an einem Punkt einstechen, dieser Punkt entspricht dem Startpunkt. Sie müssen ebenso einen Radius wählen, um zu bestimmen, wie groß der Kreis werden soll.
Die Syntax sieht folgendermaßen aus:
CIRCLE (X-Koordinate, Y-Koordinate), Radius, Farbe
Im nächsten Beispiel wird die Verwendung von CIRCLE und LINE näher gebracht. Nebenbei wird auch noch ein Hinweistext in roter
Farbe auf dem Bildschirm ausgegeben.
CLS
SCREEN 12
COLOR 12
PRINT "Ein Kreis sowie eine Linie werden gezeichnet.."
LINE (50, 50)-(50, 400), 2
CIRCLE (500, 250), 100, 5
5.2; Sound:
Zur Tonausgabe stehen uns in Basic 3 Befehle zur Verfügung: BEEP, SOUND und PLAY.
BEEP gibt lediglich einen Standardton aus, wobei SOUND die Angabe der Frequenz (in Hertz) und Dauer (in Millisekunden; 1 Sekunde = 1000 Millisekunden)) verlangt.
BEEP braucht lediglich aufgerufen werden:
BEEP
SOUND hat hingegen die folgende Syntax:
SOUND Frequenz, Tondauer
Zum Beispiel ...
SOUND 100, 1000
... würde einen Ton mit einer Frequenz von 100 Hz (Hertz) 1000 ms (Millisekunden; 1000 ms = 1 sec) lange ausgeben.
PLAY bietet die Möglichkeit, Noten abzuspielen. Aufgrund seiner Komplexität werde ich diesen Befehl nicht näher erklären.
5.3; Shell:
SHELL erlaubt es, Befehle direkt an die DOS Eingabeaufforderung zu übergeben.
SHELL hat folgende Syntax:
SHELL Befehl
Beachten Sie, dass Sie den Befehl unter Anführungszeichen schreiben müssen.
SHELL "DIR"
... hätte zur Folge, dass das Basic-Programm während seines Ablaufs die Dateien anzeigen würde, die sich im aktuellen Verzeichnis befinden. Wenn Sie DIR unter DOS eintippen, hätte wäre das genau die Wirkung. Nachdem die Dateien angezeigt wurden, läuft das Programm normal weiter.
5.4; CHR$ und ASC:
Zum weiteren Verständnis ist es notwendig, zu wissen, was der ASCII - Zeichensatz ist. Wenn dieses Wissen nicht vorhanden ist, empfiehlt es sich, den nächsten - eingerückten - Absatz durchzulesen.
CHR$ liefert das Zeichen zu einem ASCII-Code, ASC (ASCII abgekürzt) macht genau das Gegenteil. ASC liefert demnach den ASCII-Code zu einem Zeichen.
CHR$ hat folgende Syntax:
CHR$ (ASCII-Code)
Übrigens ist CHR$ eine Funktion, denn zurückgeliefert wird das Zeichen zu einem ASCII-Code.
ASC hat folgende Syntax:
ASC (Zeichen)
Wie CHR$ ist auch ASC eine Funktion. Das nächste Beispiel gibt alle ASCII-Codes (Ausnahme Codes bis 32, da dies keine
darstellbaren Zeichen sind, sondern Steuerzeichen; beispielsweise sorgt das Zeichen mit dem Code dezimal 7 dafür, dass
ein Ton ausgegeben wird. (BEEP macht übrigens nichts anderes als PRINT CHR$(7) aufzurufen)) samt zugehörigen Zeichen auf dem
Bildschirm aus.
CLS
FOR i = 33 TO 255
PRINT i; CHR$(i)
NEXT i
Vorheriges Kapitel | Nächstes Kapitel |