CHAR
CHAR | |
Syntax: | CHAR <x>,<y>,<bc>,<f>,<zm> |
Parameter | |
x: X-Koordinate des Startpunktes (0..319 / 0..159) | |
y: Y-Koordinate des Startpunktes (0..199) | |
bc: Bildschirmcode des Zeichens (0..255) | |
f: Farbquelle (0..2 / 0..4) | |
zm: Zoomfaktor (1..255) | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Grafik |
Aufgabe: | Schreiben einzelner Zeichen im Grafikmodus |
Abkürzung: | keiner (cH unter TSB) |
Token: | $64 $0b (100 11) |
Verwandte Befehle | |
TEXT |
Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort CHAR.
Typ: Anweisung
Syntax: CHAR <x>,<y>,<bc>,<f>,<zm> TSB-Syntax: CHAR <x>,<y>,<bc>, [[<f>,[<zm>]]
CHAR schreibt ein einzelnes Zeichen im Bildschirm-Code (<bc>) in der Farbe der angegebenen Farbquelle <f> (s. dazu HIRES) in den Grafikbildschirm. Zulässige Werte für <x> sind 0..319 (im Hires-Modus) bzw. 0..159 (im Multicolor-Modus). Für <y> sind in beiden Fällen Werte von 0 bis 199 erlaubt. Der Punkt 0,0 ist in der linken oberen Ecke. Kleinbuchstaben erhält man, indem man zum Bildschirm-Code des Zeichens den Wert 256 hinzuaddiert.
Leider wirkt sich der Zoom (<zm>) nur auf die Höhe der Zeichen aus, nicht jedoch auf deren Breite. Zooms größer als 5 wirken daher bereits unansehnlich (vgl. dazu DUP (TSB)).
Mithilfe eines einfachen POKEs kann man bei CHAR auch eigene Zeichensätze einbinden. Siehe dazu beim Stichwort TEXT.
Wird kein Parameter eingegeben, so erscheint die Fehlermeldung ?SYNTAX ERROR, bei einem falschen Wert erscheint ?BAD MODE ERROR. In TSB kann man die letzten beiden Parameter (<f> und <zm>) von rechts her auch weglassen. Sie werden beide mit dem Standardwert 1 initialisiert.
Beispiel[Bearbeiten | Quelltext bearbeiten]
100 HIRES 8,11: bb=-1: vv=.6 105 CIRCLE 160,100,100,100,1: PAINT 160,100,1 Anfangskreis malen und füllen 110 BLOCK 0,0,8,8,0 120 a=a+1: IF a>26 THEN a=1 Buchstaben schreiben 130 CHAR 0,0,a,1,1 140 bb=bb+.008/COS(bb): ll=ll+.2/COS(bb) 150 IF bb>1.45 THEN 240 160 FOR i=0 TO 8 STEP .5: FOR j=0 TO 8 STEP .5 170 IF TEST(i,8-j)=0 THEN 230 180 b=bb+.02*j: l=ll+.02/COS(bb)*i 190 x=SIN(l)*COS(b): y=COS(l)*COS(b): z=SIN(b) Buchstaben auf die Kugel übertragen 200 u=y*COS(vv)+z*SIN(vv): v=-y*SIN(vv)+z*COS(vv) 210 IF u<0 THEN i=8: j=8: GOTO 230 220 PLOT 160+100*x,100-100*v,0 230 NEXT: NEXT: GOTO 110 240 CIRCLE 160,100,100,100,1 250 BLOCK 0,0,8,8,0 Schlusskreis malen 260 WAIT 198,255
Das Programm erzeugt die abgebildete Grafik; vv steuert die Neigung der Kugel - (-π..+π), mit u wird festgestellt, ob ein Punkt sichtbar ist.
Beispiel übernommen und angepasst aus dem Buch Spiele mit Computergrafik.
Die Abarbeitungszeit auf einem Original-C64 ist sehr lang.
$ | % | @ | 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