home *** CD-ROM | disk | FTP | other *** search
- 0 DEF FNB(Q)=1023+X9+(Q-1)*40
- 1 DEF FNC(Q)=1023+Q+(Y9-1)*40
- 2 D$=""
- 3 D$=D$+" [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]"
- 4 D$=D$+"[157][157][157][157][157][157][157][157]"
- 5 POKE53280,3:POKE53281,14
- 6 DIMM1(20,15)
- 10 M$="[213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]"
- 11 M1$="[202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203]"
- 15 PRINT"[147][144]"
- 16 PRINTTAB(1);M$;" ";M$
- 17 FORI=1TO10:PRINTTAB(1);"[221] [221] [221] [221]":NEXT
- 18 PRINTTAB(1);M1$;" ";M1$
- 19 PRINT" ENEMY FLEET YOUR FLEET"
- 20 PRINTD$;"GETTING THE SHIPS...":GOSUB1000:PRINTD$;
- 30 PRINT"JOYSTICKS OR KEYBOARD? (J OR K)"
- 31 GOSUB9000
- 32 IFX$<>"J"ANDX$<>"K"THEN31
- 33 X1$=X$
- 35 XX$="JOYSTICK":IFX$="K"THENXX$="KEYBOARD"
- 37 X2$="FIRE BUTTON":IFX$="K"THENX2$="SPACE BAR"
- 40 IFX$="J"THEN100
- 45 PRINTD$;"USE I TO MOVE UP"
- 46 PRINT" M TO MOVE DOWN"
- 47 PRINT" K TO MOVE RIGHT"
- 48 PRINT" J TO MOVE LEFT"
- 49 PRINT: PRINT" AND SPACE-BAR TO SHOOT"
- 50 PRINT"PRESS ANY KEY TO CONTINUE...";:GOSUB9000
- 51 PRINTD$:FORI=1TO6:PRINT" ":NEXT
- 52 PRINT" ";
- 100 GOSUB5000:S$="AIRCRAFT CARRIER":N9=4:N8=1:GOSUB1500
- 110 S$="BATTLESHIP":N9=3:N8=2:GOSUB1500
- 120 S$="CRUISER":N9=2:N8=3:GOSUB1500
- 130 S$="CRUISER":N9=2:N8=3:GOSUB1500
- 140 S$="DESTROYER":N9=1:N8=4:GOSUB1500
- 150 POKEV+21,0:PRINTD$;"WAIT WHILE I PLACE MY SHIPS":GOSUB2000
- 160 PRINTD$
- 170 REM
- 200 PRINTD$;"AND THE BATTLE RAGES..."
- 201 OX=0:C2=0:C1=0:X9=10:Y9=7:GOSUB1300
- 202 IFF5=-1THEN600
- 210 FORI=1TODF:GOSUB3000:NEXT
- 220 GOSUB2500
- 230 IFC2=17ORC1=17THEN300
- 240 GOTO210
- 300 POKEV+21,0:IFC1=17THENPRINTD$;"YOU WIN":GOTO500
- 310 GOSUB2300:PRINTD$;"I WIN"
- 500 PRINT:PRINT" DO YOU WANT TO PLAY AGAIN (Y/N)?";
- 510 GOSUB9000:IFX$="N"THEN40000
- 520 GOTO15
- 600 PRINTD$;"YOUR ATTACK"
- 605 GOSUB3000:IFF1<>1THEN605
- 610 PRINTD$
- 620 GOSUB2500
- 630 IFC2=17ORC1=17THEN300
- 640 GOTO600
- 999 END
- 1000 REM SPRITE INIT
- 1001 RESTORE
- 1010 V=53248:POKE2040,13:POKEV+39,1:FORI=832TO832+62:READQ:POKEI,Q:NEXT
- 1020 DATA0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0
- 1021 DATA0,0,0,255,129,255,0,0,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0
- 1022 DATA0,24,0,0,24,0,0,24,0
- 1030 POKEV+21,0
- 1099 RETURN
- 1100 REM KEYBOARD ROUTINE
- 1105 DX=0:DY=0:F1=0
- 1110 GETX$
- 1120 IFX$="I"THENDY=-1:RETURN
- 1130 IFX$="M"THENDY=1:RETURN
- 1140 IFX$="K"THENDX=1:RETURN
- 1150 IFX$="J"THENDX=-1:RETURN
- 1160 IFX$=" "THENF1=1:RETURN
- 1170 RETURN
- 1200 REM JOYSTICK ROUTINE
- 1210 DY=0:DX=0:F1=0
- 1215 W=PEEK(56320)
- 1220 IF(WAND16)=0THENF1=1:RETURN
- 1230 IF(WAND1)=0THENDY=-1:RETURN
- 1240 IF(WAND2)=0THENDY=1:RETURN
- 1250 IF(WAND4)=0THENDX=-1:RETURN
- 1260 IF(WAND8)=0THENDX=1:RETURN
- 1270 RETURN
- 1300 REM SHOW SPRITE AT X9,Y9
- 1310 W2=35+Y9*8:W1=8+X9*8
- 1320 POKEV+21,0:POKEV+16,0:IFW1>255THENPOKEV+16,1:W1=W1-255
- 1330 POKEV,W1:POKEV+1,W2:POKEV+21,1
- 1390 RETURN
- 1500 REM SHIP PLACEMENT ROUTINE
- 1510 POKEV,200:POKEV+1,59 :POKEV+21,1
- 1520 PRINTD$;"USE ";XX$;" TO PLACE ";S$
- 1530 PRINT" PRESS ";X2$;" WHEN DONE"
- 1535 X9=24:Y9=3
- 1537 GOSUB1300
- 1540 IFX1$="J"THENGOSUB1200
- 1550 IFX1$="K"THENGOSUB1100
- 1560 IFF1=1THEN1600
- 1565 IFDX=0ANDDY=0THEN1540
- 1570 X9=X9+DX:Y9=Y9+DY
- 1580 IFX9<24THENX9=24
- 1581 IFY9<3THENY9=3
- 1582 IFX9>38THENX9=38
- 1583 IFY9>12THENY9=12
- 1590 GOTO1537
- 1600 PRINTD$;" ";
- 1601 PRINTD$;"HORIZONTAL OR VERTICAL (H OR V)?"
- 1610 GOSUB9000
- 1620 IFX$<>"H"ANDX$<>"V"THEN1610
- 1630 PRINTD$
- 1640 IFX$="V"THEN1700
- 1650 SX=X9:SY=Y9:F9=0:FORX9=SXTOSX+N9
- 1660 IFPEEK(FNC(X9))<>32THENF9=-1
- 1670 NEXT:IFF9=-1THEN1800
- 1680 FORX9=SXTOSX+N9:POKEFNC(X9),N8:POKEFNC(X9)+54272,0:NEXT:GOTO1900
- 1700 SX=X9:SY=Y9:F9=0:FORY9=SYTOSY+N9
- 1710 IFPEEK(FNB(Y9))<>32THENF9=-1
- 1720 NEXT:IFF9=-1THEN1800
- 1730 FORY9=SYTOSY+N9:POKEFNB(Y9),N8:POKEFNB(Y9)+54272,0:NEXT:GOTO1900
- 1800 PRINTD$;"SORRY THE SHIP DOES NOT FIT THERE":FORI=1TO1000:NEXT
- 1810 GOTO1500
- 1900 RETURN
- 2000 REM COMPUTER SHIP PLACEMENT
- 2001 A=RND(-TI)
- 2010 FORI=1TO10:FORJ=1TO15:M1(J,I)=0:NEXT:NEXT
- 2011 FORI=1TO11:M1(16,I)=-1:NEXT
- 2012 FORI=1TO16:M1(I,11)=-1:NEXT
- 2020 N9=4:N8=1:GOSUB2200
- 2030 N9=3:N8=2:GOSUB2200
- 2040 N9=2:N8=3:GOSUB2200
- 2050 N9=2:N8=3:GOSUB2200
- 2060 N9=1:N8=4:GOSUB2200
- 2099 RETURN
- 2100 REM GET RANDOM X,Y
- 2110 X=INT(RND(1)*15+1):Y=INT(RND(1)*10+1)
- 2199 RETURN
- 2200 GOSUB2100
- 2205 IFINT(RND(1)*2)=1THEN2250
- 2210 SX=X:SY=Y:F9=0:FORX=SXTOSX+N9
- 2220 IFM1(X,Y)<>0THENF9=-1
- 2225 NEXT:IFF9=-1THEN2200
- 2230 FORX=SXTOSX+N9:M1(X,Y)=N8:NEXT:RETURN
- 2250 SX=X:SY=Y:F9=0:FORY=SYTOSY+N9
- 2260 IFM1(X,Y)<>0THENF9=-1
- 2265 NEXT:IFF9=-1THEN2200
- 2270 FORY=SYTOSY+N9:M1(X,Y)=N8:NEXT:RETURN
- 2300 REM REVEAL COMPUTER'S SHIPS
- 2310 FORI=1TO15:FORJ=1TO10:IFM1(I,J)=0THEN2350
- 2320 W1=(J+1)*40+I+1025:POKEW1,M1(I,J):POKEW1+54272,0
- 2350 NEXT:NEXT:RETURN
- 2500 REM COMPUTER'S SHOT
- 2510 IFOX<>0THEN2600
- 2520 GOSUB2100
- 2525 W1=(Y+1)*40+X+1046
- 2540 IFPEEK(W1)=81THENRETURN
- 2545 POKEW1+54272,1:IFPEEK(W1)<>32THENPOKEW1+54272,2:OX=X:OY=Y:C2=C2+1
- 2550 POKEW1,81:RETURN
- 2600 FF=0
- 2601 W1=(OY+1)*40+OX+1046
- 2640 IF(OX+1<16)AND(PEEK(W1+1))<>81THENY=OY:X=OX+1:GOTO2525
- 2641 IF(OY+1<11)AND(PEEK(W1+40))<>81THENY=OY+1:X=OX:GOTO2525
- 2642 IF(OY-1>0)AND(PEEK(W1-40))<>81THENY=OY-1:X=OX:GOTO2525
- 2643 IF(OX-1>0)AND(PEEK(W1-1))<>81THENY=OY:X=OX-1:GOTO2525
- 2644 IFFF=-1THEN2694
- 2645 FF=-1:IF(PEEK(W1+54273)AND2)=2THENOX=OX+1:GOTO2601
- 2646 IF(PEEK(W1+54271)AND2)=2THENOX=OX-1:GOTO2601
- 2647 IF(PEEK(W1+54312)AND2)=2THENOY=OY+1:GOTO2601
- 2648 IF(PEEK(W1+54232)AND2)=2THENOY=OY-1:GOTO2601
- 2694 OX=0
- 2695 GOTO2520
- 3000 REM PLAYER'S MOVE
- 3010 IFX1$="J"THENGOSUB1200
- 3020 IFX1$="K"THENGOSUB1100
- 3030 IFF1=1THEN3100
- 3040 IFDX=0ANDDY=0THENRETURN
- 3050 X9=X9+DX:Y9=Y9+DY
- 3060 IFX9<3THENX9=3
- 3070 IFY9<3THENY9=3
- 3075 IFX9>17THENX9=17
- 3080 IFY9>12THENY9=12
- 3090 GOSUB1300:RETURN
- 3100 W1=X9+1023+(Y9-1)*40:IFPEEK(W1)<>32THENRETURN
- 3110 POKEW1+54272,1:IFM1(X9-2,Y9-2)<>0THENPOKEW1+54272,2:C1=C1+1
- 3120 POKEW1,81
- 3199 RETURN
- 5000 F5=0:PRINTD$;"DO YOU WANT A REAL TIME BATTLE (Y/N)?"
- 5001 GOSUB9000:IFX$="Y"THEN5009
- 5002 F5=-1:PRINTD$;:RETURN
- 5009 PRINTD$;"DIFFICULTY FACTOR (1-9)?"
- 5010 GOSUB9000
- 5020 IFX$<"1"ORX$>"9"THEN5010
- 5030 PRINTD$
- 5040 DF=10-VAL(X$)
- 5099 RETURN
- 9000 GETX$:IFX$=""THEN9000
- 9010 IFX$="[137]"THEN40000
- 9099 RETURN
- 40000 END
-