BASIC-Compiler

Grafik

Zum Sprachumfang des BASIC-Compilers zählen auch Anweisungen und Funktionen für eine Vollgrafik. Alle Anweisungen, die auf dem Bildschirm zeichnen und somit Pixel setzen bzw. löschen werden im weiteren einfach nur Grafikbefehle genannt. Diese Grafikbefehle können nur in einer Grafikumgebung verwendet werden. Dazu muss das konkrete Zielsystem eine Vollgrafik unterstützen, und es muss ein Grafikmodus eingestellt sein.

Unterstützt das Zielsystem keine Vollgrafik, lassen sich die Grafikbefehle nicht compilieren.

Wird eine Vollgrafik unterstützt, hängt es wiederum vom Zielsystem ab, ob im Standardmodus (SCREEN 0) die Grafik zur Verfügung steht oder ob mit der SCREEN-Anweisung erst ein Grafikmodus eingestellt werden muss. Lesen Sie dazu bitte die Hinweise zu den Zielsystemen.

Die Funktionen H_PIXEL und W_PIXEL liefern die Höhe und Breite des aktuell eingestellten Bildschirmmodes. Liefern diese Funktionen den Wert 0, steht im aktuellen Bildschirmmodus keine Grafik zur Verfügung.

Mit diesen beiden Funktionen sowie mit den Konstanten GRAPHICSCREEN und LASTSCREEN kann in gewissem Umfang der Quelltext portabel gestaltet werden. Darunter versteht man die Möglichkeit, das BASIC-Programm so zu schreiben, dass es sich ohne Änderung für verschiedene Zielsysteme übersetzen lässt und dabei trotzdem auf jedem Zielsystem ein zumindest ähnliches Aussehen hat. Dazu muss man die Pixelkoordinaten nicht fest, sondern relativ in Abhängigkeit der von H_PIXEL und W_PIXEL zurückgelieferten Werte setzen. Einen Grafikmodus kann man portabel so einstellen:

 SCREEN GRAPHICSCREEN

Voraussetzung ist natürlich, dass das Zielsystem überhaupt Grafik unterstützt.

Grafikbefehle

Folgende Anweisungen führen grafische Operationen aus bzw. spielen in Bezug auf Grafik eine Rolle:

Farben

Der BASIC-Compiler kennt Anweisungen zum Setzen der Farbe (BORDER, COLOR, INK , PAPER). Jedoch unterstützt nicht jedes Zielsystem Farben. Auf Zielsystemen, die keine Farbgrafik bieten, haben die Anweisungen zum Setzen einer Farbe keine Wirkung und erzeugen auch keinen Programmcode, d.h., es können getrost portable BASIC-Programme mit Farbunterstützung geschrieben und auf einem Schwarz-/Weiß-Zielsystem compiliert werden, ohne dass dadurch unnützer Programmcode erzeugt wird.

Die Farbnummern unterscheiden sich zwischen den einzelnen Zielsystemen. Um trotzdem portablen Programmcode schreiben zu können, gibt es für einige häufig verwendete Farben Konstanten, die Sie auch verwenden sollten.

Programmbeispiel

Das Beispiel gibt im Grafikmodus einen eingerahmten Text aus, zeichnet einen Kreis drumherum, füllt diesen aus und verwendet den XOR-Modus zum Invertieren eines Bildschirmbereichs. Das Programm ist portabel gehalten, d.h., es ist ohne Änderung auf allen Zielsystemen lauffähig, die Grafik unterstützten.

DECLARE SUB boxed_text(x,y,t$)

CURSOR 0
SCREEN GRAPHICSCREEN
CLS

tx=W_PIXEL/5
ty=H_PIXEL/3
boxed_text(tx,ty,"Hallo")

cx=tx+((XPOS-tx)/2)
cy=ty+6
cr=((XPOS-tx)/2)+3
CIRCLE cx,cy,cr

PAINT cx,cy-cr+2

PEN PEN_XOR
LINE (cx-cr-2,cy-cr-2)-(cx+cr+2,cy+cr+2),BF

IF GRAPHICSCREEN<>0 THEN PAUSE 50
SCREEN 0
END

SUB boxed_text(x,y,t$)
  MOVE x+3,y+2
  LABEL t$
  LINE (x,y)-(XPOS,y+12),B
END SUB

:'Prozedur deklarieren

:'Cursor ausschalten
:'Grafikmodus (Grafikbildschirm) einschalten
:'Grafikbildschirm loeschen

:'eingerahmten Text ausgeben



:'Kreis zeichnen




:'Kreis ausfuellen

:'Bereich mittels XOR-Stift invertieren


:'bei separatem Grafikbildschirm warten und dann Bildschirm loeschen
:'Textbildschirm einschalten
:'Programmende

:'Prozedur implementieren
:'linke untere Ecke des Textes
:'Text ausgeben
:'Rahmen zeichnen