DRAW

Aus C64-Wiki
Zur Navigation springenZur Suche springen
DRAW
Syntax: 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 (TSB: dR)
Token: $64 $0a (100 10)
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.

Funktionsweise im Detail:

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. Siehe auch HIRES.

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

Beispiel[Bearbeiten | Quelltext bearbeiten]

 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
DRAW und ROT in Aktion

Das Programm erzeugt das Beispielbild.

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. Korrekterweise müsste die Formel statt s%(1)=s-s/4 lauten: s%(1)=int(s/sqr(2)+.5), was in diesem Fall auf das gleiche Ergebnis hinausläuft.