'============================================================================
' (p)'23/02/2003 by East-Power-Soft
'
' Tipp 4: Nutzen des PUT Befehls zum Animieren eines transparenten Objekts.
'============================================================================
SCREEN 13
'============================================================================
' Die Routine bewegt ein Bild transparent mit POKE.
'============================================================================
LOCATE 1, 1: COLOR 7
PRINT "Mit POKE kann der Smilie einfach so ge-"
PRINT "zeichnet werden. Wenn man die schwarzen"
PRINT "Bildpunkte wegläßt, wird er automatisch"
PRINT "transparent. Natürlich muß der Hinter-"
PRINT "grund immer wieder hergestellt werden."
LOCATE 13, 10: PRINT "Das ist die Testzeile"

DIM Hintergrund%(8, 7)          '---> Feld für Hintergrund

DEF SEG = &HA000
YBew = 96
FOR XBew = 300 TO 20 STEP -1    '---> Bewegungsschleife
   RESTORE Daten

   FOR Y = 0 TO 7               '---> merke Hintergrund
      FOR X = 0 TO 8
         Hintergrund%(X, Y) = PEEK(XBew + X + ((Y + YBew) * 320))
      NEXT
   NEXT

   FOR Y = 0 TO 7               '---> Smilie - Schleife
      FOR X = 0 TO 8
         READ F%                '---> lese Grafikdaten
         IF F% > 0 THEN POKE XBew + X + ((Y + YBew) * 320), F%
      NEXT
   NEXT

   FOR Pause = 0 TO 10000: NEXT '---> ein Päuschen

   FOR Y = 0 TO 7               '---> Hintergrund wiederherstellen
      FOR X = 0 TO 8
         POKE XBew + X + ((Y + YBew) * 320), Hintergrund%(X, Y)
      NEXT
   NEXT
NEXT
DEF SEG

LOCATE 20, 1
PRINT "Geht, ist aber sehr"
PRINT "umständlich und langsam.";
COLOR 14: PRINT "Bitte Taste drücken."
WHILE INKEY$ = "": WEND

'============================================================================
' Und nun eine Routine mit PUT.
'============================================================================
CLS
DEF SEG = &HA000
RESTORE Daten '---> 1. Das Objekt zeichnen und mit GET in ein Feld lesen
              '---> 2. gleichzeitig ein Negativbild des Objekts herstellen
FOR Y = 0 TO 7
   FOR X = 0 TO 8
      READ F%
      POKE X + (Y * 320), F%
      IF F% = 0 THEN POKE X + 9 + (Y * 320), 15
   NEXT
NEXT
DEF SEG

DIM SmiliePositiv%(37)                       '---> Feld für Smilie
DIM SmilieNegativ%(37)                       '---> Feld für Smilie
DIM Hintergrund1%(37)                        '---> Feld für Hintergrund
GET (0, 0)-(8, 7), SmiliePositiv%
GET (9, 0)-(17, 7), SmilieNegativ%

COLOR 7: PRINT "Nun das selbe in der PUT Version."

LOCATE 13, 10: PRINT "Das ist die Testzeile"
YBew% = 96
FOR XBew% = 300 TO 20 STEP -1                '---> Bewegungsschleife
   GET (XBew%, YBew%)-(XBew% + 8, YBew% + 7), Hintergrund1%
   PUT (XBew%, YBew%), SmilieNegativ%, AND
   PUT (XBew%, YBew%), SmiliePositiv%, OR
   FOR Pause = 0 TO 10000: NEXT              '---> ein Päuschen
   PUT (XBew%, YBew%), Hintergrund1%, PSET
NEXT

'============================================================================
' Die Daten für ein kleines Bild.
'============================================================================
Daten:
DATA 0,0,0,11,11,0,0,0,0
DATA 0,11,11,0,0,11,11,0,0
DATA 0,11,0,0,0,0,11,0,0
DATA 11,0,15,0,0,15,0,11,0
DATA 11,0,0,0,0,0,0,11,0
DATA 0,11,0,15,15,0,11,0,0
DATA 0,11,11,0,0,11,11,0,0
DATA 0,0,0,11,11,0,0,0,0