DRAW

Aus C64-Wiki
Wechseln zu: Navigation, Suche
DRAW
Format: DRAW <str>, <x>, <y>, <f>
Parameter
str: String für die Richtungsdefinitionen
x: X-Koordinate (0..319 bzw. 0..159)
y: Y-Koordinate (0..199)
f: Farbquelle (0..4)
Einordnung
Typ: Anweisung
Kontext: Grafik
Aufgabe: Definieren einer Figur
Abkürzung: keine
Verwandte Befehle
ROT


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort DRAW.

Typ: Anweisung 
Syntax: DRAW <str>, <x>, <y>, <f>

DRAW ist das schlechte Ergebnis einer guten Idee. Der Befehl dient dazu, immer gleich aussehende Linienzüge platzsparend und flexibel in Simons' Basic eingeben zu können. Dazu hat sich David Simons einen Befehl ausgedacht, der ein bisschen die Turtle-Grafik der Programmiersprachen LOGO oder Comal widerspiegeln sollte. Der Befehl enthält Anweisungen, um den Grafikcursor in eine bestimmte Richtung zu bewegen (in LOGO heißt das "vorwärts" oder kurz "vw"), dabei den Schreibstift entweder hochzuheben (damit er nicht schreibt) oder abzusenken (dann geht's los mit dem Malen), was in LOGO "stift hoch" oder "stift ab" genannt wird. Alle diese Dinge enthält DRAW auch.

Der große Nachteil ist aber nun, dass man diesen Richtungsanweisungen nicht individuell sagen kann, wie weit sie gehen sollen. Dafür gibt es einen Extrabefehl (ROT), der dann für die gesamte Anweisungsfolge gilt. Es wäre auch schön, wenn man andere als nur rechte Winkel verwenden dürfte, aber das ist bei DRAW nicht vorgesehen. Man kann nur das gesamte "Objekt" drehen (wiederum mit ROT), aber auch hier nur in 45-Grad-Schritten, die zudem noch ein ums andere Mal linear vergrößern, also das Objekt verändern.

Wie funktioniert DRAW nun? Der erste Parameter (<str>) ist ein String, der in Form von Ziffern zwischen 0 und 9 die Richtungsbefehle enthält.

Richtungsbefehl ohne zu zeichnen,
nach...
Richtungsbefehl mit zeichnen,
nach...
0 rechts 5 rechts
1 oben 6 oben
2 unten 7 unten
3 links 8 links
4 (unten) 9 Stop

Die Ziffer "9" beendet das Abarbeiten eines Strings, auch wenn darin noch mehr folgen sollte. Das ist ganz nützlich, um in so einem String Kommentare unterzubringen, ohne den Interpreter zu stören. Wie immer in BASIC darf ein String jedoch insgesamt nicht länger sein als 255 Zeichen.

Die beiden folgenden Parameter <x> und <y> legen den Startpunkt des Objekts fest, und zwar dessen linke obere Ecke. Der letzte Parameter ist die in Simons' Basic übliche Angabe der Farbquelle bei Grafikbefehlen. Näheres dazu beim Befehl HIRES.

Wird kein Parameter eingegeben, so erscheint die Fehlermeldung ?SYNTAX ERROR, bei einem falschen Wert erscheint ?BAD MODE ERROR.

DRAW und ROT in Aktion
Beispiel: 

 100 w$="777755662255666600"
 110 i$="727700"
 115 k$="1111777711562577001111"
 120 DIM s%(1)
 125 HIRES 1,0:
     x=160:
     y=100:
     s=8
 130 s%(0)=s:
     s%(1)=s-s/4
 135 d$=w$+i$+k$+i$
 140 REPEAT :
       GET x$:
       FOR w=0 TO 7
 150     ROT w,s%(w AND 1):
         DRAW d$,x,y,1
 160     DRAW d$,x,y,0
 170   NEXT 
 180 UNTIL x$>""
 185 ROT 0,s:
     DRAW d$,x,y,1
 190 WAIT 198,255

(erzeugt das Beispielbild)

Kommentar: Die Größe des Objekts wird mit s in Zeile 125 definiert. Da beim Drehen mit
Mehrfachen von 45 Grad Verzerrungen entstehen (das Objekt wird ein Viertel größer), werden 
diese in den Zeilen 130 und 150 wieder herausgerechnet.