10 REM :INT a,b,c,f,h,i,j,k,l,m,o,p,r,s,u,v,x,z,c() 20 REM :LEN $<=32 50 REM : OPEN # 60 REM sesion init 63 GO SUB 7000 66 LET z=0: REM LET z=1 70 LET o=0 80 RESTORE 9000: FOR i=0 TO 39: READ d: POKE USR "a"+i,d: NEXT i 90 DIM c(4): DIM d$(3,32) 100 REM game init 110 LET l=1: LET v=18: LET s=0 1000 REM level init 1010 LET c(1)=l+3: LET c(2)=c(1)+1: LET c(3)=c(2)+1: LET c(4)=c(3)+1 1020 FOR i=1 TO 4: IF c(i)>7 THEN LET c(i)=c(i)-8 1030 NEXT i 1040 PAPER l: BORDER l: CLS : INK c(4) 1050 FOR i=1 TO 3: FOR j=1 TO 25 STEP 16: LET d$(i,j)=CHR$ (144+(i=2)): LET d$(i,j+8)=d$(i,j): LET d$(i,j+4)=CHR$ 148: LET d$(i,j+12)=CHR$ 147: NEXT j: NEXT i 1060 LET p=1: LET x=15: LET b=0: LET f=0 1070 LET r=12: LET u=12-(11*z) 1080 PRINT AT 0,0;"SCORE:";s;AT 0,14;"HI:";o;AT 0,24;"LIVES:";v;AT 18,0; INVERSE 1;" "; INVERSE 0;AT 19,0;"AMMO:"; 1090 GO SUB 8000 2000 REM main loop 2010 PRINT AT 3,0; INK c(1);d$(1,p TO )+d$(1, TO p-1);AT 5,0; INK c(2);d$(2,33-p TO )+d$(2, TO 32-p);AT 7,0; INK c(3);d$(3,p TO )+d$(3, TO p-1) 2020 PRINT AT 17,x-1;" ";CHR$ 146;" "; 2025 IF b THEN PRINT AT b+1,c;" ";AT b,c;"|";: GO SUB 3000: LET b=b-1: IF b<1 THEN PRINT AT 1,c;" ";: LET b=0 2027 BEEP .002,0: IF b THEN BEEP .002,24 2030 LET k=CODE INKEY$ 2040 LET x=x+(k=112)*(x<30)-(k=111)*(x>1) 2050 IF k=102 AND b=0 THEN LET b=16: LET c=x: LET r=r-1: GO SUB 8100: IF r<0 THEN GO SUB 5000 2080 LET p=p+1: IF p>32 THEN LET p=1 2085 IF f=1 THEN GO TO 100 2086 IF f=2 THEN GO TO 5200 2090 GO TO 2010 3000 REM collision detection 3010 LET i=(b=3)+(b=5)*2+(b=7)*3 3015 IF i=0 THEN RETURN 3020 LET j=c+p 3030 IF i=2 THEN LET j=33+c-p 3040 IF j>32 THEN LET j=j-32 3050 REM PRINT AT 18,0; INK c(i);d$(i,j) AND d$(i,j)<>" " 3060 LET h=CODE d$(i,j): IF h<>32 THEN GO SUB 4000 3070 IF h=32 THEN LET j=j+1-2*(i=2): LET j=j+(j<1)*32-(j>32)*32: LET h=CODE d$(i,j): IF h<>32 THEN GO SUB 4000 3090 RETURN 4000 REM hit something 4010 LET d$(i,j)=" ": PRINT AT b,c;" ": LET b=0 4020 IF h=144 OR h=145 THEN BEEP .05,12: BEEP .05,18: LET s=s+10*(4-i): GO SUB 8200: LET u=u-1: LET f=2*(u=0): RETURN 4030 IF h=147 THEN LET r=r+6: IF r>27 THEN LET r=27 4040 IF h=147 THEN BEEP .02,6: BEEP .02,9: BEEP .02,12: GO TO 8000 4050 IF h=148 THEN BEEP .02,-6: BEEP .02,-12: LET v=v-1: GO TO 8300 4090 RETURN 5000 REM Game over 5005 LET e$="Game Over!" 5010 IF r<0 THEN LET e$="Out of Ammo!" 5020 PRINT AT 20,6; FLASH 1;e$ 5030 FOR i=1 TO 6: BEEP .3,-i*PI: NEXT i 5040 PRINT AT 21,6;"Play Again (Y/N)" 5050 LET k=CODE INKEY$: IF k<>121 AND k<>110 THEN GO TO 5050 5060 IF k=110 THEN RANDOMIZE USR 0 5070 LET f=1: RETURN 5200 REM level complete 5210 PRINT AT 20,6; FLASH 1;"Level Complete!": FOR i=1 TO 8: BEEP .3,i*PI: NEXT i 5220 LET l=l+1 5225 IF l=8 THEN GO TO 6000 5230 GO TO 1000 6000 REM won the game 6010 PRINT AT 20,6; FLASH 1;"You won the game!" 6020 GO SUB 5040: GO TO 100 7000 REM Intro Menu 7010 PAPER 6: INK 2: BORDER 6: CLS 7020 PRINT AT 0,0;"Turbo Rubber Ducky Shootout"'"----- ------ ----- --------" 7030 PRINT AT 3,0;"Use keys "; INK 1;"o=left,p=right,f=fire" 7040 PRINT AT 5,0;"Shoot all 12 rubber ducks to complete each level. You start off with 12 shots. If you hit a '6' target then you get 6 further shots, up to a maximum of 27." 7050 PRINT AT 12,0;"If you run out of shots, the game ends. If you hit a skull and crossbones you lose a life. As you start with 18 lives, this is not a problem until the later levels." 7060 PRINT AT 19,0;"The game has seven levels. Complete all to win (not easy)." 7070 PRINT #1;AT 0,0; FLASH 1;"Press a key to play" 7190 PAUSE 0: RETURN 8000 PRINT AT 19,5,,: FOR i=1 TO r: PRINT AT 19,4+i;"|";: NEXT i: RETURN 8100 PRINT AT 19,5+r;" ";: RETURN 8200 PRINT AT 0,6;s;: IF s>o THEN LET o=s: PRINT AT 0,17;o 8210 RETURN 8300 PRINT AT 0,30,AT 0,30;v;: IF v=0 THEN GO SUB 5000: LET f=1 8310 RETURN 9000 DATA BIN 01110000 9001 DATA BIN 01110000 9002 DATA BIN 11100000 9003 DATA BIN 01111101 9004 DATA BIN 11111111 9005 DATA BIN 11111111 9006 DATA BIN 01111110 9007 DATA BIN 00000000 9008 DATA BIN 00001110 9009 DATA BIN 00001110 9010 DATA BIN 00000111 9011 DATA BIN 10111110 9012 DATA BIN 11111111 9013 DATA BIN 11111111 9014 DATA BIN 01111110 9015 DATA BIN 00000000 9016 DATA BIN 00000000 9017 DATA BIN 00000000 9018 DATA BIN 00000000 9019 DATA BIN 00011000 9020 DATA BIN 00011000 9021 DATA BIN 00011000 9022 DATA BIN 00111100 9023 DATA BIN 00000000 9024 DATA BIN 00000000 9025 DATA BIN 00011000 9026 DATA BIN 00100000 9027 DATA BIN 00111000 9028 DATA BIN 00100100 9029 DATA BIN 00100100 9030 DATA BIN 00011000 9031 DATA BIN 00000000 9032 DATA BIN 00111100 9033 DATA BIN 01011010 9034 DATA BIN 01111110 9035 DATA BIN 00111100 9036 DATA BIN 00000000 9037 DATA BIN 11000011 9038 DATA BIN 00111100 9039 DATA BIN 11000011