Paint eens met een string, door Arnold Spaink
Als je in QuickBasic een programma schrijft met grafische onderdelen
zul je meestal ook de opdracht PAINT gebruiken, het invullen van een
vlak met een kleur. In plaats van een kleur kan ook een patroon worden
gebruikt om een vlak te vullen. Zo'n patroon staat in een string met een
maximum lengte van 64 bytes, deze string heet 'tilestring'. Tilestrings
worden zelden toegepast, er zijn geen 'standaard' tilestrings, alleen
standaard kleuren. Zelf een patroon ontwerpen is een ingewikkelde
aangelegenheid. Ik beschikte al over een programmaatje om pseudokleuren
te maken, breidde dat uit om me in het systeem daarachter te verdiepen
en kwam toevalligerwijze op een eenvoudig patroon uit. Al doende groeide
dat programma, het is nu nogal groot en doet veel meer, maar ik maakte er
wel verrassende patronen mee.
Vier tilestrings heb ik in een demootje gezet. Als het je interesseert,
in QuickBasic help vind je meer gegevens onder PAINT.

Met het programma tiling.bas kunnen tilestrings gemaakt worden.
Vanwege de lengte van dit programma kunt u dit verkrijgen op de kwartaaldiskette of downloaden van onze web site.

SCREEN 12

FOR I = 1 TO 32
  READ NR: TILE1$ = TILE1$ + CHR$(NR)
NEXT I
FOR I = 1 TO 63
  READ NR: TILE2$ = TILE2$ + CHR$(NR)
NEXT I
FOR I = 1 TO 60
  READ NR: TILE3$ = TILE3$ + CHR$(NR)
NEXT I
FOR I = 1 TO 14
  READ NR: TILE4$ = TILE4$ + CHR$(NR)
NEXT I

FOR X = 150 TO 350 STEP 100
  CIRCLE (X, 100), 50, 8, 0, 3.14
  CIRCLE (X, 150), 50, 8, 3.14, 0
NEXT X
LINE (100, 100)-(100, 150), 8
LINE (400, 100)-(400, 150), 8

DO
  PAINT (150, 100), TILE1$, 8
  IF INKEY$ <> "" THEN END
  SLEEP 2: PAINT (150, 100), 0, 8
  PAINT (150, 100), TILE2$, 8
  IF INKEY$ <> "" THEN END
  SLEEP 2: PAINT (150, 100), 0, 8
  PAINT (150, 100), TILE3$, 8
  IF INKEY$ <> "" THEN END
  SLEEP 2: PAINT (150, 100), 0, 8
  PAINT (150, 100), TILE4$, 8
  IF INKEY$ <> "" THEN END
  SLEEP 2: PAINT (150, 100), 0, 8
LOOP

DATA 0,15,240,240,0,15,240,240,0,15,240,240
DATA 0,15,240,240,240,15,15,255,240,15,15
DATA 255,240,15,15,255,240,15,15,255
DATA 64,64,255,64,64,64,255,64,64,64,255,64
DATA 255,255,255,4,4,4,255,4,4,4,255,4,4,4
DATA 255,4,255,255,255,68,64,64,255,64,64,64
DATA 255,64,64,64,255,64,255,255,255,64,2,2
DATA 255,2,2,2,255,2,2,2,255,2,255,255,255
DATA 255,1,1,1,255,2,2,2,255,4,4,4,255,8,8,8
DATA 255,16,16,16,255,32,32,32,255,64,64,64
DATA 255,128,128,128,255,64,64,64,255,32,32,32
DATA 255,16,16,16,255,8,8,8,255,4,4,4,255,2,2,2,255,1,1,1
DATA 0,3,0,0,0,12,0,0,0,48,0,0,0,192

