ROT

Aus C64-Wiki
Zur Navigation springenZur Suche springen
ROT
Syntax: ROT <r>, <g>
Parameter
r: Richtungsdefinition (0..7)
g: Größe (0..255)
Einordnung
Typ: Anweisung
Kontext: Grafik
Aufgabe: Festlegen der Eigenschaften einer DRAW-Figur
Abkürzung: keine (TSB: rO)
Token: $64 $09 (100 9)
Verwandte Befehle
DRAW


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

Typ: Anweisung 
Syntax: ROT <r>, <g>

ROT ergänzt den DRAW-Befehl, der eine ist ohne den anderen nicht verwendbar.

Mit dem zweiten Parameter von ROT legt man fest, wie groß die Schrittweite der Richtungsanweisungen von DRAW sein soll. Die hier angegebene Schrittweite gilt für alle folgenden DRAW-Befehle bis zum nächsten ROT. Ein Wert von 0 entspricht in diesem Fall einer Schrittweite von 256 Pixeln. Punkte, die an einer Seite aus dem Grafikbereich herausragen, zeichnet der Interpreter entgegen seiner sonstigen Verhaltensweise an der gegenüberliegenden Seite weiter.

Der Parameter <r> bezeichnet den Rotationswinkel, den Simons' Basic bei der Darstellung der DRAW-Figur einhalten soll. Es ist nicht möglich, einen beliebigen Winkel einzugeben. Stattdessen ist man beschränkt auf acht verschiedene Winkel im Abstand von 45 Grad nach der folgenden Tabelle:

Befehl Richtung Winkel in Grad
0 N 0
1 NO 45
2 O 90
3 SO 135
4 S 180
5 SW 225
6 W 270
7 NW 315

Beachten: Die ungeraden Werte (also die Vielfachen von 45 Grad) führen dazu, dass die Figur um ein Viertel vergrößert gezeichnet wird. Im Beispielprogramm sieht man, wie man diesem Problem entgegenwirken kann.

Wird kein Parameter eingegeben, so erscheint die Fehlermeldung ?SYNTAX ERROR, bei einem Wert größer als 7 für die Rotation 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

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.