3 GO SUB 6000: GO TO 300 25 FOR i=1 TO 3 32 IF f(i)=12 THEN LET fi=INT(RND*9)/3: LET y=INT fi: LET y$=CHR$ (y+y(i))+CHR$ (INT((fi-y)*3)+x(i)+kf): PRINT INK 7;b$(i,2): FOR z=1 TO 2: LET b$(i,z,2 TO 3)=y$: NEXT z: PRINT b$(i,1): LET f(i)=10: GO TO 60 36 IF f(i)=11 THEN PRINT b$(i,2) 40 LET f(i)=f(i)+1 60 IF wx=-1 THEN LET wx=-2: PRINT INK 7;w$: NEXT i: GO TO 25 65 IF wx>=0 THEN LET x=wx: LET wx=wx-1: FOR z=1 TO a(4,1): LET w$(w(z))=CHR$ x: NEXT z: PRINT w$: NEXT i: GO TO 25 70 IF wx=-2 AND RND*50<2 THEN LET wx=cl-a(4,2)-1 75 NEXT i: GO TO 25 80 REM Continuous Loop: 3=nb=number of bats 100 REM BASIC Week 2: Halloween Boogaloo 110 REM http://reddit.com/r/RetroBattlestations 120 REM written by FozzTexx 130 REM Sinclair Spectrum port by Battle Bunny 131 REM FASTER version with substantial changes 300 REM Load background and draw on screen 310 LET ar=0: GO SUB 1510 330 LET x=2: LET kf=x+a(1,2): IF RND>0.5 THEN LET x=cl-a(1,2)-2: LET kf=0 340 LET kw=cl-a(1,2)-4: 345 FOR z=1 TO a(1,1): LET p$(h(z))=CHR$ x: NEXT z: PRINT p$ 500 REM Load sprites into variables 510 GO SUB 1510: DIM b$(3,2,LEN p$): FOR i=1 TO 3: LET b$(i,1)=p$: NEXT i 520 GO SUB 1510: DIM y$(2): FOR i=1 TO 3: LET b$(i,2)=p$: NEXT i 530 GO SUB 1510: LET w$=p$ 600 REM Animation: nb=3=number of bats 620 FOR i=1 TO nb 630 LET x(i)=INT(RND*(kw-a(2,2))): LET y(i)=INT(RND*((rw-4-a(1,1)/2)/nb))*nb+i+1: LET f(i)=INT(RND*2)+10: LET fi=INT(RND*9)/3: LET y=INT fi: LET y$=CHR$ (y+y(i))+CHR$ (INT((fi-y)*3)+x(i)+kf) 640 FOR z=1 TO 2: LET b$(i,z,2 TO 3)=y$: NEXT z 650 NEXT i: GO TO 20 1500 REM Load a sprite from DATA into a string 1510 LET p$="": LET ar=ar+1: READ a(ar,1),a(ar,2),a(ar,3): 1520 FOR z=1 TO a(ar,1): READ s$,t$: LET p$=p$+s$+t$: NEXT z 1580 RETURN 5000 DATA 15,17,CODE "h" 5001 DATA CHR$ 22+CHR$ 07+CHR$ 99," ^" 5010 DATA CHR$ 22+CHR$ 08+CHR$ 99," / \" 5020 DATA CHR$ 22+CHR$ 09+CHR$ 99," //|\\" 5030 DATA CHR$ 22+CHR$ 10+CHR$ 99," / -+- \" 5040 DATA CHR$ 22+CHR$ 11+CHR$ 99," / \|/ \" 5050 DATA CHR$ 22+CHR$ 12+CHR$ 99," /_________\" 5060 DATA CHR$ 22+CHR$ 13+CHR$ 99," | ___ |" 5080 DATA CHR$ 22+CHR$ 14+CHR$ 99," /\ |-+-||IIII" 5090 DATA CHR$ 22+CHR$ 15+CHR$ 99," / \|_|_|| \" 5100 DATA CHR$ 22+CHR$ 16+CHR$ 99," / [] \ |_____" 5110 DATA CHR$ 22+CHR$ 17+CHR$ 99,"/_____ | +-+|" 5120 DATA CHR$ 22+CHR$ 18+CHR$ 99," | +--+ | |+||" 5130 DATA CHR$ 22+CHR$ 19+CHR$ 99," | | | | +-+|" 5140 DATA CHR$ 22+CHR$ 20+CHR$ 99," | |o | |____|" 5150 DATA CHR$ 22+CHR$ 21+CHR$ 99," |___|__|_|" 5160 DATA 1,3,CODE "b" 5161 DATA CHR$ 22+CHR$ 99+CHR$ 99,"^v^" 5170 DATA 1,3,CODE "c" 5171 DATA CHR$ 22+CHR$ 99+CHR$ 99,"-v-" 5180 DATA 7,13,CODE "w" 5181 DATA CHR$ 22+CHR$ 00+CHR$ 99," , " 5190 DATA CHR$ 22+CHR$ 01+CHR$ 99," _/(_ " 5200 DATA CHR$ 22+CHR$ 02+CHR$ 99," {\\ " 5210 DATA CHR$ 22+CHR$ 03+CHR$ 99," /;_) " 5220 DATA CHR$ 22+CHR$ 04+CHR$ 99,"=='/ <===<<< " 5230 DATA CHR$ 22+CHR$ 05+CHR$ 99," \__\ " 5240 DATA CHR$ 22+CHR$ 06+CHR$ 99," `` " 6000 REM Pre-declare time-critical variables 6001 RESTORE 6003: LET sdim=PEEK 23639+256*PEEK 23640+6: RESTORE 6006: LET slet=PEEK 23639+256*PEEK 23640+6 6002 RESTORE 5000: DIM a(4,4): FOR z=1 TO 4: READ a(z,1),a(z,2),a(z,3): POKE sdim,a(z,3): POKE slet,a(z,3) 6003 DIM h(a(z,1)): LET fi=3: REM array name set by POKE 6005 FOR i=1 TO a(z,1): 6006 LET h(i)=fi: READ s$,t$: LET a(z,4)=a(z,4)+3+LEN t$: LET fi=a(z,4)+3: NEXT i: NEXT z: DIM w$(a(4,4)): RESTORE 5000 6010 LET by=i: LET bx=i: LET y=i: LET x=i: LET wx=-2: LET nb=3: DIM f(nb): DIM x(nb): DIM y(nb): LET kf=i: LET cl=32: LET rw=22: RETURN