Action!zmy i Scrolle.

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.