Battle Ship

Date: 198x
Type: Program
Platform(s): TS 1000

Content

Appears On

Assembled by Tim Ward from many sources. Contains programs 10294-10335.

Related Products

Related Articles

Related Content

Image Gallery

Battle Ship

Source Code

  10 FAST 
  50 GOSUB 6000
 100 GOSUB 5000
 110 CLS 
 115 GOSUB 5300
 117 SLOW 
 120 GOSUB 6500
 130 GOSUB 5400
 135 LET Z=INT (RND*2)
 137 IF Z=1 THEN GOTO 150
 140 GOTO 700
 150 GOTO 1000
 700 PRINT AT 14,14;"YOUR MOVE"
 710 INPUT D$
 715 LET B$=D$(1)
 717 LET C=VAL D$(2)
 720 LET D=CODE B$-64
 730 LET W=D
 733 LET N=C+1
 740 LET J=M(N,W)
 750 IF M(N,W)<>143 THEN LET HITS=HITS+1
 770 PRINT AT C,D;CHR$ J
 772 IF J>100 THEN LET J=J-100
 780 IF HITS=16 THEN GOTO 4000
 790 GOTO 150
\n1000 IF LB=0 AND LD=0 THEN GOSUB 1500
\n1010 IF LB=1 OR LC=1 OR LD=1 THEN GOSUB 1800
\n1020 IF LB>1 OR LC>1 THEN GOSUB 2000
\n1030 INPUT M$
\n1033 IF NOT M$="H" AND NOT M$="M" THEN GOTO 1030
\n1040 IF M$="M" THEN GOSUB 1550
\n1050 IF M$="H" THEN GOSUB 1580
\n1060 PRINT AT X-4,Y+9;CHR$ J
\n1061 IF J>100 THEN LET JJ=J-100
\n1062 IF J<100 THEN LET JJ=J
\n1063 PRINT "%1";AT X+7,Y-3;CHR$ J
\n1064 IF J>100 THEN PRINT "%0";AT X+7,Y-3;CHR$ J
\n1065 LET L(X,Y)=J
\n1070 IF HATS=16 THEN GOTO 4020
\n1080 GOTO 140
\n1500 LET X=INT (RND*10)+4
\n1502 LET Y=INT (RND*10)+4
\n1510 IF L(X,Y)<>46 THEN GOTO 1500
\n1515 IF L(X+1,Y)<>46 AND L(X,Y-1)<>46 AND L(X-1,Y)<>46 AND L(X,Y+1)<>46 THEN GOTO 1500
\n1520 LET YA=Y+61
\n1530 PRINT AT 14,14;"MY TURN";YA;X-4
\n1535 PRINT AT X+7,Y-3;"?"
\n1540 RETURN 
\n1550 LET J=143
\n1560 IF LB=1 OR LC=1 OR LD=1 THEN LET LZ=LZ+1
\n1570 RETURN 
\n1580 PRINT AT 16,14;"B,C OR D?"
\n1590 INPUT N$
\n1591 FOR N=1 TO 9
\n1592 PRINT AT 16,N+13;CHR$ 32
\n1593 NEXT N
\n1600 LET HATS=HATS+1
\n1610 IF N$="B" THEN GOSUB 1750
\n1620 IF N$="C" THEN GOSUB 1700
\n1630 IF N$="D" THEN GOSUB 1650
\n1640 RETURN 
\n1650 LET J=CODE "D"
\n1660 LET LD=LD+1
\n1670 IF LD=2 THEN LET LZ=0
\n1680 IF LD=2 THEN LET LD=0
\n1690 RETURN 
\n1700 LET J=CODE "C"
\n1710 LET LC=LC+1
\n1720 IF LC=3 THEN LET LZ=0
\n1722 LET LY=0
\n1730 IF LC=3 THEN LET LC=0
\n1740 RETURN 
\n1750 LET J=CODE "B"
\n1760 LET LB=LB+1
\n1770 IF LB=4 THEN LET LZ=0
\n1772 LET LY=0
\n1774 LET LR=0
\n1780 IF LB=4 THEN LET LB=0
\n1790 RETURN 
\n1800 IF (LB=1 OR LC=1) AND LZ=0 THEN IF (L(X-2,Y)<>46 AND L(X+1,Y)<>46) OR (L(X-1,Y)<>46 AND L(X+2,Y)<>46) THEN LET Y=Y-1
\n1802 LET LZ=2
\n1804 GOTO 1970
\n1810 IF (LB=1 OR LC=1) AND LZ=1 THEN IF L(X+3,Y)<>46 THEN LET X=X+1
\n1812 LET Y=Y-1
\n1814 LET LZ=2
\n1816 GOTO 1970
\n1850 IF LZ=0 THEN GOTO 1890
\n1860 IF LZ=1 THEN GOTO 1930
\n1870 IF LZ=2 THEN GOTO 1965
\n1880 IF LZ=3 THEN GOTO 1985
\n1890 LET X=X-1
\n1900 IF L(X,Y)<>46 THEN GOTO 1920
\n1910 LET LZD=1
\n1912 GOTO 1990
\n1920 LET LZ=LZ+1
\n1930 LET X=X+2
\n1940 IF L(X,Y)<>46 THEN GOTO 1960
\n1950 LET LZD=2
\n1952 GOTO 1990
\n1960 LET LZ=LZ+1
\n1965 LET X=X-1
\n1966 LET Y=Y-1
\n1970 IF L(X,Y)<>46 THEN GOTO 1980
\n1975 LET LZD=3
\n1976 GOTO 1990
\n1980 LET LZ=LZ+1
\n1985 LET Y=Y+2
\n1986 LET LZD=4
\n1990 GOSUB 1520
\n1995 RETURN 
\n2000 IF LZD=1 THEN GOSUB 2050
\n2010 IF LZD=2 THEN LET X=X+1
\n2020 IF LZD=3 THEN GOSUB 2080
\n2030 IF LZD=4 THEN LET Y=Y+1
\n2040 GOSUB 1520
\n2042 RETURN 
\n2050 IF LB=2 OR LC=2 THEN GOSUB 2110
\n2060 IF LB=3 THEN GOSUB 2300
\n2070 RETURN 
\n2080 IF LB=2 OR LC=2 THEN GOSUB 2160
\n2090 IF LB=3 THEN GOTO 2400
\n2100 RETURN 
\n2110 IF (LB=2 OR LC=2) AND LY=1 THEN LET X=X+3
\n2112 RETURN 
\n2120 LET X=X-1
\n2130 IF X=3 THEN GOTO 2150
\n2140 IF L(X,Y)=46 THEN LET LY=LY+1
\n2142 RETURN 
\n2150 IF LB=2 OR LC=2 THEN LET X=X+3
\n2152 RETURN 
\n2160 IF (LB=2 OR LC=2) AND LY=1 THEN LET Y=Y+3
\n2162 RETURN 
\n2170 LET Y=Y-1
\n2180 IF Y=3 THEN GOTO 2200
\n2190 IF L(X,Y)=46 THEN LET LY=LY+1
\n2192 RETURN 
\n2200 IF LB=2 OR LC=2 THEN LET Y=Y+3
\n2202 RETURN 
\n2300 IF LR=1 THEN LET X=X+4
\n2302 RETURN 
\n2310 LET X=X-1
\n2320 IF X=3 THEN LET X=X+4
\n2322 RETURN 
\n2330 IF L(X,Y)<>46 THEN LET X=X+2
\n2332 RETURN 
\n2340 IF L(X,Y)=46 THEN LET LR=1
\n2342 RETURN 
\n2400 IF LR=1 THEN LET Y=Y+4
\n2402 RETURN 
\n2410 LET Y=Y-1
\n2420 IF Y=3 THEN LET Y=Y+4
\n2422 RETURN 
\n2430 IF L(X,Y)<>46 THEN LET Y=Y+2
\n2432 RETURN 
\n2440 IF L(X,Y)=46 THEN LET LR=1
\n2442 RETURN 
\n4000 PRINT AT 16,14;"YOU WON"
\n4002 GOTO 4040
\n4020 PRINT AT 16,14;" I WON "
\n4022 GOTO 4040
\n4040 PRINT AT 16,14;"AGAIN? (Y/N)"
\n4050 INPUT Y$
\n4055 IF NOT Y$="Y" THEN GOTO 4070
\n4060 IF Y$="Y" THEN RUN 
\n4070 PRINT AT 21,14;"OK BYE"
\n4072 STOP 
\n5000 DIM L(16,16)
\n5025 DIM M(10,10)
\n5026 FOR N=1 TO 10
\n5027 FOR W=1 TO 10
\n5028 LET M(N,W)=143
\n5030 NEXT W
\n5032 NEXT N
\n5035 RAND 
\n5040 LET HITS=0
\n5042 LET HATS=0
\n5050 LET LB=0
\n5052 LET LC=0
\n5054 LET LD=0
\n5056 LET LZ=0
\n5058 LET LA=0
\n5060 LET LZD=0
\n5070 LET LX=0
\n5072 LET LY=0
\n5074 LET XX=0
\n5076 LET LR=0
\n5080 FOR X=1 TO 3
\n5082 FOR Y=1 TO 3
\n5090 LET L(X,Y)=100
\n5092 NEXT Y
\n5094 NEXT X
\n5100 FOR X=4 TO 13
\n5102 FOR Y=4 TO 13
\n5110 LET L(X,Y)=46
\n5112 NEXT Y
\n5114 NEXT X
\n5120 FOR X=14 TO 16
\n5122 FOR Y=14 TO 16
\n5130 LET L(X,Y)=100
\n5132 NEXT Y
\n5134 NEXT X
\n5136 RETURN 
\n5300 FOR A=0 TO 9
\n5310 PRINT A;"..........  ..........";A
\n5320 NEXT A
\n5330 PRINT " ABCDEFGHIJ  ABCDEFGHIJ "
\n5350 FOR A=0 TO 9
\n5360 PRINT A;".........."
\n5362 NEXT A
\n5400 LET AB=6
\n5402 GOSUB 5600
\n5404 FOR P=1 TO 4
\n5420 LET M(N,W)=CODE "B"
\n5430 GOSUB 5640
\n5432 NEXT P
\n5440 FOR E=1 TO 2
\n5450 LET AB=7
\n5452 GOSUB 5600
\n5454 GOSUB 5670
\n5456 IF A=1 THEN GOTO 5450
\n5460 FOR P=1 TO 3
\n5470 LET M(N,W)=CODE "C"
\n5480 GOSUB 5640
\n5482 NEXT P
\n5484 NEXT E
\n5490 FOR E=1 TO 3
\n5500 LET AB=8
\n5502 GOSUB 5600
\n5504 GOSUB 5700
\n5506 IF A=1 THEN GOTO 5500
\n5510 FOR P=1 TO 2
\n5520 LET M(N,W)=CODE "D"
\n5530 GOSUB 5640
\n5532 NEXT P
\n5534 NEXT E
\n5540 RETURN 
\n5600 LET A=0
\n5602 LET AA=INT (RND*2)
\n5610 IF AA=0 THEN LET N=INT (RND*AB)+1
\n5612 LET W=INT (RND*10)+1
\n5620 IF AA=1 THEN LET N=INT (RND*10)+1
\n5622 LET W=INT (RND*AB)+1
\n5630 RETURN 
\n5640 IF AA=0 THEN LET N=W+1
\n5650 IF AA=1 THEN LET W=W+1
\n5660 RETURN 
\n5670 IF AA=0 THEN IF M(N,W)<>143 OR M(N+1,W)<>143 OR M(N+2,W)<>143 THEN LET A=1
\n5680 IF AA=1 THEN IF M(N,W)<>143 OR M(N,W+1)<>143 OR M(N,W+2)<>143 THEN LET A=1
\n5700 IF AA=0 THEN IF M(N,W)<>143 OR M(N+1,W)<>143 THEN LET A=1
\n5710 IF AA=1 THEN IF M(N,W)<>143 OR M(N,W+1)<>143 THEN LET A=1
\n5720 RETURN 
\n6418 RETURN 
\n6500 LET X$="BATTLESHIP (4)"
\n6520 LET DF=6
\n6522 LET J=66
\n6530 LET X=4
\n6532 GOSUB 6700
\n6540 LET X$="CRUISER (3)"
\n6550 LET DF=7
\n6552 LET J=67
\n6554 LET X=3
\n6560 GOSUB 6700
\n6562 GOSUB 6700
\n6570 LET X$="DESTROYER (2)"
\n6580 LET DF=8
\n6582 LET J=68
\n6584 LET X=2
\n6590 GOSUB 6700
\n6592 GOSUB 6700
\n6594 GOSUB 6700
\n6596 RETURN 
\n6600 PRINT AT 14,17;"     ";AT 15,15;"         ";AT 16,15;"         ";AT 17,18;"   ";AT 18,13;"              "
\n6610 RETURN 
\n6630 IF BR=1 THEN LET C=C+1
\n6640 IF BR=2 THEN LET D=D+1
\n6650 RETURN 
\n6700 PRINT AT 14,17;"INPUT";AT 15,15;"1 FOR N/S";AT 16,15;"2 FOR E/W"
\n6710 INPUT BR
\n6712 IF BR<1 OR BR>2 THEN GOTO 6710
\n6720 IF BR=1 THEN LET DD=DF
\n6722 LET DE=9
\n6730 IF BR=2 THEN LET DD=9
\n6732 LET DE=DF
\n6740 PRINT AT 14,17;"ENTER";AT 15,15;"STARTING ";AT 16,15;" SQUARE  ";AT 17,18;"FOR";AT 18,13;X$
\n6750 INPUT A$
\n6760 LET B$=A$(1)
\n6762 LET C=VAL A$(2)
\n6770 LET D=CODE B$-65
\n6800 GOSUB 6600
\n6834 RETURN 
\n6840 CLEAR 
\n6850 SAVE "1033%3"
\n6860 RUN 

People

No people associated with this content.

Scroll to Top