'THEME: NUCLEAR REACTORS AND NUCLEAR WASTE 'TO DO 'MULTIPLE BOTS 'BOT HEALTH 'SHOOTING BOTS 'SMARTER BOTS (TANKS CAN'T FLY) (BOTS CAN'T GO TROUGH WALLS) 'MORE SHOOTING DIRECTIONS (6 IN TOTAL) 'MOVEMENT SYSTEM 'PLAYER HEALTH BG COPY 0,0,20,16 TO 0,0 PRINT "PRESS RIGHT A" PRINT "TO CHANGE GUN" GAMEPAD 2 GLOBAL A,X,Y,C,DX,DY,ACCURACY,DIRECTION,BULLET_SPEED,PHI X=0 Y=0 C=1 T=0 RT=0 PX=0 PY=0 RELOAD_TIME=10 ACCURACY=0.2 BULLET_SPEED=1 BULLET=16 DIRECTION=0 X=76 Y=60 A=-1 EX=160 EY=63 EC=7+INT(RND*2) O=0 LAST_TIME=0 PHI = 1.61803398875 DIM GLOBAL TABLE(5,5) DIM GLOBAL ARR(4,63) FOR I=0 TO 5 FOR J=0 TO 5 READ TABLE(I,J) NEXT J NEXT I 'GUN DATA TABLE ' |RELOAD TIME ' | |ACCURACY ' | | |SPEED ' | | | |C,X,Y DATA 2 ,0.3 ,1 ,0,1,1 DATA 4 ,0.2 ,1 ,0,0,0 DATA 10 ,0.1 ,1 ,0,0,0 DATA 40 ,0.4 ,1 ,0,1,0 DATA 60 ,0 ,0.5 ,1,1,-1 DATA 60 ,0 ,2 ,0,2,0 SPRITE 0 PAL 2 RELOAD_TIME=TABLE(C-1,0) ACCURACY=TABLE(C-1,1) DO 'CONTROLS IF UP(0) THEN DEC Y IF DOWN(0) THEN INC Y IF LEFT(0) THEN DEC X IF RIGHT(0) THEN INC X IF LEFT(1) THEN SPRITE 0 FLIP 1,0 IF RIGHT(1) THEN SPRITE 0 FLIP 0,0 IF BUTTON(1,0) AND TIMER>T+10 THEN T=TIMER ADD C,1,1 TO 6 RELOAD_TIME =TABLE(C-1,0) ACCURACY =TABLE(C-1,1) BULLET_SPEED=TABLE(C-1,2) BULLET =TABLE(C-1,3)+16 END IF SPRITE 0,X,Y,C 'START FIRE SPRITE OFF 2 IF (RIGHT(1) OR LEFT(1)) AND TIMER>RT+RELOAD_TIME THEN RT=TIMER 'GUN SOUND SOUND 0,3,0,10 ENVELOPE 0,0,3,5,8 PLAY 0,40 'MUZZLE FLASH IF RIGHT(1) THEN DIRECTION=1 IF LEFT(1) THEN DIRECTION=-1 DX=X+TABLE(C-1,4)*DIRECTION+5+0.5*(DIRECTION-1)*(5+TABLE(C-1,3)) DY=Y+TABLE(C-1,5) SPRITE 2,DX,DY,TABLE(C-1,3)+18 SPRITE 2 PAL 3 'BULLET IF C=4 THEN 'SHOTGUN FOR I=0 TO 4 CALL SHOOT NEXT I ELSE CALL SHOOT END IF END IF 'UPDATE PROJECTILES FOR I=0 TO 60 ADD ARR(0,I),ARR(3,I) ADD ARR(1,I),ARR(2,I) PX=ARR(0,I) PY=ARR(1,I) PV=ARR(3,I) IF PV<>0 AND PX>-1 AND PX<160 AND CELL.C((PX+4)\8,(PY+3)\8)=0 THEN 'AND SPRITE HIT(I+3,1)=0 'REFRESH SPRITE I+3,PX,PY,17-ABS(SGN(ARR(4,I)-5)) SPRITE I+3 PAL 2 FLIP SGN(1-SGN(PV)),0 ELSE 'REMOVE ARR(3,I)=0 SPRITE OFF I+3 END IF NEXT I 'SIMPLE ENEMY CONTROLS 'ENEMY MOVEMENT IF TIMER-LAST_TIME>1 THEN LAST_TIME=TIMER IF EX9 THEN INC EX SPRITE 1 FLIP 0,0 ELSE IF EX>X AND EX-X>8 THEN DEC EX SPRITE 1 FLIP 1,0 END IF IF EYY THEN DEC EY END IF SPRITE 1,EX,EY,EC SPRITE 1 PAL 1 'ENEMY HIT BY BULLET IF SPRITE HIT(1,3 TO 63) THEN IF ARR(4,HIT-3)>0 THEN 'REMOVE BULLET IF ARR(4,HIT-3)<>6 THEN ARR(3,HIT-3)=0 CALL IMPACT(HIT) END IF 'INITIALIZE ENEMY EX=160 EY=63 EC=7+INT(RND*2) END IF END IF WAIT VBL LOOP SUB SHOOT A=(A+1)MOD(61) ARR(0,A)=DX-2 ARR(1,A)=DY ARR(2,A)=((PHI*A)-INT(PHI*A)-0.5)*ACCURACY ARR(3,A)=DIRECTION*BULLET_SPEED ARR(4,A)=C 'TRACE A END SUB SUB ENEMY_SHOOT A=(A+1)MOD(61) ARR(0,A)=EX ARR(1,A)=EY+O ARR(2,A)=(RND-0.5)*ACCURACY ARR(3,A)=DIRECTION*BULLET_SPEED ARR(4,A)=-BULLET SOUND 0,3,0,10 ENVELOPE 0,0,3,5,8 PLAY 0,40 END SUB SUB IMPACT(S) IF ARR(4,S-3)=5 THEN 'RPG EXPLOSION SPRITE S,,,21 SPRITE S PAL 0 SOUND 0,3,0,10 ENVELOPE 0,0,6,5,10 PLAY 0,20 ELSE SPRITE OFF S END IF END SUB #1:MAIN PALETTES 1B3D3834000C0015002A153C0038153C 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 303070F880063030302070F8FE783030 30307040683030303020707C78303030 30307070783030303020707C78303030 303070406C3030303020707E74303030 30300008703030303020FEFE70303030 303070406830303030207C7F78303030 00423C1800000000E7423C100C000000 0000307E78007E000000307E78FFFD7E 30307070703030303020707070303030 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000018000000000000001800000000 000000C0C00000000000007878000000 000040E0400000000000004000000000 000060F0F06000000000006060000000 00000000000000000000000000000000 0842183CBD584210085A2442C3245A10 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 CC66000000000000FFFFFFFFFFFFFFFF CC66330000000000FFFFFFFFFFFFFFFF 0000000000000000FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF07CFFFFFFFFFFFFF 7C7C7C7C7C7C7C7C0000002810280000 000000FFFFFFFFFF0000000014081400 0000001818000000105A3C67E63C5A08 3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C 0000FFFFFFFF00000000FFFFFFFF0000 18181818181818181818181818181818 000000FFFF000000000000FFFF000000 181818F8F0000000181818F8F0000000 01010204182040800204081000101060 49291E28042040004A2C1C28141010E0 000619E00000FFFFFFF9E61FFFAAFFFF 000000F30C00FFFFFFFFFF0CF3AAFFFF #3:MAIN BG 00001410000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000020022002 20022002200220022002000000000000 00000000000000000000000000000000 00000000200200000000000000000000 00000000000000000000000000000000 00000000000000000000000020020000 00000000000000000000000000000000 00000000000000000000000000000000 00000000200220022002200220022002 20020000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000020022002 20022002200220022002000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000020022002 20022002200220022002200220022002 20022002200220022002200220022002 20022002