home *** CD-ROM | disk | FTP | other *** search
- 10 PRINT "I CAN PLAY CHECKERS WITH YOU. I AM X."
- 20 PRINT "AND YOU ARE O. THE COMPUTER WILL GO FIRST,-NOTE: SQUARES"
- 30 PRINT "ARE IN THE FORM-(X,Y) AND SQ. 1,1 IS THE BOTTOM LEFT!"
- 40 PRINT "DO NOT ATTEMPT A DOUBLE JUMP ON YOUR PIECE MIGHT JUST "
- 50 PRINT "DISAPPEAR(SAME FOR A TRIPLE!)"
- 60 PRINT " WAIT FOR THE COMP. TO MOVE!!!!!"
- 70 LET G=-1
- 75 LET L=-1
- 80 DIM R(50),M(50)
- 85 REM ODD(X)
- 90 DEF FND(X)=X-2*INT(X/2)
- 100 DIM S(10,10)
- 110 DATA 1, 0, 1, 0, 0, 0,-1, 0, 0, 1, 0, 0, 0,-1, 0,-1, 15
- 120 FOR X=1 TO 8
- 130 FOR Y=1 TO 8
- 140 READ J
- 150 IF J=15 THEN 180
- 160 LET S(X,Y)=J
- 170 GOTO 200
- 180 RESTORE
- 190 READ S(X,Y)
- 200 NEXT Y
- 210 NEXT X
- 220 REM
- 225 LET L=1
- 230 REM
- 240 FOR X2=1 TO 8
- 250 FOR Y2=1 TO 8
- 255 LET S9=S(X2,Y2)
- 260 IF S9>= 0 THEN 380
- 310 IF S9=-2 THEN 340
- 320 GOSUB 430
- 330 GOTO 380
- 340 GOSUB 650
- 380 NEXT Y2
- 390 NEXT X2
- 393 IF L=1 THEN 400
- 396 RETURN
- 400 PRINT
- 410 GOSUB 1140
- 420 GOTO 220
- 430 REM
- 435 LET U=X2-1
- 450 IF U<1 THEN 540
- 460 REM
- 470 LET V=Y2-1
- 480 IF V<1 THEN 625
- 485 IF S(U,V)<> 0 THEN 500
- 490 GOSUB 910
- 500 IF S(U,V)<= 0 THEN 540
- 505 LET U=X2-2
- 507 IF U<1 THEN 540
- 510 LET V=V-1
- 520 IF V<1 THEN 540
- 525 IF S(U,V)<> 0 THEN 540
- 530 GOSUB 910
- 540 REM
- 550 LET U=X2+1
- 560 IF U>8 THEN 630
- 570 REM
- 580 LET V=Y2-1
- 583 IF V<1 THEN 630
- 587 IF S(U,V)<> 0 THEN 600
- 590 GOSUB 910
- 600 IF S(U,V)<= 0 THEN 630
- 605 LET U=X2+2
- 607 IF U>8 THEN 630
- 610 LET V=V-1
- 615 IF V<1 THEN 630
- 617 IF S(U,V)<> 0 THEN 630
- 620 GOSUB 910
- 625 REM WHERE DID I GO ??
- 630 RETURN
- 650 REM KING MOVES
- 660 FOR A=-1 TO 1 STEP 2
- 670 FOR B=-1 TO 1 STEP 2
- 680 LET U=X2+A
- 690 LET V=Y2+B
- 700 IF U<1 THEN 870
- 710 IF U>8 THEN 870
- 720 IF V<1 THEN 870
- 730 IF V>8 THEN 870
- 740 IF S(U,V)<> 0 THEN 770
- 750 GOSUB 910
- 760 GOTO 870
- 770 IF S(U,V)=G THEN 870
- 780 IF S(U,V)=2*G THEN 870
- 790 LET U=U+A
- 810 IF U<1 THEN 870
- 820 IF U>8 THEN 870
- 830 IF V<1 THEN 870
- 840 IF V>8 THEN 870
- 850 IF S(U,V)<> 0 THEN 870
- 860 GOSUB 910
- 870 NEXT B
- 880 NEXT A
- 890 RETURN
- 900 REM
- 910 REM EVAL. SECTION
- 920 LET P=P+1
- 940 IF V<>1 THEN 960
- 950 LET Q=Q+2
- 960 IF V<>8 THEN 980
- 970 LET Q=Q-2
- 980 REM
- 990 IF U<>1 THEN 1010
- 1000 LET Q=Q+1
- 1010 IF U<>8 THEN 1030
- 1020 LET Q=Q+1
- 1030 FOR C=-1 TO 1 STEP 2
- 1033 IF U+C<1 THEN 1060
- 1037 IF U+C>8 THEN 1060
- 1040 IF S(U+C,V+G)<1 THEN 1060
- 1050 LET Q=Q-1
- 1060 REM
- 1062 IF U-C>8 THEN 1100
- 1063 IF U-C<1 THEN 1100
- 1064 IF S(U-C,V-G)<1 THEN 1080
- 1070 LET Q=Q+5
- 1080 REM
- 1090 REM
- 1100 NEXT C
- 1110 LET R(P)=Q
- 1112 LET M(P)=X2*10+Y2+V/10+U/100
- 1120 LET Q= 0
- 1130 RETURN
- 1140 IF P= 0 THEN 1880
- 1150 LET J1=-10
- 1155 LET J2=1
- 1160 FOR F=1 TO P
- 1170 IF R(F)<=J1 THEN 1180
- 1172 LET J1=R(F)
- 1174 LET J2=F
- 1180 NEXT F
- 1200 LET X2= INT (M(J2)/10)
- 1210 LET Y2= INT (M(J2)-X2*10)
- 1220 LET V= INT ((M(J2)- INT (M(J2)))*10)
- 1230 LET U= INT ((M(J2)-X2*10-Y2-V/10)*100+.5)
- 1235 PRINT "I MOVE FROM ";X2;Y2,"TO ";U;V
- 1240 LET F= 0
- 1245 LET P2=P
- 1250 LET P= 0
- 1260 LET K= 0
- 1270 IF V<>1 THEN 1300
- 1280 LET S(U,V)=2*G
- 1290 GOTO 1310
- 1300 LET S(U,V)=S(X2,Y2)
- 1310 LET S(X2,Y2)= 0
- 1320 IF ABS (X2-U)<>2 THEN 1340
- 1330 LET S((X2+U)/2,(Y2+V)/2)= 0
- 1340 GOTO 1370
- 1345 PRINT "BOARD";
- 1350 INPUT D
- 1360 IF D= 0 THEN 1390
- 1370 GOSUB 1410
- 1375 IF F9=0 THEN PRINT "GEE - I WIN, THANKS FOR THE GAME" : STOP
- 1390 GOSUB 1580
- 1400 RETURN
- 1410 PRINT
- 1415 F9=0 REM COUNT PLAYER'S PIECES
- 1420 FOR Y=8 TO 1 STEP -1
- 1425 PRINT " ";Y;
- 1430 FOR X=1 TO 8
- 1435 LET X9=S(X,Y)
- 1438 IF FND(X)=FND(Y) THEN 1450
- 1442 PRINT " ";
- 1448 GOTO 1550
- 1450 IF S(X,Y)<> 0 THEN 1470
- 1460 PRINT ". ";
- 1465 GOTO 1550
- 1470 IF ABS (X9)=2 THEN 1510
- 1475 IF X9=-1 THEN 1500
- 1480 PRINT "O ";
- 1485 F9=1
- 1490 GOTO 1550
- 1500 PRINT "X ";
- 1505 GOTO 1550
- 1510 IF S(X,Y)<>-2 THEN 1530
- 1520 PRINT "X*";
- 1525 GOTO 1550
- 1530 REM
- 1540 PRINT "O*";
- 1545 F9=1
- 1550 NEXT X
- 1560 PRINT
- 1570 NEXT Y
- 1573 PRINT " 1.2.3.4.5.6.7.8."
- 1575 RETURN
- 1580 PRINT
- 1590 PRINT "FROM";
- 1600 INPUT E,H
- 1610 LET X=E
- 1620 LET Y=H
- 1630 IF S(X,Y)> 0 THEN 1670
- 1640 PRINT "THERE IS NO ONE OCCUPING THAT SPACE"
- 1650 PRINT
- 1660 GOTO 1590
- 1670 PRINT ,"TO ";
- 1680 INPUT A,B
- 1690 LET X=A
- 1700 LET Y=B
- 1710 IF S(X,Y)= 0 THEN 1742
- 1720 PRINT "THAT SPACE IS ALREADY OCCUPIED"
- 1730 PRINT
- 1740 GOTO 1590
- 1742 IF ABS(E-A)=ABS(H-B) THEN 1746
- 1744 PRINT "ILLEGAL MOVE" : GOTO 1590
- 1746 IF ABS(E-A)>2 OR (ABS(E-A)=2 AND S((E+A)/2,(H+B)/2)=0) THEN 1744
- 1750 LET S(A,B)=S(E,H)
- 1770 LET S(E,H)= 0
- 1780 LET T=(4.5-(3.5*G))
- 1790 IF ABS (E-A)<>2 THEN 1810
- 1800 LET S((E+A)/2,(H+B)/2)= 0
- 1810 IF B<>T THEN 1830
- 1820 LET S(A,B)=-2*G
- 1830 REM
- 1850 RETURN
- 1880 PRINT " VERY GOOD, YOU WIN!"
- 1890 PRINT
- 1900 PRINT
- 1920 END
- 2000 FOR F=1 TO P2
- 2010 PRINT R(F);M(F),
- 2015 NEXT F
- 2020 STOP
- 3000 GOSUB 1410
- 3010 GOTO 1580
-