! F = PLAYER FIRING OF NOT, 1 OR 0 ! FD = PLAYER FIRE DIRECTION. ! * GRAPHICS DEFS AND SCREEN CLEAR 100 CALL CHAR(40,"1818183C7E7E7E42427E7E7E3C181818000F1EFEFE1E0F0000F0787F7F78F000") 101 CALL CHAR(44,"0000182C3C180000") 110 CALL CLEAR::CALL SCREEN(2) ! * PLACE THE PLAYER SHIP, FIRE TURNED OFF 120 CALL SPRITE(#1,40,13,80,120)::F=0 ! ---------------------------------------------------------------- ! ************* ! * MAIN LOOP * ! ************* ! 4100 SUB TO JOYLOCATE AND FIRE KEY ! 4150 ACTIVATE PLAYER MISSILE UNLESS IT'S ALREADY ACTIVE ! 4200 IS PLAYER FIRING? IF SO CHECK POSITION OF MISSILE 1000 GOSUB 4100::GOSUB 4200::GOTO 1000 ! ----------------------------------------------------------------- ! ** JOY LOCATE AND FIRE KEY (FIRE ACTIVATION IS @ 4150 ) 4100 CALL JOYLOCATE(1,X,Y,4,4,#1,R,C,K)GOTO 4150 4105 IF X=-4 THEN CALL PATTERN(#1,42) ELSE IF X=4 THEN CALL PATTERN(#1,43) ELSE IF Y=4 THEN CALL PATTERN(#1,40) ELSE IF Y=-4 THEN CALL PATTERN(#1,41) 4110 RETURN ! ** PLAYER FIRE? IF ALREADY FIRING THEN JUMP BACK TO THE RETURN @ 4110 4150 IF F=1 THEN 4110 ELSE IF X=0 AND Y=0 THEN 4110 4155 F=1::CALL POSITION(#1,A,B)::CALL SPRITE(#2,44,16,A,B) 4160 IF Y=4 THEN CALL MOTION(#2,-11,0)::FD=1 ELSE IF Y=-4 THEN CALL MOTION(#2,11,0)::FD=2 4165 IF X=-4 THEN CALL MOTION(#2,0,-11)::FD=3 ELSE IF X=4 THEN CALL MOTION(#2,0,11)::FD=4 4170 GOTO 4110 ! ** IF PLAYER IS FIRING, THEN CHECK THE MISSILE POSITION ACCORDING TO IT'S DIRECTION OR JUMP TO RETURN 4200 IF F=0 THEN 4299 ELSE ON FD GOTO 4205,4210,4215,4220 4205 CALL POSITION(#2,C,D)::IF C>180 THEN 4230 ELSE 4299 4210 CALL POSITION(#2,C,D)::IF C<16 THEN 4230 ELSE 4299 4215 CALL POSITION(#2,C,D)::IF D<16 THEN 4230 ELSE 4299 4220 CALL POSITION(#2,C,D)::IF D>240 THEN 4230 ELSE 4299 ! GET RID OF MISSILE 4230 F=0::CALL DELSPRITE(#2) ! RETUUURN TO SENDER 4299 RETURN