1 'CHECKERS 2 KEY OFF:SCREEN 0,1,0:WIDTH 40:COLOR 15,1,9:CLS:DEFINT A-Z 4 GOSUB 4600 5 PRINT"KEY"STRING$(37,"THEN")"CLOSE 10 PRINT"OPEN"SPACE$(14)"CHECKERS"SPACE$(15)"OPEN 15 PRINT"SCREEN"STRING$(37,"THEN")"LOAD 20 PRINT:PRINT"THIS IS THE GAME OF CHECKERS.":PRINT 21 PRINT"THE COMPUTER IS GREEN, AND YOU ARE RED. 25 PRINT:PRINT"TO MOVE, MOVE THE CURSOR ON THE DEFSNGFROMDEFDBL 30 PRINT"SQUARE WITH THE NUMERIC KEY PAD. PRESS 35 PRINT"TO ACCEPT YOUR MOVE. THEN MOVE 40 PRINT"TO THE DEFSNGTODEFDBL SQUARE. THE COORDINATES OF 45 PRINT"YOUR MOVE WILL BE SHOWN ON THE LEFT. 50 PRINT:PRINT"WHEN JUMPING, THE COMPUTER WILL SHOW 55 PRINT"DEFSNG& TODEFDBL SO YOU CAN CONTINUE JUMPING. TO 60 PRINT"QUIT A SERIES OF JUMPS, PRESS THE <+> 65 PRINT"KEY. TO START A MOVE OVER, PRESS "CHR$(17)"-" 67 PRINT"(BACKSPACE). TO QUIT, PRESS . 70 GOSUB 4650 80 DIM R(4),S(7,7),CP(11):G=-1:R(0)=-99 110 FOR X=0 TO 6 STEP 2:S(X,0)=1:S(X+1,1)=1:S(X,2)=1:S(X+1,5)=-1:S(X,6)=-1:S(X+1,7)=-1:NEXT 120 CP(0)=16:CP(1)=8:FOR X=2 TO 11:CP(X)=-1:NEXT 150 SCREEN 1,0:COLOR 1,1:OUT 985,49'MAKE FOREGROUND BRIGHTER 180 GOSUB 3000 190 LOCATE 25,1:PRINT"DO YOU WANT TO MOVE FIRST?_"; 192 A$="":WHILE+ A$="":A$=INKEY$:WEND 200 IF A$="Y" OR A$="y" THEN LINE(0,192)-(319,199),0,BF:GOTO 1590 210 IF A$<>"N" AND A$<>"n" THEN 192 220 LINE(0,192)-(319,199),0,BF 230 FOR X=0 TO 7:FOR Y=0 TO 7:IF S(X,Y)>-1 THEN 350 310 IF S(X,Y)=-1 THEN FOR A=-1 TO 1 STEP 2:B=G:GOSUB 650:NEXT A 330 IF S(X,Y)=-2 THEN FOR A=-1 TO 1 STEP 2:FOR B=-1 TO 1 STEP 2:GOSUB 650:NEXT B,A 350 NEXT Y,X:GOSUB 3000:GOTO 1140 650 U=X+A:V=Y+B:IF U<0 OR U>7 OR V<0 OR V>7 THEN 870 740 IF S(U,V)=0 THEN GOSUB 910:GOTO 870 770 IF S(U,V)<0 THEN 870 790 U=U+A:V=V+B:IF U<0 OR V<0 OR U>7 OR V>7 THEN 870 850 IF S(U,V)=0 THEN GOSUB 910 870 RETURN 910 IF V=0 AND S(X,Y)=-1 THEN Q=Q+2 920 IF ABS(Y-V)=2 THEN Q=Q+5 960 IF Y=7 THEN Q=Q-2 980 IF Y=0 OR U=7 THEN Q=Q+1 1030 FOR C=-1 TO 1 STEP 2:IF U+C<0 OR U+C>0 OR V+G<0 THEN 1080 1035 IF S(U+C,V+G)<0 THEN Q=Q+1:GOTO 1080 1040 IF U-C<0 OR U-C>7 OR V-G>7 THEN 1080 1045 IF S(U+C,V+G)>0 AND (S(U-C,V-G)=0 OR (U-C=X AND V-G=Y)) THEN Q=Q-2 1080 NEXT C:IF Q>R(0) THEN R(0)=Q:R(1)=X:R(2)=Y:R(3)=U:R(4)=V 1100 Q=0:RETURN 1140 IF R(0)=-99 THEN 1880 1220 LINE(240,16)-(319,111),0,BF 1230 LOCATE 1,30:PRINT"MY FROM:":LOCATE 3,30:PRINT"FROM "CHR$(65+R(1))","CHR$(49+R(2)):LOCATE ,30:PRINT" TO "CHR$(65+R(3))","CHR$(49+R(4)):R(0)=-99 1240 IF R(4)=0 THEN S(R(3),R(4))=-2:GOTO 1310 1250 S(R(3),R(4))=S(R(1),R(2)) 1310 S(R(1),R(2))=0:IF ABS(R(1)-R(3))<>2 THEN GOSUB 3000:GOTO 1590 1330 S((R(1)+R(3))/2,(R(2)+R(4))/2)=0 1340 X=R(3):Y=R(4):IF S(X,Y)=-1 THEN B=-2:FOR A=-2 TO 2 STEP 4:GOSUB 1370:NEXT A 1350 IF S(X,Y)=-2 THEN FOR A=-2 TO 2 STEP 4:FOR B=-2 TO 2 STEP 4:GOSUB 1360:NEXT B,A 1360 IF R(0)<>-99 THEN LOCATE ,30:PRINT" TO "CHR$(65+R(3))","CHR$(49+R(4)):R(0)=-99:GOTO 1240 1365 GOSUB 3000:GOTO 1590 1370 U=X+A:V=Y+B:IF U<0 OR U>7 OR V<0 OR V>7 THEN 1400 1380 IF S(U,V)=0 AND S(X+A/2,Y+B/2)>0 THEN GOSUB 910 1400 RETURN 1580 GOSUB 3000 1590 LOCATE 1,1:PRINT"YOUR MOVE: 1592 LINE(0,16)-(95,111),0,BF 1595 LOCATE 3,1:PRINT"FROM "CHR$(65+CO)","CHR$(49+DO); 1600 GOSUB 4000:E=C:H=D:IF E<0 OR H<0 THEN 1580 1602 LINE(0,192)-(319,199),0,BF 1610 X=E:Y=H:IF S(X,Y)<0 THEN BEEP:LOCATE 25,1:PRINT"PLAY YOUR OWN PIECES!";:GOTO 1595 1615 IF S(X,Y)=0 THEN BEEP:LOCATE 25,1:PRINT"THAT'S AN EMPTY SQUARE, TRY AGAIN!";:GOTO 1595 1620 LOCATE 4,1:PRINT" TO "CHR$(65+C)","CHR$(49+D);:GOSUB 4000:A=C:B=D 1630 IF A<0 OR B<0 THEN SOUND 37,2:GOTO 1580 1670 X=A:Y=B 1680 IF S(X,Y)=0 AND ABS(A-E)<=2 AND ABS(A-E)=ABS(B-H) THEN 1700 1690 BEEP:GOTO 1620 1700 I=46 1750 S(A,B)=S(E,H):S(E,H)=0:IF ABS(E-A)<>2 THEN 1810 1800 S((E+A)/2,(H+B)/2)=0 1801 PRINT 1802 LOCATE ,1:PRINT"& TO ";:GOSUB 4000:A1=C:B1=D:IF K$="+" THEN 1810 1803 IF K$=CHR$(8) THEN SOUND 37,2:GOTO 1580 1804 IF S(A1,B1)<>0 OR ABS(A1-A)<>2 OR ABS(B1-B)<>2 THEN 1802 1806 E=A:H=B:A=A1:B=B1:I=I+15:GOTO 1750 1810 IF B=7 THEN S(A,B)=2 1830 GOTO 230 1880 PLAY"T240C8D8E8G4E8G2 1890 LOCATE 25,16:PRINT"YOU WIN!"; 1900 GOTO 9000 2000 SCREEN 1,0:COLOR 1,1:C=-1:OUT 985,49'MAKE FOREGROUND BRIGHTER 2010 FOR X=0 TO 7:FOR Y=0 TO 7:IF C THEN LINE(X*20+80,Y*20)-(X*20+99,Y*20+19),3,BF 2020 C=NOT C:NEXT:C=NOT C:NEXT:RETURN 3000 FOR Y=0 TO 7:FOR X=0 TO 7:GOSUB 3100:NEXT X,Y 3010 LOCATE 18,8:PRINT CHR$(24)" ACCEPTS 3020 LOCATE 19,7:PRINT CHR$(27)" "CHR$(26)" MOVES "CHR$(17)"- CORRECTS 3030 LOCATE 20,8:PRINT CHR$(25)" EXITS 3040 LOCATE 22,10:PRINT"<+> ENDS JUMP SERIES 3090 RETURN 3100 ON S(X,Y)+3 GOTO 3120,3130,3110,3150,3140 3110 LINE(X*16+100,116-Y*16)-(X*16+115,131-Y*16),((X XOR Y)AND 1)*3,BF:RETURN 3120 GOSUB 3130:LOCATE 16-Y-Y,X+X+14:PRINT"K";:RETURN 3130 CIRCLE(X*16+107,123-Y*16),7,3,,,1:PAINT(X*16+101,121-Y*16),1,3:RETURN 3140 GOSUB 3150:LOCATE 16-Y-Y,X+X+14:PRINT"K";:RETURN 3150 CIRCLE(X*16+107,123-Y*16),7,3,,,1:PAINT(X*16+101,121-Y*16),2,3:RETURN 4000 T=0 4010 C=CO:D=DO:PUT(C*16+104,120-D*16),CP 4030 GOSUB 4500 4040 CN=C:DN=D 4050 IF CO=CN AND DO=DN THEN 4100 4060 PUT(C*16+104,120-D*16),CP 4090 CO=CN:DO=DN:T=TN 4100 IF K$=CHR$(8) OR K$="+" THEN C=-1 4110 IF C<0 THEN PUT(CN*16+104,120-D*16),CP 4150 RETURN 4500 MF=0:K$=INKEY$:IF K$="" THEN 4500 4510 CT=C:DT=D 4520 IF K$=CHR$(13) OR K$=CHR$(8) OR K$="+" THEN RETURN 4525 IF K$=CHR$(27) THEN 4800 4530 IF K$=CHR$(0)+"H" OR K$="8" THEN D=(D+1) AND 7:MF=-1 4540 IF K$=CHR$(0)+"P" OR K$="2" THEN D=(D-1) AND 7:MF=-1 4550 IF K$=CHR$(0)+"K" OR K$="4" THEN C=(C-1) AND 7:MF=-1 4560 IF K$=CHR$(0)+"M" OR K$="6" THEN C=(C+1) AND 7:MF=-1 4570 IF MF THEN SOUND 32767,1:PUT(CT*16+104,120-DT*16),CP:PUT(C*16+104,120-D*16),CP:SOUND 37,0:LOCATE ,6:PRINT CHR$(65+C)","CHR$(49+D); 4590 GOTO 4500 4600 REM TITLE PAGE ROUTINE. 4606 LOCATE 3,1:CT$="* CHECKERS *":GOSUB 4700 4614 PRINT:PRINT:PRINT:CT$="A VERY GOOD GAME OF CHECKERS":GOSUB 4700 4616 CT$="TO PLAY WITH YOUR IBM PC":GOSUB 4700 4650 LOCATE 24,1:PRINT"PRESS TO CONTINUE"; 4660 LOCATE 25,1:PRINT"PRESS TO EXIT"; 4670 K$=INKEY$:IF K$="" THEN 4670 4680 IF K$=CHR$(27) THEN 9000 4690 IF K$<>" " THEN 4670 :ELSE CLS:RETURN 4700 LOCATE ,20.5!-LEN(CT$)\2 4710 PRINT CT$:RETURN 4800 LOCATE 25,1:PRINT" TO CONTINUE, TO EXIT"; 4810 K$=INKEY$:IF K$="" THEN 4810 4820 IF K$=CHR$(27) THEN RUN 4830 IF K$<>" " THEN 4830 :ELSE CLS:K$="+":RETURN 9000 GOSUB 4650:RUN