100 REM BASIC Week 2: Halloween Boogaloo 110 REM http://reddit.com/r/RetroBattlestations 120 REM written by FozzTexx 130 REM Apple II port by FozzTexx 140 REM ---- 200 REM Clear screen and setup variables 210 HOME 220 CL = 40:RW = 24:REM Columns and Rows of screen 300 REM Load background and draw on screen 310 GOSUB 1510 320 NR = SR:WD = SC:WX = -2 330 X = 2:KF = X + WD:IF RND(1) > .5 THEN X = CL - WD - 2:KF = 0 340 Y = RW - NR:KW = CL - WD - 4 350 GOSUB 2010 500 REM Load sprites into variables 510 GOSUB 1510:BT$(0) = SP$:BE$ = SE$:BC = SC 520 GOSUB 1510:BT$(1) = SP$ 530 GOSUB 1510:WT$ = SP$:WE$ = SE$:WW = SC:WH = SR 600 REM Animation 610 NB = 3:WX = -2 620 FOR I = 1 TO NB 630 BX(I) = INT(RND(1) * (KW - BC)):BY(I) = INT(RND(1) * ((RW - 4 - NR / 2) / NB)) * NB + I + 1 640 BW(I) = INT(RND(1) * 2):BF(I) = INT(RND(1) * 9) 650 NEXT I 660 FOR I = 1 TO NB 670 Y = INT(BF(I) / 3):X = INT((BF(I) / 3 - Y) * 3 + .05) 680 X = X + BX(I) + KF :Y = Y + BY(I):SP$ = BE$:GOSUB 2010 710 BW(I) = BW(I) + 1:IF BW(I) > 1 THEN BW(I) = 0 720 BF(I) = INT(RND(1) * 9) 730 Y = INT(BF(I) / 3):X = INT((BF(I) / 3 - Y) * 3 + .05) 740 X = X + BX(I) + KF :Y = Y + BY(I):SP$ = BT$(BW(I)):GOSUB 2010 750 IF WX = -1 THEN SP$ = WE$:X = 0:Y = 0:GOSUB 2010:WX = -2 760 IF WX >= 0 THEN SP$ = WT$:X = WX:Y = 0:GOSUB 2010:WX = WX - 1 770 IF WX = -2 AND WH + NR < RW AND RND(1) * 50 < 2 THEN WX = CL - WW - 1 780 NEXT I 790 GOTO 660 1000 REM Position cursor at X,Y 1010 VTAB Y+1:HTAB X+1 1020 RETURN 1500 REM Load a sprite from DATA into a string 1510 SP$ = "":SE$ = "":SR = 0:SC = 0 1520 READ T$,S$:IF LEN(SP$) > 0 THEN SP$ = SP$ + CHR$(13) 1530 SP$ = SP$ + S$:SR = SR + 1:IF LEN(S$) > SC THEN SC = LEN(S$) 1540 BL$ = "":FOR I = 1 TO LEN(S$):BL$ = BL$ + " ":NEXT I 1550 IF LEN(SE$) > 0 THEN SE$ = SE$ + CHR$(13) 1560 SE$ = SE$ + BL$ 1570 IF T$ <> "SE" THEN GOTO 1520 1580 RETURN 2000 REM Draw sprite in SP$ at X,Y 2010 GOSUB 1010 2020 REM Set the left margin to the X position 2030 POKE 32,X:PRINT SP$; 2040 POKE 32,0 2050 RETURN 5000 DATA SP," ^" 5010 DATA SP," / \" 5020 DATA SP," //|\\" 5030 DATA SP," / -+- \" 5040 DATA SP," / \|/ \" 5050 DATA SP," /_________\" 5060 DATA SP," | ___ |" 5070 DATA SP," || | ||::::" 5080 DATA SP," /\ |-+-||IIII" 5090 DATA SP," / \|_|_|| \" 5100 DATA SP," / [] \ |_____" 5110 DATA SP,"/_____ | +-+|" 5120 DATA SP," | +--+ | |+||" 5130 DATA SP," | | | | +-+|" 5140 DATA SP," | |o | |____|" 5150 DATA SE," |___|__|_|" 5160 DATA SE,"^v^" 5170 DATA SE,"-v-" 5180 DATA SP," , " 5190 DATA SP," _/(_ " 5200 DATA SP," {\\ " 5210 DATA SP," /;_) " 5220 DATA SP,"=='/ <===<<< " 5230 DATA SP," \__\ " 5240 DATA SE," `` "