Grafikę graczy i pocisków na razie odpuszczam 🙂 ale tylko na chwilę, bo zawsze chciałem ogarnąć temat scrollowania. Przerabiam więc przykłady z „Poradnika Programisty” Ziętary na Action! Oto pierwszy z nich. Jak widać, tak jak chciałem display listę zmieniam wskaźnikiem, bez peeków i poków.
Listing w Basicu:
100 POKE 82,0:GRAPHICS 0:FOR I=1 TO 92:? I,:NEXT I 110 DL=PEEK(560)+256*PEEK(561) 120 POKE 54377,0 130 FOR I=DL+10 TO DL+27:POKE I,PEEK(I)+32:NEXT I 140 FOR K=1 TO 10:FOR J=0 TO 7 150 POKE 54277,J:GOSUB 300 160 NEXT J:NEXT K:J=0 170 FOR K=1 TO 20:FOR J=0 TO 7 180 POKE 54277,J 190 NEXT J:NEXT K 200 POKE 54277,J:J=J+1 210 IF J<8 THEN 200 220 J=0:L=PEEK(DL+4):H=PEEK(DL+5):L=L+40 230 IF L>255 THEN L=L-256:H=H+1 240 IF H>255 THEN POKE 82,2:GRAPHICS 0:END 250 POKE DL+4,L:POKE DL+5,H:GOTO 200 300 FOR I=1 TO 100:NEXT I:RETURN
I zbliżony kod w Action (zbliżony, bo pisany na szybko i nie chce mi się pisać
printa z tabulatorem):
include "H1:RUNTIME.ACT"; proc delay() int i for i=0 to 500 do od return proc main() byte i, j, k, lmarg=82, vscrol=54277 card dl=560 byte pointer ptr card pointer p lmarg=0 graphics(0) for i=10 to 92 do printf("%I ", i) od vscrol=0 ptr=dl+10 for i=0 to 17 do ptr^==+32 ptr==+1 od for k=1 to 10 do for j=0 to 7 do vscrol=j delay() od od for k=1 to 20 do for j=0 to 7 do vscrol=j od od do while j<8 do vscrol=j j==+1 delay() od p=dl+4 j=0 p^==+40 if p>=65495 then lmarg=2 graphics(0) main() fi delay() od return
Dziś wieczorem eksperymenta ze scrollem poziomym.