1 ' NUMBER.BA by Bob Hoffman [75715,1475] 2 ' revised 11/26/87 by Ralph Sherman [73720,3433] 3 FORX=1TOVAL(RIGHT$(TIME$,1)):Y=RND(1):NEXTX 5 DEFINTA-Y:DIMAA(6,6),AB(6,6):F$="###" 6 CLS:N$="0123456789":M$="NUMBERS":ES$=CHR$(27):WB$=ES$+"p":BW$=ES$+"q" 8 ' 9 ' print title screen 10 FORA=52TO229:IFAMOD40=29THENA=A+23 13 IFA<240THENPRINT@A,MID$(N$,RND(1)*10+1,1); 16 NEXTA 20 S$=SPACE$(9):PRINT@96,S$:PRINT@136," ";WB$;M$;BW$;" ":PRINT@176,S$:SOUND0,1 28 ' 29 ' change title screen while randomizing RND function 30 X=VAL(RIGHT$(TIME$,2))+VAL(MID$(DATE$,4,2)):FORY=0TOX 32 X1=7*Y/X+.5:PRINT@137,LEFT$(M$,X1) 35 R=RND(1):NEXTY 40 SC(1)=0:SC(2)=0:FORX=0TO6:FORY=0TO6 50 R=RND(1)*10:IFR>9THEN50 60 AB(X,Y)=R:AA(X,Y)=R+48:R=RND(1)*7:IFR=5THENAA(X,Y)=63 68 ' 69 ' reflect progress in title screen 70 NEXTY:PRINT@143-X,WB$;RIGHT$(M$,X+1);BW$:NEXTX:GOSUB580 75 X1=3:Y1=3 78 ' 79 ' wipe screen clear from top to bottom 80 FORX=52TO212STEP40:PRINT@X,SPACE$(18):GOSUB580:NEXTX:GOSUB580 85 ' 86 ' skip input of player names if continuing a match 87 IFF1=1THEN110 88 ' 89 ' input names of players : PP = # human players 90 PRINT@40,"One or two players? "; 92 PP$=INKEY$ 94 IFPP$="1"ORPP$="2"THENPRINT@60,PP$:PP=VAL(PP$):GOSUB570ELSER=RND(1):GOTO92 100 IFPP=1THENNA$(1)="You":NA$(2)="Model 100":GOTO110 103 FORX=1TO2:PRINT:PRINT"Name of ";WB$; 105 IFX=1THENPRINTCHR$(155);CHR$(154);ELSEPRINTCHR$(152);CHR$(153); 106 PRINTBW$;" player";:INPUTNA$(X):IFLEN(NA$(X))>12THENNA$(X)=LEFT$(NA$(X),12) 107 NEXTX 108 ' 109 ' randomly decide who plays first 110 CLS:P1=RND(1)*2+1:PRINT@132-(LEN(NA$(P1)))/2,NA$(P1);" will play first.":GOSUB570 117 ' 118 ' print array of numerals; use reverse video for ``cursor'' 119 CLS:PRINT@0,"";:FORX=0TO6:FORY=0TO6 120 IFX1=XANDY1=YTHENPRINTWB$; 130 PRINTCHR$(AA(X,Y));BW$; 150 PRINT" "; 160 NEXTY:PRINT:NEXTX 170 GOSUB620:GOSUB320:PRINT@28,"SCORE" 180 GOSUB600 192 PRINT@280,WB$;:IFP1=1THENPRINTCHR$(155);CHR$(154);ELSEPRINTCHR$(152);CHR$(153); 194 PRINTBW$;" ";:IFNA$(P1)="You"THENPRINT"Your turn...";SPACE$(23);:GOTO198 196 PRINTNA$(P1)"'s turn...";SPACE$(26-LEN(NA$(P1))); 198 PRINT@0,"";:IFNA$(P1)="Model 100"THENGOSUB450:GOTO210 200 IK$=INKEY$:IFIK$=""THEN200ELSEIFIK$=CHR$(27)THENMENU 210 IFIK$=CHR$(13)ANDAA(X1,Y1)<>45THENSC(P1)=SC(P1)+AB(X1,Y1):GOSUB550:GOSUB430:PRINT@K,CHR$(AA(X1,Y1)):GOSUB530 220 GOSUB430:Y2=Y1:X2=X1:IFP1=2THEN270 230 IFIK$=CHR$(29)THENY1=Y1-1:IFY1<0THENY1=0 240 IFIK$=CHR$(28)THENY1=Y1+1:IFY1>6THENY1=6 250 GOSUB440:PRINT@K,CHR$(AA(X2,Y2)):PRINTWB$;:PRINT@K1,CHR$(AA(X1,Y1)):PRINTBW$; 260 GOTO170 270 IFIK$=CHR$(30)THENX1=X1-1:IFX1<0THENX1=0 280 IFIK$=CHR$(31)THENX1=X1+1:IFX1>6THENX1=0 290 GOTO250 320 IFP1=1THENFORX=0TO6:IFAA(X1,X)<>45THENRETURN 330 IFP1=2THENFORX=0TO6:IFAA(X,Y1)<>45THENRETURN 340 NEXTX:GOSUB600 343 ' 344 ' determine who won; add to GAMES tally 345 IFSC(1)>SC(2)THENP0$=NA$(1)+" won!":G1=G1+1 350 IFSC(2)>SC(1)THENP0$=NA$(2)+" won!":G2=G2+1 360 IFSC(1)=SC(2)THENP0$="Tie game!" 370 SOUND500,1:PRINT@28,"SCORE"; 375 FORX=1TO3:PRINT@280,SPACE$(39);:GOSUB570:PRINT@300-(LEN(P0$)/2),WB$;P0$;BW$;:GOSUB570:NEXTX 378 ' 379 ' play again? 380 GOSUB570:GOSUB570:GOSUB650:PRINT@280,SPACE$(39);:PRINT@302,"Play again (y/n)?"; 390 IK$=INPUT$(1):IFINSTR("yn",IK$)=0THEN390 400 IFIK$="y"THENLS=0:F1=1:GOTO6 410 MENU 428 ' 429 ' calculate value for PRINT@ for array of numerals 430 K=Y1*2+X1*40:RETURN 440 K1=Y1*2+X1*40:RETURN 448 ' 449 ' Model 100 strategy : first, read column of numbers 450 MM=0:FORX=0TO6:AC(X)=AB(X,Y1):NEXTX 454 ' 455 ' locate maximum (MM) 460 FORX=0TO6:IFAC(X)>=MMTHENMM=AC(X) 465 NEXTX 468 ' 469 ' if two or more positions are equal, select randomly 470 IFZ2<>0THEN490ELSEZ1=0:FORX=0TO6:IFAC(X)=MMTHENZ1=Z1+1:AD(Z1)=X 475 NEXTX 480 Z2=RND(1)*Z1+1 490 X2=AD(Z2):IFX2>X1THENIK$=CHR$(31) 495 IFX2 number 550 IFAA(X1,Y1)=63THENPRINT@K1,"";:PRINTUSING"#";AB(X1,Y1):GOSUB570 560 RETURN 568 ' 569 ' pauses - long and short 570 FORZT=1TO300:NEXTZT:RETURN 580 FORZT=1TO25:NEXTZT:RETURN 598 ' 599 ' print scores 600 PRINT@102,NA$(1):PRINT@116,"";:PRINTUSINGF$;SC(1);:PRINT@142,NA$(2):PRINT@156,""; 602 PRINTUSINGF$;SC(2);:PRINT@222,"previous move":PRINT@238,"";:PRINTUSING"#";LS;:RETURN 618 ' 619 'draw box around scoreboard 620 LINE(129,0)-(239,49),1,B:RETURN 648 ' 649 ' print GAMES tally 650 FORX=21TO39:FORY=0TO240STEP40:PRINT@X+Y," ";:NEXTY:NEXTX 655 GOSUB620:PRINT@28,"GAMES"; 660 PRINT@102,NA$(1):PRINT@116,"";:PRINTUSINGF$;G1;:PRINT@142,NA$(2):PRINT@156,"";:PRINTUSINGF$;G2; 670 RETURN