ROT
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
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.
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE