TEST

Aus C64-Wiki
Zur Navigation springenZur Suche springen
TEST
Syntax: 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 (TSB: tE)
Token: $64 $58 (100 88)
Verwandte Befehle
keine


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

Typ: numerische Funktion
Syntax: TEST(<x>,<y>)

TEST dient dazu, herauszufinden, ob ein Punkt gesetzt ist (in der Farbe <ink> erscheint, siehe 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.

Wird kein Argument in der Funktion angegeben, so erscheint die Fehlermeldung ?SYNTAX ERROR, bei einem falschen Wert erscheint ?ILLEGAL QUANTITY ERROR.

Anmerkung: TEST führt intern ein PLOT mit dem Wert 11 für die Farbquelle aus. Es ist auch möglich, direkt mit PLOT zu testen, wobei das Ergebnis dann nur in ST zur Verfügung steht.


Beispiel[Bearbeiten | Quelltext bearbeiten]

PLOT setzt hier mithilfe von CHAR und TEST Buchstaben auf eine Kugel

Das Beispiel 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.)

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