2 PRINTCHR$(147)"WOULD YOU LIKE INSTRUCTIONS (Y/N)? 4 [161] A$: [139] A$[179][177] "Y" [175] A$[179][177]"N" [167] 4 6 [139] A$[178]"N" [167] 56 8 [153]"INSTRUCTIONS ON SCREEN OR PRINTER (S/P)? 10 GET B$: IF B$<> "S" AND B$<>"P" THEN 10 12 IF B$="S"THEN D=3 14 IF B$="P" THEN D=4 16 OPEN D,D 18 PRINT#D," 20 [152]D,"FOUR-IN-A-ROW BY SOL STEINBERG 22 PRINT#D," 24 [152]D,"RUN IT RIGHT: C-64 26 PRINT#D," 28 [152]D,"FOUR-IN-A-ROW, A COMPUTER VERSION OF 30 PRINT#D,"CONNECT FOUR, RESEMBLES TIC-TAC-TOE BUT 32 [152]D,"IS MORE DIFFICULT, BECAUSE THE PLAYING 34 PRINT#D,"BOARD IS SEVEN-BY-SEVEN. YOU CAN PLAY 36 [152]D,"AGAINST THE COMPUTER AT YOUR CHOICE OF 38 PRINT#D,"THREE DIFFICULTY LEVELS. 40 [152]D," 42 PRINT#D,"TO TAKE A TURN, CHOOSE A COLUMN AND THE 44 [152]D,"COMPUTER FILLS THE LOWEST UNOCCUPIED 46 PRINT#D,"SQUARE IN THAT COLUMN WITH YOUR COLOR. 48 [152]D,"YOU WIN WHEN YOU ARE THE FIRST ONE TO 50 PRINT#D,"OCCUPY FOUR SQUARES IN A LINE, HORIZON- 52 [152]D,"TALLY, VERTICALLY OR DIAGONALLY. 54 PRINT#D,"":CLOSED 56 PRINT"PRESS ANY KEY TO BEGIN THE PROGRAM..." 58 GET E$:IF E$="" THEN 58 60 CLR 62 REM FOUR-IN-A ROW BY SOL STEINBERG 64 DIMV(7),G(7,7),N(7) 66 GOSUB428 68 PLAYER=1:GOTO322 70 IFT=-1THENRETURN 72 IFQ=1THENV(C)=V(C)+100^T:IFT=3THENW=C 74 IFQ=-1THENV(C)=V(C)+10*100^(T-1):IFT=3THENB=C 76 RETURN 78 T=0:FORI=0TO3:IFG(X+I,Y)=QTHENT=T+1:GOTO82 80 IFG(X+I,Y)=-QTHENT=-1:I=3 82 NEXTI 84 GOTO70 86 FORJ=1TO4:T=0:FORI=0TO3 88 IFG(C,J+I)=QTHENT=T+1:GOTO92 90 IFG(C,J+I)=-QTHENT=-1:I=3 92 NEXTI:GOSUB70:IFT=0THENJ=4 94 NEXTJ:RETURN 96 T=0:FORI=0TO3:IFG(X+I,Y+I)=QTHENT=T+1:GOTO100 98 IFG(X+I,Y+I)=-QTHENT=-1:I=3 100 NEXTI:GOTO70 102 T=0:FORI=0TO3:IFG(X+I,Y-I)=QTHENT=T+1:GOTO106 104 IFG(X+I,Y-I)=-QTHENT=-1:I=3 106 NEXTI:GOTO70 108 PRINT"[144] HMM, LET'S SEE... " 110 IFMOVE=1ORMOVE=0THENC=INT(7*RND(0))+1:W=0:GOTO306 112 FORI=1TO7:V(I)=0:NEXTI:W=0:B=0:IFN(1)=8THENV(1)=-100:GOTO122 114 C=1:X=1:Y=N(1):Q=1:GOSUB78:Q=-1:GOSUB78 116 GOSUB86:Q=-Q:GOSUB86 118 IFN(1)<5THENGOSUB96:Q=-Q:GOSUB96 120 IFN(1)>3THENGOSUB102:Q=-Q:GOSUB102 122 IFN(2)=8THENV(2)=-100:GOTO142 124 C=2:Y=N(2):FORX=1TO2:GOSUB78:NEXTX 126 Q=-Q:FORX=1TO2:GOSUB78:NEXTX 128 GOSUB86:Q=-Q:GOSUB86 130 IFN(2)<2ORN(2)>5THEN134 132 X=1:Y=N(2)-1:GOSUB96:Q=-Q:GOSUB96 134 IFN(2)<5THENX=2:Y=N(2):GOSUB96:Q=-Q:GOSUB96 136 IFN(2)>6ORN(2)<3THEN140 138 X=1:Y=N(2)+1:GOSUB102:Q=-Q:GOSUB102 140 IFN(2)>3THENX=2:Y=N(2):GOSUB102:Q=-Q:GOSUB102 142 IFN(3)=8THENV(3)=-100:GOTO170 144 C=3:Y=N(3):FORX=1TO3:GOSUB78:NEXTX 146 Q=-Q:FORX=1TO3:GOSUB78:NEXTX 148 GOSUB86:Q=-Q:GOSUB86 150 IFN(3)<3ORN(3)>6THEN154 152 X=1:Y=N(3)-2:GOSUB96:Q=-Q:GOSUB96 154 IFN(3)<2ORN(3)>5THEN158 156 X=2:Y=N(3)-1:GOSUB96:Q=-Q:GOSUB96 158 IFN(3)<5THENX=3:Y=N(3):GOSUB96:Q=-Q:GOSUB96 160 IFN(3)<2ORN(3)>5THEN164 162 X=1:Y=N(3)+2:GOSUB102:Q=-Q:GOSUB102 164 IFN(3)<3ORN(3)>6THEN168 166 X=2:Y=N(3)+1:GOSUB102:Q=-Q:GOSUB102 168 IFN(3)>3THENX=3:Y=N(3):GOSUB102:Q=-Q:GOSUB102 170 IFN(4)=8THENV(4)=-100:GOTO206 172 C=4:Y=N(4):FORX=1TO4:GOSUB78:NEXTX 174 Q=-Q:FORX=1TO4:GOSUB78:NEXTX 176 GOSUB86:Q=-Q:GOSUB86 178 IFN(4)<4THEN182 180 X=1:Y=N(4)-3:GOSUB96:Q=-Q:GOSUB96 182 IFN(4)<3ORN(4)>6THEN186 184 X=2:Y=N(4)-2:GOSUB96:Q=-Q:GOSUB96 186 IFN(4)<2ORN(4)>5THEN190 188 X=3:Y=N(4)-1:GOSUB96:Q=-Q:GOSUB96 190 IFN(4)<5THENX=4:Y=N(4):GOSUB96:Q=-Q:GOSUB96 192 IFN(4)>4THEN196 194 X=1:Y=N(4)+3:GOSUB102:Q=-Q:GOSUB102 196 IFN(4)<2ORN(4)>5THEN200 198 X=2:Y=N(4)+2:GOSUB102:Q=-Q:GOSUB102 200 IFN(4)<3ORN(4)>6THEN204 202 X=3:Y=N(4)+1:GOSUB102:Q=-Q:GOSUB102 204 IFN(4)>3THENX=4:Y=N(4):GOSUB102:Q=-Q:GOSUB102 206 IFN(5)=8THENV(5)=-100:GOTO238 208 C=5:Y=N(5):FORX=2TO4:GOSUB78:NEXTX 210 Q=-Q:FORX=2TO4:GOSUB78:NEXTX 212 GOSUB86:Q=-Q:GOSUB86 214 IFN(5)<4THEN218 216 X=2:Y=N(5)-3:GOSUB96:Q=-Q:GOSUB96 218 IFN(5)<3ORN(5)>6THEN222 220 X=3:Y=N(5)-2:GOSUB96:Q=-Q:GOSUB96 222 IFN(5)<2ORN(5)>5THEN226 224 X=4:Y=N(5)-1:GOSUB96:Q=-Q:GOSUB96 226 IFN(5)>4THEN230 228 X=2:Y=N(5)+3:GOSUB102:Q=-Q:GOSUB102 230 IFN(5)<2ORN(5)>5THEN234 232 X=3:Y=N(5)+2:GOSUB102:Q=-Q:GOSUB102 234 IFN(5)<3ORN(5)>6THEN238 236 X=4:Y=N(5)+1:GOSUB102:Q=-Q:GOSUB102 238 IFN(6)=8THENV(6)=-100:GOTO262 240 C=6:Y=N(6):FORX=3TO4:GOSUB78:NEXTX 242 Q=-Q:FORX=3TO4:GOSUB78:NEXTX 244 GOSUB86:Q=-Q:GOSUB86 246 IFN(6)<4THEN250 248 X=3:Y=N(6)-3:GOSUB96:Q=-Q:GOSUB96 250 IFN(6)<3ORN(6)>6THEN254 252 X=4:Y=N(6)-2:GOSUB96:Q=-Q:GOSUB96 254 IFN(6)>4THEN258 256 X=3:Y=N(6)+3:GOSUB102:Q=-Q:GOSUB102 258 IFN(6)<2ORN(6)>5THEN262 260 X=4:Y=N(6)+2:GOSUB102:Q=-Q:GOSUB102 262 IFN(7)=8THENV(7)=-100:GOTO276 264 C=7:X=4:Y=N(7):GOSUB78:Q=-Q:GOSUB78 266 GOSUB86:Q=-Q:GOSUB86 268 IFN(7)<4THEN272 270 X=4:Y=N(7)-3:GOSUB96:Q=-Q:GOSUB96 272 IFN(7)>4THEN276 274 X=4:Y=N(7)+3:GOSUB102:Q=-Q:GOSUB102 276 IFW<>0THENC=W:GOTO306 278 IFB<>0THENC=B:GOTO306 280 C=1:FORI=2TO7 282 IFV(I)>V(C)THENC=I 284 NEXTI 286 IFV(C)<-90ORLE$="A"ORN(C)=7THEN306 288 N(C)=N(C)+1:G(C,N(C))=-1:Q=-1 290 GOSUB464:G(C,N(C))=0:N(C)=N(C)-1 292 IFW=0THEN296 294 W=0:V(C)=-95:GOTO280 296 IFLE$="P"THEN306 298 N(C)=N(C)+1:G(C,N(C))=1:Q=1 300 GOSUB464:G(C,N(C))=0:N(C)=N(C)-1 302 IFW=0THEN306 304 W=0:V(C)=-91:GOTO280 306 PRINT"[144] COMPUTER PLAYS";C 308 PRINT"":FORI=1TO15-2*N(C):PRINT"";:NEXTI:PRINTTAB(C+C+10)"[144] " 310 HF=5:GOSUB530 312 G(C,N(C))=1:N(C)=N(C)+1 314 IFW<>0THENGOSUB540 316 IFW<>0THENPRINT"":PRINT" COMPUTER WINS!!!":GOTO408 318 PRINT"":MOVE=MOVE+1:IFMOVE=49THEN406 320 GOTO362 322 POKE53281,5:PRINT"[147]":GOSUB416 324 PRINT"[147]" 326 PRINTTAB(11)"[176][195][178][195][178][195][178][195][178][195][178][195][178][195][174]" 328 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 330 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 332 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 334 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 336 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 338 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 340 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 342 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 344 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 346 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 348 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 350 PRINTTAB(11)"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 352 PRINTTAB(11)"[194][215][194][215][194][215][194][215][194][215][194][215][194][215][194]" 354 PRINTTAB(11)"[173][195][177][195][177][195][177][195][177][195][177][195][177][195][189]" 356 PRINTTAB(11)" 1 2 3 4 5 6 7":PRINT 358 PLAYER=-PLAYER 360 IFPLAYER=1THEN382 362 PRINT" RED, WHICH COLUMN? [157][157]"; 364 GETC$:IFC$<>""THEN364 366 GETC$:IFC$<"1"ORC$>"7"THEN366 368 C=VAL(C$):PRINTC:IFN(C)=8THENPRINT"THAT COLUMN IS FULL!":GOSUB424:GOTO362 370 PRINT"":FORI=1TO15-2*N(C):PRINT"";:NEXTI:PRINTTAB(C+C+10)" " 372 HF=25:GOSUB530 374 G(C,N(C))=-1 376 Q=-1:GOSUB452:IFW=1THEN498 378 N(C)=N(C)+1 380 PRINT"":MOVE=MOVE+1:IFMOVE=49THEN406 382 IFOP$="C"THEN108 384 PRINT"[144]BLACK, WHICH COLUMN? [157][157]"; 386 GETC$:IFC$<>""THEN386 388 GETC$:IFC$<"1"ORC$>"7"THEN388 390 C=VAL(C$):PRINTC:IFN(C)=8THENPRINT"THAT COLUMN IS FULL!":GOSUB424:GOTO384 392 PRINT"":FORI=1TO15-2*N(C):PRINT"";:NEXTI:PRINTTAB(C+C+10)"[144] " 394 HF=5:GOSUB530 396 G(C,N(C))=1 398 Q=1:GOSUB452:IFW=1THEN502 400 N(C)=N(C)+1 402 PRINT"":MOVE=MOVE+1:IFMOVE=49THEN406 404 GOTO362 406 PRINT"THE GAME IS A DRAW. NOBODY WINS." 408 PRINT" DO YOU WANT TO PLAY AGAIN?" 410 GETA$:IFA$="Y"THEN322 412 IFA$="N"THENPRINT" LET'S PLAY AGAIN REAL SOON!":END 414 GOTO410 416 FORI=1TO7:N(I)=1 418 FORJ=1TO7:G(I,J)=0 420 NEXTJ,I:MOVE=0:W=0 422 RETURN 424 FORI=1TO1500:NEXTI:PRINT"[145][145] " 426 PRINT" ":PRINT"[145][145]";:RETURN 428 PRINT"[147]" 430 PRINTTAB(13)"FOUR-IN-A-ROW" 432 PRINT"DO YOU WANT INSTRUCTIONS?[145]" 434 GETOP$:IFOP$="Y"THEN506 436 IFOP$<>"N"THEN434 438 PRINT"DO YOU WANT TO PLAY AGAINST THE COMPUTEROR ANOTHER PLAYER (C OR P)?"; 440 GETOP$:IFOP$="P"THENRETURN 442 IFOP$<>"C"THEN440 444 PRINT" COMPUTER" 446 PRINT"LEVEL OF PLAY - AMATEUR, PRO OR WORLD CLASS (A,P OR W)?" 448 GETLE$:IFLE$="A"ORLE$="P"ORLE$="W"THENRETURN 450 GOTO448 452 REM TEST FOR WIN BEFORE N(C) CHANGES 454 W=0 456 IFN(C)<4THEN464 458 J=0:FORI=0TO3 460 J=J+G(C,N(C)-I) 462 NEXTI:IFJ=4*QTHENW=1:RETURN 464 J=0:FORI=1TO7 466 IFG(I,N(C))=QTHENJ=J+1 468 IFG(I,N(C))<>QTHENJ=0 470 IFJ=4THENW=1 472 NEXTI:IFW=1THENRETURN 474 J=0:X=N(C)-C:FORI=1TO7 476 IF(X+I)<1OR(X+I)>7THEN484 478 IFG(I,X+I)=QTHENJ=J+1 480 IFG(I,X+I)<>QTHENJ=0 482 IFJ=4THENW=1 484 NEXTI:IFW=1THENRETURN 486 J=0:X=N(C)+C:FORI=1TO7 488 IF(X-I)<1OR(X-I)>7THEN496 490 IFG(I,X-I)=QTHENJ=J+1 492 IFG(I,X-I)<>QTHENJ=0 494 IFJ=4THENW=1 496 NEXTI:RETURN 498 PRINT"":PRINT" RED WINS!!!" 500 GOSUB540:GOTO408 502 PRINT"":PRINT" BLACK WINS!!!" 504 GOSUB540:GOTO408 506 PRINT"THIS IS THE SAME AS THE GAME CALLED" 508 PRINT"CONNECT-FOUR. IT IS LIKE TIC-TAC-TOE," 510 PRINT"BUT YOU MUST GET 4 IN A ROW. EACH PLAY" 512 PRINT"MUST BE THE LOWEST AVAILABLE ROW IN A" 514 PRINT"COLUMN. IN THE PARKER BROS. VERSION," 516 PRINT"THE GAME IS PLAYED WITH CHECKERS THAT" 518 PRINT"SLIDE DOWN A SEVEN COLUMN DEVICE AND" 520 PRINT"THE COLOR OF THE CHECKERS SHOWS THROUGH" 522 PRINT"HOLES IN THE DEVICE." 524 PRINT:PRINT" PRESS ANY KEY" 526 GETOP$:IFOP$=""THEN526 528 PRINT"[147]":GOTO438 530 SO=54272:FORCL=SOTOSO+24:POKECL,0:NEXT 532 POKESO+24,15:POKESO+5,48:POKESO+6,248:POKESO+1,HF:POKESO+4,33 534 FORCL=1TO200:NEXTCL 536 POKESO+24,0:POKESO+4,32 538 RETURN 540 SO=54272:FORCL=SOTOSO+24:POKECL,0:NEXTCL 542 POKESO+5,85:POKESO+6,85:POKESO+12,85:POKESO+13,85:POKESO+24,15 544 POKESO+4,33:POKESO+11,17 546 FORI=1TO6:READH1,L1,H2,L2:POKESO+1,H1:POKESO,L1:POKESO+8,H2:POKESO+7,L2 548 IFH1=50THENFORCL=1TO200:NEXTCL 550 FORCL=1TO100:NEXTCL:NEXTI 552 POKESO+4,32:POKESO+11,16:FORCL=1TO500:NEXTCL:RESTORE:RETURN 554 DATA25,30,18,209,33,135,25,30,42,62,31,165,50,60,37,162,42,62,31,165,50,60 556 DATA37,162