REM BATTLESHIP BY RICHARD PETERS, RICHARD11092000@COX.NET
1 A=0
2 B=1
3 C=2
4 D=3
5 E=4
6 F=5
7 G=6
8 H=7
9 I=8
10 J=9
REM SETUP 4 ARRAYS AT BASE 8000H
20 K=32768
30 L=K+100
40 M=K+200
50 N=K+300
REM CLEAR
55 X=K 
60 POKE X,43
70 X=X+1
80 IF X<M GOTO 60
REM ENTER SHIP LOCATIONS
90 W=1 
130 GOSUB 1000
140 PRINT "ENTER START POSITION FOR ";
145 GOSUB 6000
150 INPUT Y
155 INPUT X
157 R=82
160 PRINT "ENTER DIRECTION RIGHT (R) DOWN (D)" ;
170 INPUT Z
200 IF Z=R GOTO 300
210 Z=X 
220 POKE K+Z*10+Y,P
230 Z=Z+1
235 IF Z<X+Q GOTO 220
240 GOTO 330
300 Z=Y 
310 POKE K+X*10+Z,P
315 Z=Z+1
320 IF Z<Y+Q GOTO 310
330 W=W+1
340 IF W<6 GOTO 130
350 GOSUB 1000
355 Y=0
360 PRINT "IS THIS OK (Y/N)" ;
370 INPUT Z
380 IF Z=N GOTO 20
390 PRINT "PLEASE WAIT WHILE I SET UP MY POSITIONS" 
400 Q=5
402 P=67
406 GOSUB 2000
410 Q=4
412 P=68
416 GOSUB 2000
420 Q=3
422 P=66
424 GOSUB 2000
430 Q=3
432 P=83
434 GOSUB 2000
440 Q=2
442 P=80
444 GOSUB 2000
450 O=0
452 P=0
454 Q=0
456 R=0
458 T=0
460 X=M
465 Y=N+100
470 POKE X,43
480 X=X+1
490 IF X<Y GOTO 470
500 X=0
510 Y=0
520 POKE N+X*10+Y,44
530 POKE N+(X+1)*10+(Y+1),44
540 Y=Y+2
550 IF Y<9 GOTO 520
560 X=X+2
565 IF X<9 GOTO 510 
570 S=0
575 V=0
580 IF S=17 PRINT "YOU WIN" : END
590 IF V=17 PRINT "I WIN" : END
600 GOSUB 3000
610 GOSUB 1000
620 GOSUB 4000
625 T=T+1
630 GOTO 580
999 END
1000 GOSUB 5000
1010 X=0 
1030 PRINT X;" ";
1040 Y=0 
1050 PLOT PEEK(K+X*10+Y)
1055 PRINT "  ";
1060 Y=Y+1
1065 IF Y<10 GOTO 1050
1070 PRINT 
1080 X=X+1
1085 IF X<10 GOTO 1030
1090 RETURN 
2000 X=RND(10)
2010 Y=RND(10)
2020 W=RND(2)
2030 IF W=1 GOTO 2200
2040 IF X+Q>9 GOTO 2000
2050 Z=X 
2060 IF PEEK(L+Z*10+Y)>64 GOTO 2000
2065 Z=Z+1
2070 IF Z<X+Q GOTO 2060
2080 Z=X 
2090 POKE L+Z*10+Y,P
2095 Z=Z+1
2100 IF Z<X+Q GOTO 2090
2110 RETURN 
2200 IF Y+Q>9 GOTO 2000
2210 Z=Y
2220 IF PEEK(L+X*10+Z)>64 GOTO 2000
2225 Z=Z+1
2230 IF Z<Y+Q GOTO 2220
2240 Z=Y 
2250 POKE L+X*10+Z,P
2255 Z=Z+1
2260 IF Z<Y+Q GOTO 2250
2270 RETURN 
3000 GOSUB 5000
3010 X=0 
3030 PRINT X;" ";
3040 Y=0 
3050 PLOT PEEK(M+X*10+Y)
3055 PRINT "  ";
3060 Y=Y+1
3065 IF Y<10 GOTO 3050
3070 PRINT 
3080 X=X+1
3085 IF X<10 GOTO 3030
3130 PRINT "ENTER FIRING LOCATION" ;
3140 INPUT Y
3150 INPUT X
3180 IF PEEK(L+X*10+Y)>64 GOTO 3300
3190 POKE M+X*10+Y,77
3200 PRINT "MISSED" 
3210 RETURN 
3300 POKE M+X*10+Y,72
3310 PRINT "YOU HIT MY ";
3312 PLOT PEEK(L+X*10+Y)
3314 PRINT " ..." 
3320 S=S+1
3330 POKE L+X*10+Y,43
3340 RETURN 
4000 IF Q=0 GOTO 4300
4010 IF R>0 GOTO 4025
4020 R=RND(4)+1
4025 X=O
4027 Y=P
4030 IF R=1 X=X+1
4040 IF R=2 Y=Y+1
4050 IF R=3 X=X-1
4060 IF R=4 Y=Y-1
4070 IF X<0 GOTO 4020
4080 IF X>9 GOTO 4020
4090 IF Y<0 GOTO 4020
4100 IF Y>9 GOTO 4020
4102 W=PEEK(N+X*10+Y)
4105 IF W=45 GOTO 4020
4110 IF W>64 GOTO 4030
4120 GOSUB 4330
4130 IF Z=M GOTO 4280
4140 Z=0
4150 W=PEEK(N+O*10+P)
4155 X=0
4160 Y=0
4170 IF W=PEEK(N+X*10+Y) Z=Z+1
4175 Y=Y+1
4180 IF Y<10 GOTO 4170
4185 X=X+1
4190 IF X<10 GOTO 4160
4200 IF Z<Q THEN RETURN 
4210 PRINT "I SANK YOUR ";
4215 PLOT PEEK(N+O*10+P)
4218 PRINT "..." 
4220 Q=0
4280 R=0
4290 RETURN 
4300 X=RND(10)
4305 Y=RND(10)
4310 IF T<49 THEN GOTO 4320
4312 IF PEEK(N+X*10+Y)>44 THEN GOTO 4300
4316 PRINT "ARE YOU SURE YOU ARE NOT CHEATING ME" 
4318 GOTO 4330
4320 IF PEEK(N+X*10+Y)>43 THEN GOTO 4300
4330 PRINT "MY SHOT IS ";
4335 PLOT Y+65
4340 PLOT X+48
4360 PRINT " IS THIS A HIT OR MISS (H/M)" ;
4370 INPUT Z
4380 IF Z=H GOTO 4410
4390 POKE N+X*10+Y,45
4400 RETURN 
4410 W=N+X*10+Y
4415 POKE W,PEEK(K+X*10+Y)
4417 W=PEEK(W)
4420 IF W=67 THEN Q=5
4430 IF W=68 THEN Q=4
4440 IF W=66 THEN Q=3
4450 IF W=83 THEN Q=3
4460 IF W=80 THEN Q=2
4470 V=V+1
4472 O=X
4476 P=Y
4480 POKE K+X*10+Y,72
4490 RETURN
5000 PLOT 12 
5010 PRINT "  A  B  C  D  E  F  G  H  I  J"
5020 RETURN 
6000 IF W>1 GOTO 6100
6010 PRINT "CARRIER";
6020 Q=5
6030 P=67
6040 RETURN
6100 IF W>2 GOTO 6200
6110 PRINT "DESTROYER";
6120 Q=4
6130 P=68
6140 RETURN
6200 IF W>3 GOTO 6300
6210 PRINT "BATTLESHIP";
6220 Q=3
6230 P=66
6240 RETURN
6300 IF W>4 GOTO 6400
6310 PRINT "SUB";
6320 Q=3
6330 P=83
6340 RETURN
6400 PRINT "PT";
6410 Q=2
6420 P=80
6430 RETURN

