Achsenkreuz
Der
Grafikbildschirm im Modus 12 besteht aus 640 Spalten und 480 Zeilen.
An jedem Kreuzungspunkt einer Spalte mit einer Zeile kann ein Punkt
in einer von 16 Farben gesetzt werden (=Pixel).
Das folgende Programm zeichnet ein beschriftetes Achsenkreuz in der
Farbe gelb im Bereich von -5 bis 5 (X - Wert) und -4 bis 4 (y - Wert).
Speichere unter akreuz.bas
REM
Achsenkreuz
SCREEN 12
CLS
farbe = 14 : REM Farbe gelb
REM x-Achse
LINE (0, 232)-(639, 232), farbe
LINE (639, 232)-(635, 228), farbe
LINE (639, 232)-(635, 236), farbe
FOR i = -8 TO 8
LINE (320 + i * 40, 230)-(320 + i * 40, 234), farbe
NEXT i
FOR i = -7 TO 7
IF i <> 0 THEN
LOCATE 16, (i + 8) * 5: PRINT i
END IF
NEXT i
REM y-Achse
LINE (320, 0)-(320, 479), farbe
LINE (320, 0)-(316, 4), farbe
LINE (320, 0)-(324, 3), farbe
FOR i = -5 TO 5
LINE (318, 232 + i * 48)-(322, 232 + i * 48), farbe
NEXT i
FOR i = -4 TO 4
IF i <> 0 THEN
LOCATE 30 - (i + 5) * 3, 42: PRINT i
END IF
NEXT i
Eine
Einheit in Richtung der x-Achse umfasst 40 Pixel, die y-Achse selbst
wird bei x=320 gezeichnet. In Richtung der y-Achse werden für
eine Einheit 48 Pixel verwendet, die x-Achse wird bei y=232 gezeichnet.
Punkte
im Achsenkreuz
Füge
an das obige Programm die Zeile
PSET (320+(-2)*40,232-(+3)*48),farbe
an.
Welche Koordinaten (in Einheiten des Achsenkreuzes) hat der gezeichnete
Punkt?
Zeichne auch die Punkte P(4/3), Q(-2/-1), R(3/-1) und S(-4/2). Verwende
dazu verschiedene Farben (von Farb-Nummer 1 bis 15). Füge dazu
vier neue Zeilen an das Programm an und ersetze die Variable farbe
durch die entsprechende Farbnummer.
Um
das Setzen von Punkten im Programm 'Achsenkreuz' zu vereinfachen,
kann man eine entsprechende Subroutine schreiben.
Entferne im Programm 'Achsenkreuz' zunächst alle selbst angefügten
Zeilen und ergänze dann das Programm um die Zeile Plot 1,-3,farbe.
Bewege die Schreibmarke unter einen Buchstaben des Wortes Plot und
erzeuge mit Bearbeiten - Neue Sub einen Rahmen für die neue Subroutine.
Der Bildschirm hat daraufhin zunächst folgendes Aussehen:
SUB Plot
END SUB
Ergänze
dann dieses Unterprogramm wie folgt:
SUB Plot (x,y,f)
PSET (320+x*40,232-y*48),f
END SUB
Diesem
Unterprogramm wird beim Aufruf eine x- und eine y-Koordinate sowie
eine Farbe übergeben. Der PSET-Befehl berechnet dann für
das durch das Hauptprogramm gezeichnete Achsenkreuz die Pixelkoordinaten
und zeichnet den gewünschten Punkt in der entsprechenden Farbe.
Speichere unter akreuz1.bas
Zeichne mit Hilfe des Unterprogrammes Plot die Punkte P(4/3), Q(-2/-1),
R(3/-1) und S(-4/2). Verwende dazu verschiedene Farben (von Farb-Nummer
1 bis 15). Füge dazu die vier entsprechenden neuen Zeilen an
das Hauptprogramm an.
Die gezeichneten Punkte auf dem Bildschirm sind sehr klein. Um die
Punkte etwas besser erkennen zu können, kann man statt eines
Punktes vier Punkte zeichnen.
Wechsle mit Ansicht - Subs zum Unterprogramm Plot und ergänze
das Unterprogramm wie folgt (akreuz3.bas):
SUB Plot
(x,y,f)
PSET (320+x*40,232-y*48),f
PSET (321+x*40,232-y*48),f
PSET (320+x*40,233-y*48),f
PSET (321+x*40,233-y*48),f
END SUB
Wechsle
zurück zum Modul des Hauptprogrammes und starte das Programm.
Beobachte die veränderte Bildschirmausgabe.
Geraden
im Achsenkreuz
Um
zwei Punkte im Achsenkreuz durch eine Linie zu verbinden werden die
Koordinaten des Anfangs- und des Endpunktes benötigt.
Das Programm 'Achsenkreuz' wird um eine weitere Subroutine erweitert.
Entferne dazu zunächst sämtliche Plot-Befehle am Ende des
Hauptprogramms. Füge dann die Zeile
Connect
x1,y1,x2,y2,f
an
das Hauptprogramm an. Die ersten beiden Zahlenangaben sind die Koordinaten
des Anfangspunktes, dann folgen die zwei Zahlenangaben für den
Endpunkt. Die letzte Zahlenangabe gibt die zu verwendende Farbe an.
Bewege
die Schreibmarke unter einen Buchstaben des Wortes Draw und erzeuge
mit Bearbeiten - Neue Sub einen Rahmen für die neue Subroutine.
Der Bildschirm hat daraufhin zunächst folgendes Aussehen:
SUB Connect
END SUB
Ergänze
dann dieses Unterprogramm wie folgt:
SUB Connect (x1,y1,x2,y2,f)
LINE (320+x1*40,232-y1*48)-(320+x2*40,232-y2*48),f
END SUB
Weiter
mit Lektion 7