100 REM THIS PROGRAM WAS WRITTEN BY JAMES MCGILL 110 DIM C(1,20) 120 LET C(1,5)=5 130 LET C(1,10)=5 140 LET C(1,15)=5 150 LETC(1,20)=5 160 DIM A(35,35) 170 FOR C=0 TO 4 180 FOR B=5*C+1 TO 5*C+4 190 LET A(B,B+1)=1 200 IF C=4 GOTO 220 210 LET A(B,B+5)=1 220 NEXT B 230 NEXT C 240 FOR K=1 TO4 250 LET A(5*K,5*K+5)=1 260 NEXT K 270 LET R=0 280 LET M=0 290 LETN=0 300 LET S=0 310 LET W=0 320 LET X=0 330 LET Y=0 340 LETZ=0 350 LET U=0 360 LET V=0 370 DIM B$(81) 380 FOR A=1 TO 73 STEP 18 390 FOR B=A TO (A+8) STEP 2 400 LET B$(B)= "*" 410 NEXT B 420 NEXT A 430 FOR A=2 TO 74 STEP 18 440 FOR B=A TO (A+6) STEP 2 450 LET B$(B)=" " 460 NEXT B 470 NEXT A 480 FOR A=10 TO 64 STEP 18 490 FOR B=A TO A+8 500 LET B$(B)=" " 510 NEXT B 520 NEXT A 530 PRINT"DO YOU KNOW HOW TO PLAY"; 540 INPUT B$ 550 IF B$="YES" GOTO 700 560 PRINT"THIS IS THE GAME OF DOTS.WE WILL USE A 5 BY 5" 570 PRINT"ARRAY OF DOTS.YOU MAKE YOUR MOVE BY MAKING A" 580 PRINT"HORIZONTAL OR VERTICAL LINE BETWEEN TWO" 590 PRINT"CONSECUTIVE DOTS.EACH DOT HAS A PAIR OF" 600 PRINT"COORDINATES.THE TOP LEFT DOT IS 1,1.THE LOWER" 610 PRINT"LEFT DOT IS 5,1.THE UPPER RIGHT DOT IS 1,5" 620 PRINT"AND THE LOWER RIGHT DOT IS 5,5.YOU MOVE BY" 630 PRINT"TYPING IN THE COORDINATES OF THE TWO DOTS" 640 PRINT"TO BE CONNECTED.THEREFORE,YOU WILL ALWAYS" 650 PRINT "TYPE IN FOUR NUMBERS OF THE FORM W,X,Y,Z." 660 PRINT"ALWAYS TYPE IN THE COORDINATES OF THE UPPER" 670 PRINT"OR LEFTMOST DOT FIRST.THE GAME BOARD LOOKS" 680 PRINT"LIKE THIS." 690 GOSUB 3150 700 PRINT "WHAT ARE YOUR VALUES OF W,X,Y,Z."; 710 INPUT W,X,Y,Z 720 GOSUB 1200 730 LET N=N+S 740 IF S=0 GOTO 830 750 IF R>=40 GOTO 1050 760 LET S=0 770 PRINT"YOU SCORED!!!" 780 PRINT"THE SCORE IS" 790 PRINT"YOU...";N 800 PRINT"ME....";M 810 GOSUB 3150 820 GOTO 970 830 PRINT"YOU DID NOT SCORE.MY TURN" 840 GOSUB 2240 850 LET M=M+S 860 IF S=0 GOTO 990 870 IF R>=40 GOTO 1050 880 LET S=0 890 PRINT"MY MOVE IS";W;X;Y;Z 900 PRINT"I SCORED!!!" 910 GOSUB 3150 920 PRINT"THE SCORE IS" 930 PRINT"YOU....";N 940 PRINT"ME.....";M 950 PRINT"I GET ANOTHER TURN" 960 GOTO 840 970 PRINT"YOU GET ANOTHER TURN" 980 GOTO 710 990 IF R>=40 GOTO 1050 1000 PRINT"MY MOVE IS";W;X;Y;Z 1010 GOSUB 3150 1020 PRINT"I DID NOT SCORE" 1030 PRINT"YOUR TURN" 1040 GOTO 710 1050 PRINT"ALL MOVES HAVE BEEN MADE.THE GAME IS OVER" 1060 PRINT"THE FINAL SCORE IS" 1070 PRINT"YOU...";N 1080 PRINT"ME....";M 1090 IF MY GOTO 1320 1210 IF X>Z GOTO 1320 1220 IF W=Y GOTO 1260 1230 IF X<>Z GOTO 1370 1240 IF Y <>W+1 GOTO 1400 1250 GOTO 1270 1260 IF Z<>X+1 GOTO 1400 1270 IF(ABS(W))/(INT(W))<>1 GOTO 1290 1280 GOTO 1430 1290 PRINT"ILLEGAL MOVE.PLEASE USE POSITIVE INTEGERS LESS THAN 6" 1300 GOTO 1340 1310 GOTO 1430 1320 PRINT"ILLEGAL MOVE.PLEASE TYPE IN THE COORDINATES OF " 1330 PRINT"THE UPPERMOST OR LEFTMOST DOT FIRST" 1340 PRINT"TRY AGAIN. WHAT ARE YOUR VALUES FOR W,X,Y,Z"; 1350 INPUT W,X,Y,Z 1360 GOTO 1200 1370 PRINT"ILLEGAL MOVE.ONLY HORIZONTAL AND VERTICAL MOVES" 1380 PRINT"ARE ALLOWED" 1390 GOTO 1340 1400 PRINT"ILLEGAL MOVE.YOU MAY ONLY CONNECT CONSECUTIVE DOTS" 1410 PRINT"NO SKIPPING OVER DOTS" 1420 GOTO 1340 1430 LET U=(W-1)*5+X 1440 LET V=(Y-1)*5+Z 1450 IF A(U,V) =1 GOTO 1480 1460 PRINT"ILLEGAL MOVE.THAT MOVE HAS ALREADY BEEN USED" 1470 GOTO 1340 1480 PRINT"LEGAL MOVE" 1490 GOSUB 1510 1500 RETURN 1510 IF X=Z GOTO 1730 1520 IF V/5>1 GOTO 1570 1530 LET C(1,U)=C(1,U)+1 1540 IF C(1,U)<>4 GOTO 1560 1550 LET S=S+1 1560 GOTO 1950 1570 IF V/5<4.1 GOTO 1630 1580 LET P=U-5 1590 LET C(1,P)=C(1,P)+1 1600 IF C(1,P)<>4 GOTO1620 1610 LET S=S+1 1620 GOTO 1950 1630 LET C(1,U)=C(1,U)+1 1640 LET P=U-5 1650 LET C(1,P)=C(1,P)+1 1660 IF C(1,U)<> 4 GOTO 1700 1670 IF C(1,P)<>4 GOTO 1710 1680 LET S=S+2 1690 GOTO 1950 1700 IF C(1,P)<>4 GOTO 1720 1710 LET S=S+1 1720 GOTO 1950 1730 LET Q=V-1 1740 IF (INT(Q/5))*5<>Q GOTO 1790 1750 LET C(1,U)=C(1,U)+1 1760 IF C(1,U)<>4 GOTO 1780 1770 LET S=S+1 1780 GOTO 1990 1790 IF (INT(V/5))*5<>V GOTO1850 1800 LET T=U-1 1810 LET C(1,T)=C(1,T)+1 1820 IF C(1,T)<>4 GOTO 1840 1830 LET S=S+1 1840 GOTO 1990 1850 LET T =U-1 1860 LET C(1,U)=C(1,U)+1 1870 LET C(1,T)=C(1,T)+1 1880 IF C(1,U)<>4 GOTO 1920 1890 IF C(1,T)<> 4 GOTO 1930 1900 LET S=S+2 1910 GOTO 1990 1920 IF C(1,T)<>4 GOTO 1990 1930 LET S=S+1 1940 GOTO 1990 1950 LET F=2*W-1 1960 LET G=2*X 1970 GOSUB 3220 1980 GOTO 2020 1990 LET H= 2*W 2000 LET J=2*X-1 2010 GOSUB 3250 2020 LET A(U,V)=0 2030 LET R=R+1 2040 LET U=0 2050 LET V=0 2060 LET P=0 2070 LET Q=0 2080 LET T=0 2090 LET F=0 2100 LET G=0 2110 LET H=0 2120 LET J=0 2130 RETURN 2140 IF A(24,25)=1 GOTO 2160 2150 GOTO 2210 2160 LET W=5 2170 LET X=4 2180 LET Y=5 2190 LET Z=5 2200 GOTO 3070 2210 FOR I=19 TO 1 STEP -1 2220 IF C(1,I)<4 GOTO 2670 2230 NEXT I 2240 FOR I=1 TO 20 2250 IF C(1,I)=3 GOTO 2670 2260 NEXT I 2270 GOTO 2320 2280 IF A(I+1,I+6)=1 GOTO 2690 2290 GOTO 2460 2300 IF A(I+5,I+6)=1 GOTO 2680 2310 GOTO 2490 2320 FOR I=1 TO 20 2330 IF C(1,I)=0 GOTO 2400 2340 GOTO 2490 2350 IF I<2 GOTO 2400 2360 IF C(1,I-1)=0 GOTO2390 2370 IF C(1,I-1)=1 GOTO 2390 2380 GOTO 2400 2390 IF A(I,I+5)=1 GOTO 2710 2400 IF I<6 GOTO 2430 2410 IF C(1,I-5)=0 GOTO2430 2420 IF C(1,I-5)<>1 GOTO 2440 2430 IF A(I,I+1)=1 GOTO2700 2440 IF C(1,I+1)=0 GOTO 2280 2450 IF C(1,I+1)=1 GOTO 2280 2460 IF I>15 GOTO 2490 2470 IF C(1,I+5)=0 GOTO 2300 2480 IF C(1,I+5)=1 GOTO 2300 2490 NEXT I 2500 FOR I=1 TO 20 2510 IF C(1,I)=1 GOTO 2530 2520 GOTO 2630 2530 IF I<2 GOTO 2590 2540 IF C(1,I-1)=1 GOTO2560 2550 GOTO 2570 2560 IF A(I,I+5)=1 GOTO 2710 2570 IF I<6 GOTO 2590 2580 IF C(1,I-5)<> 1 GOTO 2600 2590 IF A(I,I+1)=1 GOTO2700 2600 IF C(1,I+1)=1 GOTO2280 2610 IF I>15 GOTO 2630 2620 IF C(1,I+5)=1 GOTO2300 2630 NEXT I 2640 IF A(1,2)=1 GOTO 2730 2650 IF A(1,6)=1 GOTO 2760 2660 IF A(2,7)=1 GOTO 2790 2670 IF I=20 GOTO 2700 2680 IF A(I+5,I+6)=1 GOTO 2880 2690 IF A(I+1,I+6)=1 GOTO 2920 2700 IF A(I,I+1)=1 GOTO 2820 2710 IF A(I,I+5)=1 GOTO 2960 2720 GOTO 2140 2730 LET W=1 2740 LET X=1 2750 GOTO 3020 2760 LET W=1 2770 LET X=1 2780 GOTO 3050 2790 LET W=1 2800 LET X=2 2810 GOTO 3050 2820 LET W=INT((I+4)/5) 2830 LET X=I-(5*(W-1)) 2840 GOTO 3020 2850 LET W=INT((I+3)/5) 2860 LET X=I-(5*(W-1)) 2870 GOTO 3020 2880 LET I=I+5 2890 LET W= INT((I+4)/5) 2900 LET X=I-(5*(W-1)) 2910 GOTO 3020 2920 LET I=I+1 2930 LET W=INT((I+4)/5) 2940 LET X=I-(5*(W-1)) 2950 GOTO 3050 2960 LET W=INT((I+4)/5) 2970 LET X=I-(5*(W-1)) 2980 GOTO 3050 2990 LET W=INT((I-1)/5) 3000 LET X=I-(5*(W-1)) 3010 GOTO 3050 3020 LET Y=W 3030 LET Z=X+1 3040 GOTO 3070 3050 LET Y=W+1 3060 LET Z=X 3070 LET U=(W-1)*5+X 3080 LET V=(Y-1)*5+Z 3090 LETA=W 3100 LET B=X 3110 LET C=Y 3120 LETD=Z 3130 GOSUB 1510 3140 RETURN 3150 FOR I=1 TO 81 STEP 9 3160 FOR J=I TO (I+8) 3170 PRINT B$(J); 3180 NEXT J 3190 PRINT 3200 NEXT I 3210 RETURN 3220 LET U1=(F-1)*9+G 3230 LET B$(U1)="-" 3240 GOTO 3270 3250 LET U2=(H-1)*9+J 3260 LET B$(U2)="I" 3270 RETURN 3280 END =(F-1)*9+G 3230 LET B$(U1)="-" 3240 GOTO 3270 3250 LET U2=(H-1)*9+J 3260 LET B$(U2)="I" 3270 RETURN 3280 END