RosettaCodeData/Task/Matrix-digital-rain/Aquarius-BASIC/matrix-digital-rain.basic

23 lines
541 B
Plaintext

10 DIM P(40),ACT(40),S(40)
20 FOR I=0 TO 1000:POKE 13312+I,0:NEXT
100 CA=0
110 FOR X=0 TO 39:IF ACT(X)=0 THEN 180
120 CA=CA+1
130 IF S(X)=0 THEN Y=P(X)-1:COL=0:GOSUB 1000:GOTO 160
140 Y=P(X):COL=112:IF Y<24 THEN GOSUB 1000
150 Y=P(X)-1:COL=32:GOSUB 1000
160 P(X)=P(X)+1
170 IF P(X)=25 THEN ACT(X)=0
180 NEXT X
190 IF CA<6 AND RND(1)<.1 THEN GOSUB 2000
200 GOTO 100
1000 POKE 13312+40*Y+X,COL
1010 POKE 12288+40*Y+X,INT(255*RND(1))
1020 RETURN
2000 NX=38*RND(1)+1:ACT(NX)=1:P(NX)=1:OLD=S(NX)
2010 S(NX)=0:IF OLD=0 THEN S(NX)=1
2020 RETURN