! * SCREEN TO BLACK, RANDOMIZE , MAGNIFYx3 SPRITES 10 CALL SCREEN(2)::CALL CLEAR::RANDOMIZE::CALL MAGNIFY(3) ! * ARRAY FOR THE STAR CHARACTER NUMBERS 15 DIM S(15)::FOR A=1 TO 15::READ S(A)::NEXT A 16 DATA 64,68,72,76,80,84,88,92,96,100,104,108,112,116,120 ! * SPACE SHIP AND MISSILE 20 CALL CHAR(36,"000000C0F38430F83EB38F5F0E00000000000000C03048003FEE74A00000000000000000000000002B000000000000000000000000000038FC38000000000000") ! * STARS DEFINITIONS. 30 A$="00000000000000000000010000000000" 40 CALL CHAR(64,A$,68,A$,72,A$,76,A$,80,A$,84,A$,88,A$,92,A$,96,A$,100,A$,104,A$,108,A$,112,A$,116,A$,120,A$) ! * STAR COLOURS 45 CALL COLOR(5,16,2,6,5,2,7,10,2,8,16,2,9,5,2,10,10,2) 46 CALL COLOR(11,11,2,12,16,2) ! * PLOT OUR STARS TO THE SCREEN RANDOMLY 50 N=64::FOR A=1 TO 24 60 Y1=INT(32*RND)+1::Y2=INT(32*RND)+1::IF Y1=Y2 THEN 60 70 CALL HPUT(A,Y1,CHR$(N))::N=N+4::IF N>120 THEN N=64 80 CALL HPUT(A,Y2,CHR$(N))::NEXT A ! * PLACE THE SPACE SHIP SPRITE 90 CALL SPRITE(#1,36,4,72,16)::F=0::T=0::TM=4 ! * MAIN LOOP 1000 GOSUB 2100::GOSUB 2200::GOSUB 2400::GOSUB 2300::GOSUB 2400::GOTO 1000 ! * NOW START TWINKLING THOSE STARS RANDOMLY 2100 T=INT(15*RND)+1 :: CALL SWAPCHAR(S(T),S(T)+1)::RETURN ! * JOYSTICK MOTION AND FIRING 2200 CALL JOYMOTION(1,X,Y,#1,24,16,K) :: IF K<>18 THEN 2299 2205 IF F=1 THEN 2299 ELSE F=1::CALL POSITION(#1,P1,P2)::CALL SPRITE(#2,40,12,P1,P2,0,20) 2299 RETURN ! * ROLL SCREEN (NOT RECOMMENDED IF SCORE IS BEING DISPLAYED!) 2300 T=T+1 :: IF T>(TM-F) THEN 2305 ELSE 2399 2305 T=0::CALL ROLLLEFT 2399 RETURN ! * CHECK PLAYER MISSILE POSITION IF ACTIVE..... 2400 IF F=1 THEN 2405 ELSE 2499 2405 CALL POSITION(#2,P1,P2)::IF P2>240 THEN 2410 ELSE 2499 2410 CALL DELSPRITE(#2)::F=0 2499 RETURN