TEST

Aus C64-Wiki
Wechseln zu: Navigation, Suche
TEST
Format: a = TEST(<x>,<y>)
Parameter
x: X-Koordinate des Grafikpunktes (0..319 / 0..159)
y: Y-Koordinate des Grafikpunktes (0..199)
Einordnung
Typ: numerische Funktion
Kontext: Grafik
Aufgabe: Prüfen, ob ein Punkt gesetzt ist
Abkürzung: keine
Verwandte Befehle
keine


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

Typ: numerische Funktion
Syntax: a = TEST(<x>,<y>)
oder:   PRINT TEST(<x>,<y>)

TEST dient dazu, herauszufinden, ob ein Punkt gesetzt ist (in der Farbe <ink> erscheint, s. HIRES) oder nicht (also in der Hintergrundfarbe erscheint). 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.

Im Multicolor-Modus liefert die Funktion den Wert der Farbquelle zurück: 0 ist die Hintergrundfarbe (gleichbedeutend mit "Punkt nicht gesetzt"), 1..3 sind die entsprechenden Farbquellen bei MULTI bzw. LOW COL. Diese Werte werden auch in der Systemvariablen ST (STATUS) zwischengespeichert und sind dort abrufbar, bis ST geändert wird. Das Handbuch erwähnt diese beiden Eigenschaften von TEST nicht.

PLOT setzt hier mithilfe von CHAR und TEST Buchstaben auf eine Kugel
Wird kein Argument in der Funktion angegeben, so erscheint die Fehlermeldung ?SYNTAX ERROR, bei einem falschen Wert erscheint ?ILLEGAL QUANTITY ERROR.


Beispiel: 

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=b+.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
 
(erzeugt die abgebildete Grafik; vv steuert die Neigung der Kugel - (-π..+π), 
mit u wird festgestellt, ob ein Punkt auf der Kugel sichtbar ist; TEST prüft, 
ob an der aktuellen Stelle im Buchstaben selbst ein Bit gesetzt ist oder nicht)

Beispiel übernommen und angepasst aus dem Buch Spiele mit Computergrafik.
(Die Abarbeitungszeit auf einem Original-C64 ist sehr lang.)