home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG054.ARK
/
TICTAC.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
5KB
|
251 lines
90 RANDOMIZE
100 PRINT "YOUR OBJECTIVE IS TO PLACE 5 MARKS"
110 PRINT "IN A STRAIGHT LINE (EITHER HORIZONTAL, VERTICAL, OR DIAGONAL)"
130 PRINT "ON A 9 X 9 BOARD, PLAYING AGAINST THE COMPUTER. ENTER YOUR"
140 PRINT "MOVE AS 2 NUMBERS; THE POSITIONS ACROSS AND THEN DOWN"
150 PRINT "FROM THE UPPER LEFT HAND CORNER OF THE BOARD. THE COMPUTER"
160 PRINT "WILL TELL YOU IT'S MOVE, AND PRINT THE BOARD. 'Y' IS YOU;"
170 PRINT "'C' IS THE COMPUTER. GOOD LUCK."
180 DIM A(27,27),P(22),Q(22)
190 LET L9=200
200 FOR J=1 TO 27
210 FOR K=1 TO 27
220 LET A(J,K)=3
230 NEXT K
240 NEXT J
250 LET S=0
260 FOR J=10 TO 18
270 FOR K=10 TO 18
280 LET A(J,K)=0
290 NEXT K
300 NEXT J
310 IF S=1 THEN 2440
320 LET S=1
330 GOTO 350
340 GOSUB 2220
350 INPUT J1,K1
360 IF J1+K1=0 THEN 260
370 LET J1=J1+9
380 LET K1=K1+9
390 IF A(J1,K1)<>0 THEN 2420
400 LET A(J1,K1)=2
410 LET D2=2
420 LET L3=0
430 LET D4=0
440 LET L2=81
450 LET Z9=1
460 GOTO 2480
470 LET D5=D4
480 IF D4>79 THEN 2080
490 LET D2=1
500 LET L2=65
510 LET D4=0
520 LET Z9=2
530 GOTO 2480
540 LET D6=D4
550 IF D5>31 THEN 570
560 IF D6<31 THEN 910
570 IF L3>0 THEN 2100
580 IF D5<65 THEN 610
590 LET D2=2
600 GOTO 640
610 LET D2=1
620 LET L2=55
630 IF D6<55 THEN 680
640 LET Z9=3
650 GOTO 2480
660 IF L3=3 THEN 2160
670 GOTO 2180
680 IF D5<55 THEN 780
690 LET D2=2
700 LET Z9=4
710 GOTO 2480
720 LET L2=31
730 LET L9=55
740 LET Z9=5
750 GOTO 2480
760 GOSUB 1830
770 GOTO 2160
780 LET L2=31
790 LET Z9=6
800 GOTO 2480
810 IF L3<2 THEN 830
820 GOSUB 1830
830 LET L3=0
840 LET D2=2
850 LET Z9=7
860 GOTO 2480
870 IF L3=0 THEN 920
880 IF L3=1 THEN 2140
890 GOSUB 1830
900 GOTO 2180
910 LET D2=2
920 LET L2=D5-5
930 LET L3=0
940 LET Z9=8
950 GOTO 2480
960 IF L3>0 THEN 2180
970 PRINT "DRAW, ";
980 GOTO 2120
990 FOR J=1 TO 9
1000 GOSUB 1760
1010 FOR K=1 TO 10
1020 GOSUB 1270
1030 NEXT K
1040 NEXT J
1050 FOR K=1 TO 9
1060 GOSUB 1760
1070 FOR J=1 TO 10
1080 GOSUB 1270
1090 NEXT J
1100 NEXT K
1110 FOR L=4 TO -4 STEP -1
1120 GOSUB 1760
1130 FOR J=1 TO 10
1140 LET K=J+L
1150 GOSUB 1270
1160 NEXT J
1170 NEXT L
1180 FOR L=5 TO 14
1190 GOSUB 1760
1200 FOR K=1 TO 10
1210 LET J=L-K
1220 GOSUB 1270
1230 NEXT K
1240 NEXT L
1250 LET L9=200
1260 RETURN
1270 LET B=A(J+9,K+9)
1280 IF B=0 THEN 1610
1290 IF B=D2 THEN 1500
1300 IF V1=0 THEN 1330
1310 IF C1=66 THEN 1330
1320 LET C1=C1-10
1330 LET S9=0
1340 LET V1=0
1350 IF C1<=C2 THEN 1370
1360 LET C2=C1
1370 IF C5>=5 THEN 1400
1380 GOSUB 1760
1390 RETURN
1400 LET C5=0
1410 IF C2<=D4 THEN 1430
1420 LET D4=C2
1430 IF C2<L2 THEN 1390
1440 IF C2>L9 THEN 1390
1450 IF L1=0 THEN 1390
1460 LET P(L3)=Q(L1-1)
1470 LET L3=L3+1
1480 LET L1=L1-1
1490 GOTO 1450
1500 IF V1=1 THEN 1550
1510 LET V1=1
1520 IF S9=0 THEN 1550
1530 GOSUB 1910
1540 LET S9=0
1550 LET C6=C7+C6+1
1560 LET C7=0
1570 LET C5=C5+1
1580 IF C6>5 THEN 1390
1590 LET C1=C1+20
1600 GOTO 1390
1610 IF V1=1 THEN 1640
1620 LET S9=10*J+K
1630 GOTO 1660
1640 GOSUB 1910
1650 LET V1=0
1660 LET C5=C5+1
1670 IF C1<=0 THEN 1690
1680 LET C7=C7+1
1690 IF C1<=C2 THEN 1730
1700 LET C2=C1
1710 LET C1=C1-4
1720 GOTO 1390
1730 IF C1>=0 THEN 1710
1740 LET C1=1
1750 GOTO 1390
1760 LET L1=0
1770 LET C1=-10
1780 LET C2=0
1790 LET C5=0
1800 LET C6=0
1810 LET C7=0
1820 RETURN
1830 FOR H=0 TO L3-2
1840 FOR I=H+1 TO L3-1
1850 IF P(H)=P(I) THEN 1890
1860 NEXT I
1870 NEXT H
1880 RETURN
1890 LET P(0)=P(H)
1900 GOTO 2140
1910 IF C1<65 THEN 1970
1920 IF L1=0 THEN 1970
1930 IF L1=1 THEN 2020
1940 LET Q(0)=Q(1)
1950 LET L1=L1-1
1960 GOTO 1930
1970 IF S9=0 THEN 2000
1980 LET Q(L1)=S9
1990 GOTO 2010
2000 LET Q(L1)=10*J+K
2010 LET L1=L1+1
2020 RETURN
2030 LET J=INT(P(0)/10)+9
2040 LET K=P(0)-10*(J-9)+9
2050 LET A(J,K)=1
2060 PRINT J-9;K-9
2070 RETURN
2080 PRINT "YOU WIN"
2090 GOTO 2210
2100 GOSUB 2030
2110 GOSUB 2220
2120 PRINT "COMPUTER WINS"
2130 GOTO 2210
2140 GOSUB 2030
2150 GOTO 340
2160 LET P(0)=P(1)
2170 GOTO 2140
2180 LET L9=INT(L3*RND(X))
2190 LET P(0)=P(L9)
2200 GOTO 2140
2210 GOTO 260
2220 PRINT
2230 PRINT " 1 2 3 4 5 6 7 8 9"
2240 FOR J=10 TO 18
2250 PRINT J-9;TAB(6);
2260 FOR K=10 TO 18
2270 FOR L=K TO 18
2280 IF A(L,J)<>0 THEN 2310
2290 NEXT L
2300 GOTO 2350
2310 IF A(K,J)=0 THEN 2400
2320 IF A(K,J)=1 THEN 2380
2330 PRINT "Y ";
2340 NEXT K
2350 PRINT
2360 NEXT J
2370 RETURN
2380 PRINT "C ";
2390 GOTO 2340
2400 PRINT ". ";
2410 GOTO 2340
2420 PRINT "BAD PLAY, MAKE A NEW ONE"
2430 GOTO 350
2440 LET A(14,14)=1
2450 PRINT "COMPUTER PLAYS FIRST WITH 5, 5"
2460 LET S=0
2470 GOTO 340
2480 GOSUB 990
2490 IF Z9>5 THEN 2510
2500 IF Z9=1 THEN 470
2501 IF Z9=2 THEN 540
2502 IF Z9=3 THEN 660
2503 IF Z9=4 THEN 720
2504 IF Z9=5 THEN 760
2510 LET Z9=Z9-5
2520 IF Z9=1 THEN 810
2530 IF Z9=2 THEN 870
2540 IF Z9=3 THEN 960
2550 END