DUP (TSB)
DUP (TSB) | |
Syntax: | DUP <x1>,<y1>,<bt>,<ho>,<x2>,<y2>,<f>,<zm> |
Parameter | |
x1: X-Koordinate des Startpunktes (0..319 / 0..159) | |
y1: Y-Koordinate des Startpunktes (0..199) | |
bt: Breite in Pixeln (0..255) | |
ho: Höhe in Pixeln (0..199) | |
x2: X-Koordinate des Zielpunktes (0..319 / 0..159) | |
y2: Y-Koordinate des Zielpunktes (0..199) | |
f: Farbquelle (0..2 / 0..4) | |
zm: Zoomfaktor (1..255) | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Grafik |
Aufgabe: | Umkopieren von Grafik an eine andere Stelle (mit Skalierungsmöglichkeit) |
Abkürzung: | keine |
Token: | $64 $55 (100 85) |
Verwandte Befehle | |
keine |
Dieser Artikel beschreibt das TSB-Schlüsselwort DUP (TSB).
Das entsprechende Simons'-Basic-Schlüsselwort lautet ebenfalls DUP.
Typ: Anweisung
Syntax: DUP <x1>,<y1>,<bt>,<ho>,<x2>,<y2>,<f>,<zm>
Mit DUP hat der Programmierer ein Werkzeug in der Hand, Bereiche der Grafik von einer Stelle an eine andere zu kopieren und dabei sogar zu vergrößern oder zu verkleinern. Zulässige Werte für <x1> und <x2> sind 0..319 (im Hires-Modus) bzw. 0..159 (im Multicolor-Modus). Für <y1> und <y2> sind in beiden Fällen Werte von 0 bis 199 erlaubt. Der Punkt 0,0 ist in der linken oberen Ecke. <bt> (Breite) und <ho> (Höhe, beide max. 255 Pixel) markieren den zu kopierenden Bereich. Mit <zm> (Zoomfaktor) kann dieser Bereich dabei zunächst einmal (linear) vergrößert werden (der Wert 2 verdoppelt), sowohl in der Höhe als auch in der Breite.
Wird kein Parameter eingegeben, so erscheint die Fehlermeldung ?SYNTAX ERROR, bei einem falschen Wert erscheint ?BAD MODE ERROR.
Beispiele[Bearbeiten | Quelltext bearbeiten]
Beispiel 1[Bearbeiten | Quelltext bearbeiten]
Erzeugt den mittleren Teil der Animation:
230 CIRCLE 10,10,10,10,1 Kreis mit Radius 10 Pixel zeichnen 240 : 250 FOR i=0 TO 14 260 DUP 0,0,20,20,20*i+20,0,1,1 Diesen Kreis rund um den Screen kopieren 270 NEXT 280 FOR i=0 TO 7 290 DUP 0,0,20,20,300,20*i+20,1,1 300 NEXT 310 FOR i=15 TO 0 STEP -1 320 DUP 0,0,20,20,20*i,180,1,1 330 NEXT 340 FOR i=7 TO 0 STEP -1 350 DUP 0,0,20,20,0,20*i+20,1,1 360 NEXT 370 : 380 DUP 0,0,20,20,105,50,1,5 Und einmal in die Mitte, fünffach vergrößert 390 WAIT 198,255
Beispiel 2[Bearbeiten | Quelltext bearbeiten]
100 init: achsen: vorlage 180 nach unten: nach links unten: nach links 190 DO NULL 290 bildschirmfarben 900 END 1000 PROC init 1010 HIRES 11,12: COLOUR: MULTI 12,11,1 1020 x=84: y=30: br=7*11: ho=3*20: f=0 1030 x1=76: y1=105 1040 END PROC 1100 PROC achsen 1110 LINE x-4,y-4,x-4,200-y,2 1120 LINE 4,96,156,96,2 1125 LINE 4,97,156,97,2 1130 END PROC 1200 PROC vorlage 1210 TEXT x,y,"{ctrl-b}Achsen-",3,2,11 1220 TEXT x,y+20,"{ctrl-b}Symme-",3,2,12 1230 TEXT x,y+40,"{ctrl-b}trie",3,2,12 1260 END PROC 1300 PROC nach links 1305 f=f+1 1310 FOR i=0 TO br-4 1320 DUP x+i,y,1,ho,x1-i,y,f,1 DUP wird hier wie ein Scanner eingesetzt 1330 NEXT 1340 END PROC 1400 PROC nach unten 1405 LOW COL 15,0,0 1410 FOR i=0 TO ho 1420 DUP x,y+ho-i,br,1,x,y1+i,1,1 1430 NEXT 1435 HI COL 1440 END PROC 1500 PROC nach links unten 1510 y=105: nach links: y=30 1540 END PROC 1600 PROC bildschirmfarben 1610 COLOUR 11,12,0: FCOL 0,0,40,25,0 zum Schluss die Farben rekonstruieren (wegen MULTI) 1620 END PROC
$$ | %% | AT | CALL | CENTER | CHECK | COLD | COLOR | COPY | CLS | CSET | D! | D!PEEK | D!POKE | DIR | DISK | DISPLAY | DIV | DO | DO NULL | DRAW TO | DUMP | DUP | ELSE | ERROR | EXEC | FETCH | FIND | GRAPHICS | INSERT | INST | JOY | KEY | KEYGET | LIN | MAP | MEMCLR | MEMCONT | MEMDEF | MEMLEN | MEMLOAD | MEMOR | MEMPEEK | MEMPOS | MEMREAD | MEMRESTORE | MEMSAVE | MERGE | MOB ON/OFF | MOBCOL | MOD | MOVE | MULTI | NRM | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PLACE | RENUMBER | RESUME | RETRACE | SCRLD | SCRSV | SOUND | TEXT | TRACE | USE | WAVE | X!