100 REM FOUR-IN-A ROW BY SOL STEINBERG 110 DIMV(7),G(7,7),N(7) 120 GOSUB1930 130 PLAYER=1:GOTO1400 140 IFT=-1THENRETURN 150 IFQ=1THENV(C)=V(C)+100^T:IFT=3THENW=C 160 IFQ=-1THENV(C)=V(C)+10*100^(T-1):IFT=3THENB=C 170 RETURN 180 T=0:FORI=0TO3:IFG(X+I,Y)=QTHENT=T+1:GOTO200 190 IFG(X+I,Y)=-QTHENT=-1:I=3 200 NEXTI 210 GOTO140 220 FORJ=1TO4:T=0:FORI=0TO3 230 IFG(C,J+I)=QTHENT=T+1:GOTO250 240 IFG(C,J+I)=-QTHENT=-1:I=3 250 NEXTI:GOSUB140:IFT=0THENJ=4 260 NEXTJ:RETURN 270 T=0:FORI=0TO3:IFG(X+I,Y+I)=QTHENT=T+1:GOTO290 280 IFG(X+I,Y+I)=-QTHENT=-1:I=3 290 NEXTI:GOTO140 300 T=0:FORI=0TO3:IFG(X+I,Y-I)=QTHENT=T+1:GOTO320 310 IFG(X+I,Y-I)=-QTHENT=-1:I=3 320 NEXTI:GOTO140 330 PRINT"[144] HMM, LET'S SEE... " 340 IFMOVE=1ORMOVE=0THENC=INT(7*RND(0))+1:W=0:GOTO1320 350 FORI=1TO7:V(I)=0:NEXTI:W=0:B=0:IFN(1)=8THENV(1)=-100:GOTO400 360 C=1:X=1:Y=N(1):Q=1:GOSUB180:Q=-1:GOSUB180 370 GOSUB220:Q=-Q:GOSUB220 380 IFN(1)<5THENGOSUB270:Q=-Q:GOSUB270 390 IFN(1)>3THENGOSUB300:Q=-Q:GOSUB300 400 IFN(2)=8THENV(2)=-100:GOTO500 410 C=2:Y=N(2):FORX=1TO2:GOSUB180:NEXTX 420 Q=-Q:FORX=1TO2:GOSUB180:NEXTX 430 GOSUB220:Q=-Q:GOSUB220 440 IFN(2)<2ORN(2)>5THEN460 450 X=1:Y=N(2)-1:GOSUB270:Q=-Q:GOSUB270 460 IFN(2)<5THENX=2:Y=N(2):GOSUB270:Q=-Q:GOSUB270 470 IFN(2)>6ORN(2)<3THEN490 480 X=1:Y=N(2)+1:GOSUB300:Q=-Q:GOSUB300 490 IFN(2)>3THENX=2:Y=N(2):GOSUB300:Q=-Q:GOSUB300 500 IFN(3)=8THENV(3)=-100:GOTO640 510 C=3:Y=N(3):FORX=1TO3:GOSUB180:NEXTX 520 Q=-Q:FORX=1TO3:GOSUB180:NEXTX 530 GOSUB220:Q=-Q:GOSUB220 540 IFN(3)<3ORN(3)>6THEN560 550 X=1:Y=N(3)-2:GOSUB270:Q=-Q:GOSUB270 560 IFN(3)<2ORN(3)>5THEN580 570 X=2:Y=N(3)-1:GOSUB270:Q=-Q:GOSUB270 580 IFN(3)<5THENX=3:Y=N(3):GOSUB270:Q=-Q:GOSUB270 590 IFN(3)<2ORN(3)>5THEN610 600 X=1:Y=N(3)+2:GOSUB300:Q=-Q:GOSUB300 610 IFN(3)<3ORN(3)>6THEN630 620 X=2:Y=N(3)+1:GOSUB300:Q=-Q:GOSUB300 630 IFN(3)>3THENX=3:Y=N(3):GOSUB300:Q=-Q:GOSUB300 640 IFN(4)=8THENV(4)=-100:GOTO820 650 C=4:Y=N(4):FORX=1TO4:GOSUB180:NEXTX 660 Q=-Q:FORX=1TO4:GOSUB180:NEXTX 670 GOSUB220:Q=-Q:GOSUB220 680 IFN(4)<4THEN700 690 X=1:Y=N(4)-3:GOSUB270:Q=-Q:GOSUB270 700 IFN(4)<3ORN(4)>6THEN720 710 X=2:Y=N(4)-2:GOSUB270:Q=-Q:GOSUB270 720 IFN(4)<2ORN(4)>5THEN740 730 X=3:Y=N(4)-1:GOSUB270:Q=-Q:GOSUB270 740 IFN(4)<5THENX=4:Y=N(4):GOSUB270:Q=-Q:GOSUB270 750 IFN(4)>4THEN770 760 X=1:Y=N(4)+3:GOSUB300:Q=-Q:GOSUB300 770 IFN(4)<2ORN(4)>5THEN790 780 X=2:Y=N(4)+2:GOSUB300:Q=-Q:GOSUB300 790 IFN(4)<3ORN(4)>6THEN810 800 X=3:Y=N(4)+1:GOSUB300:Q=-Q:GOSUB300 810 IFN(4)>3THENX=4:Y=N(4):GOSUB300:Q=-Q:GOSUB300 820 IFN(5)=8THENV(5)=-100:GOTO980 830 C=5:Y=N(5):FORX=2TO4:GOSUB180:NEXTX 840 Q=-Q:FORX=2TO4:GOSUB180:NEXTX 850 GOSUB220:Q=-Q:GOSUB220 860 IFN(5)<4THEN880 870 X=2:Y=N(5)-3:GOSUB270:Q=-Q:GOSUB270 880 IFN(5)<3ORN(5)>6THEN900 890 X=3:Y=N(5)-2:GOSUB270:Q=-Q:GOSUB270 900 IFN(5)<2ORN(5)>5THEN920 910 X=4:Y=N(5)-1:GOSUB270:Q=-Q:GOSUB270 920 IFN(5)>4THEN940 930 X=2:Y=N(5)+3:GOSUB300:Q=-Q:GOSUB300 940 IFN(5)<2ORN(5)>5THEN960 950 X=3:Y=N(5)+2:GOSUB300:Q=-Q:GOSUB300 960 IFN(5)<3ORN(5)>6THEN980 970 X=4:Y=N(5)+1:GOSUB300:Q=-Q:GOSUB300 980 IFN(6)=8THENV(6)=-100:GOTO1100 990 C=6:Y=N(6):FORX=3TO4:GOSUB180:NEXTX 1000 Q=-Q:FORX=3TO4:GOSUB180:NEXTX 1010 GOSUB220:Q=-Q:GOSUB220 1020 IFN(6)<4THEN1040 1030 X=3:Y=N(6)-3:GOSUB270:Q=-Q:GOSUB270 1040 IFN(6)<3ORN(6)>6THEN1060 1050 X=4:Y=N(6)-2:GOSUB270:Q=-Q:GOSUB270 1060 IFN(6)>4THEN1080 1070 X=3:Y=N(6)+3:GOSUB300:Q=-Q:GOSUB300 1080 IFN(6)<2ORN(6)>5THEN1100 1090 X=4:Y=N(6)+2:GOSUB300:Q=-Q:GOSUB300 1100 IFN(7)=8THENV(7)=-100:GOTO1170 1110 C=7:X=4:Y=N(7):GOSUB180:Q=-Q:GOSUB180 1120 GOSUB220:Q=-Q:GOSUB220 1130 IFN(7)<4THEN1150 1140 X=4:Y=N(7)-3:GOSUB270:Q=-Q:GOSUB270 1150 IFN(7)>4THEN1170 1160 X=4:Y=N(7)+3:GOSUB300:Q=-Q:GOSUB300 1170 IFW<>0THENC=W:GOTO1320 1180 IFB<>0THENC=B:GOTO1320 1190 C=1:FORI=2TO7 1200 IFV(I)>V(C)THENC=I 1210 NEXTI 1220 IFV(C)<-90ORLE$="A"ORN(C)=7THEN1320 1230 N(C)=N(C)+1:G(C,N(C))=-1:Q=-1 1240 GOSUB2110:G(C,N(C))=0:N(C)=N(C)-1 1250 IFW=0THEN1270 1260 W=0:V(C)=-95:GOTO1190 1270 IFLE$="P"THEN1320 1280 N(C)=N(C)+1:G(C,N(C))=1:Q=1 1290 GOSUB2110:G(C,N(C))=0:N(C)=N(C)-1 1300 IFW=0THEN1320 1310 W=0:V(C)=-91:GOTO1190 1320 PRINT"[144] COMPUTER PLAYS";C 1330 PRINT"":FORI=1TO15-2*N(C):PRINT"";:NEXTI:PRINTTAB(C+C+10)"[144] " 1340 HF=5:GOSUB2440 1350 G(C,N(C))=1:N(C)=N(C)+1 1360 IFW<>0THENGOSUB2490 1370 IFW<>0THENPRINT"":PRINT" COMPUTER WINS!!!":GOTO1830 1380 PRINT"":MOVE=MOVE+1:IFMOVE=49THEN1820 1390 GOTO1600 1400 POKE53281,5:PRINT"[147]":GOSUB1870 1410 PRINT"[147]" 1420 PRINTTAB(11)"[176][195][178][195][178][195][178][195][178][195][178][195][178][195][174]" 1430 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 1440 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 1450 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 1460 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 1470 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 1480 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 1490 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 1500 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 1510 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 1520 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 1530 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 1540 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 1550 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 1560 PRINTTAB(11)"[173][195][177][195][177][195][177][195][177][195][177][195][177][195][189]" 1570 PRINTTAB(11)" 1 2 3 4 5 6 7":PRINT 1580 PLAYER=-PLAYER 1590 IFPLAYER=1THEN1700 1600 PRINT" RED, WHICH COLUMN? [157][157]"; 1610 GETC$:IFC$<>""THEN1610 1620 GETC$:IFC$<"1"ORC$>"7"THEN1620 1630 C=VAL(C$):PRINTC:IFN(C)=8THENPRINT"THAT COLUMN IS FULL!":GOSUB1910:GOTO1600 1640 PRINT"":FORI=1TO15-2*N(C):PRINT"";:NEXTI:PRINTTAB(C+C+10)" " 1650 HF=25:GOSUB2440 1660 G(C,N(C))=-1 1670 Q=-1:GOSUB2050:IFW=1THEN2280 1680 N(C)=N(C)+1 1690 PRINT"":MOVE=MOVE+1:IFMOVE=49THEN1820 1700 IFOP$="C"THEN330 1710 PRINT"[144]BLACK, WHICH COLUMN? [157][157]"; 1720 GETC$:IFC$<>""THEN1720 1730 GETC$:IFC$<"1"ORC$>"7"THEN1730 1740 C=VAL(C$):PRINTC:IFN(C)=8THENPRINT"THAT COLUMN IS FULL!":GOSUB1910:GOTO1710 1750 PRINT"":FORI=1TO15-2*N(C):PRINT"";:NEXTI:PRINTTAB(C+C+10)"[144] " 1760 HF=5:GOSUB2440 1770 G(C,N(C))=1 1780 Q=1:GOSUB2050:IFW=1THEN2300 1790 N(C)=N(C)+1 1800 PRINT"":MOVE=MOVE+1:IFMOVE=49THEN1820 1810 GOTO1600 1820 PRINT"THE GAME IS A DRAW. NOBODY WINS." 1830 PRINT" DO YOU WANT TO PLAY AGAIN?" 1840 GETA$:IFA$="Y"THEN1400 1850 IFA$="N"THENPRINT" LET'S PLAY AGAIN REAL SOON!":END 1860 GOTO1840 1870 FORI=1TO7:N(I)=1 1880 FORJ=1TO7:G(I,J)=0 1890 NEXTJ,I:MOVE=0:W=0 1900 RETURN 1910 FORI=1TO1500:NEXTI:PRINT"[145][145] " 1920 PRINT" ":PRINT"[145][145]";:RETURN 1930 PRINT"[147]" 1940 PRINTTAB(13)"FOUR-IN-A-ROW" 1950 PRINT"DO YOU WANT INSTRUCTIONS?[145]" 1960 GETOP$:IFOP$="Y"THEN2320 1970 IFOP$<>"N"THEN1960 1980 PRINT"DO YOU WANT TO PLAY AGAINST THE COMPUTEROR ANOTHER PLAYER (C OR P)?"; 1990 GETOP$:IFOP$="P"THENRETURN 2000 IFOP$<>"C"THEN1990 2010 PRINT" COMPUTER" 2020 PRINT"LEVEL OF PLAY - AMATEUR, PRO OR WORLD CLASS (A,P OR W)?" 2030 GETLE$:IFLE$="A"ORLE$="P"ORLE$="W"THENRETURN 2040 GOTO2030 2050 REM TEST FOR WIN BEFORE N(C) CHANGES 2060 W=0 2070 IFN(C)<4THEN2110 2080 J=0:FORI=0TO3 2090 J=J+G(C,N(C)-I) 2100 NEXTI:IFJ=4*QTHENW=1:RETURN 2110 J=0:FORI=1TO7 2120 IFG(I,N(C))=QTHENJ=J+1 2130 IFG(I,N(C))<>QTHENJ=0 2140 IFJ=4THENW=1 2150 NEXTI:IFW=1THENRETURN 2160 J=0:X=N(C)-C:FORI=1TO7 2170 IF(X+I)<1OR(X+I)>7THEN2210 2180 IFG(I,X+I)=QTHENJ=J+1 2190 IFG(I,X+I)<>QTHENJ=0 2200 IFJ=4THENW=1 2210 NEXTI:IFW=1THENRETURN 2220 J=0:X=N(C)+C:FORI=1TO7 2230 IF(X-I)<1OR(X-I)>7THEN2270 2240 IFG(I,X-I)=QTHENJ=J+1 2250 IFG(I,X-I)<>QTHENJ=0 2260 IFJ=4THENW=1 2270 NEXTI:RETURN 2280 PRINT"":PRINT" RED WINS!!!" 2290 GOSUB2490:GOTO1830 2300 PRINT"":PRINT" BLACK WINS!!!" 2310 GOSUB2490:GOTO1830 2320 PRINT"THIS IS THE SAME AS THE GAME CALLED" 2330 PRINT"CONNECT-FOUR. IT IS LIKE TIC-TAC-TOE," 2340 PRINT"BUT YOU MUST GET 4 IN A ROW. EACH PLAY" 2350 PRINT"MUST BE THE LOWEST AVAILABLE ROW IN A" 2360 PRINT"COLUMN. IN THE PARKER BROS. VERSION," 2370 PRINT"THE GAME IS PLAYED WITH CHECKERS THAT" 2380 PRINT"SLIDE DOWN A SEVEN COLUMN DEVICE AND" 2390 PRINT"THE COLOR OF THE CHECKERS SHOWS THROUGH" 2400 PRINT"HOLES IN THE DEVICE." 2410 PRINT:PRINT" PRESS ANY KEY" 2420 GETOP$:IFOP$=""THEN2420 2430 PRINT"[147]":GOTO1980 2440 SO=54272:FORCL=SOTOSO+24:POKECL,0:NEXT 2450 POKESO+24,15:POKESO+5,48:POKESO+6,248:POKESO+1,HF:POKESO+4,33 2460 FORCL=1TO200:NEXTCL 2470 POKESO+24,0:POKESO+4,32 2480 RETURN 2490 SO=54272:FORCL=SOTOSO+24:POKECL,0:NEXTCL 2500 POKESO+5,85:POKESO+6,85:POKESO+12,85:POKESO+13,85:POKESO+24,15 2510 POKESO+4,33:POKESO+11,17 2520 FORI=1TO6:READH1,L1,H2,L2:POKESO+1,H1:POKESO,L1:POKESO+8,H2:POKESO+7,L2 2530 IFH1=50THENFORCL=1TO200:NEXTCL 2540 FORCL=1TO100:NEXTCL:NEXTI 2550 POKESO+4,32:POKESO+11,16:FORCL=1TO500:NEXTCL:RESTORE:RETURN 2560 DATA25,30,18,209,33,135,25,30,42,62,31,165,50,60,37,162,42,62,31,165,50,60 2570 DATA37,162