1000 ' MAXIT FROM PET 1010 ' ADAPTED TO IPM PC BY PATRICK LEABO 1020 ' 3-20-82 TUCSON ARIZONA 1021 REM M100 version 6/1/88.1 by Jay Holovacs 74756,413 1030 ' 1100 DEFINT A-Z:DATA 49,51,53,54,56,58,60,61 1110 GOSUB 3100'RANDOMIZE 1120 FOR N= 0 TO 7:READ NT(N):NEXT 1140 DIM BD(7,7),AV(64) 1150 CLS:PRINT "THE GAME OF MAXIT" 1160 PRINT "DO YOU WANT INSTRUCTIONS ? ";:GOSUB 3000:PRINT 1170 IF KS$="Y" OR KS$="y" THEN GOSUB 2210 1180 PRINT "1 OR 2 PLAYERS ?";:GOSUB 3000 1190 PRINT KS$:NP=VAL(KS$):PRINT 1200 IF NP=1 THEN 1240 1210 IF NP<>2 THEN 1180 1220 INPUT "WHAT IS YOUR NAME #1";P1$:P1$=LEFT$(P1$,6) 1230 PRINT :INPUT "WHAT IS YOUR NAME #2";P2$:P2$=LEFT$(P2$,6):GOTO 1250 1240 P2$= "M100":INPUT "WHAT IS YOUR NAME ";P1$:PRINT:P1$=LEFT$(P1$,6) 1250 CLS:GOSUB 2360 1260 GOSUB 3100'RANDOMIZE 1270 FOR K=1 TO 64:AV(K)= K:NEXT 1280 FOR K=64 TO 1 STEP -1:READ PC 1290 P1=1+INT(K*RND(1)) 1300 J=AV(P1)-1 1310 IF P10 THEN 1430 1470 PRINT @280,STRING$(39," ");:PRINT @280,;:ON 2+SGN(S2-S1) GOSUB 1510,1520,1530 1480 PRINT @280,STRING$(39," ");:PRINT @280,"DO YOU WANT TO PLAY AGAIN ?";:C$=INPUT$(1):PRINT C$ 1490 IF "Y"=C$ OR "y"=C$ THEN 1250 1500 MENU 1505 END 1510 PRINT @0,P1$;" WON BY ";STR$(S1-S2);" POINTS":RETURN 1520 PRINT @0,"IT'S A TIE !! ":RETURN 1530 PRINT @0,P2$;" WON BY ";STR$(S2-S1);" POINTS ":RETURN 1540 REM DRAW BOARD POSITION I,J IN MODE MD (1=RED,2=BLACK) 1550 PC=BD(I,J) 1560 LC=I*40+J*3 1590 IF PC=100 THEN PRINT @LC,"**";:C1=I:C2=J:GOTO 1620 1600 IF PC=-100 THEN PRINT @LC," ";:GOTO 1620 1610 PRINT @LC,RIGHT$(" "+STR$(PC),2); 1620 PRINT @LC+1,;:RETURN 1630 IF PL=2 THEN 1670 1640 FL= 600:FOR J=0 TO 7:FL=FL+BD(C1,J):NEXT 1650 IF FL=0 THEN RETURN 1660 NM$=P1$:DX=1:DY=0:GOSUB 1700:RETURN 1670 FL=600:FOR I=0 TO 7:FL=FL+BD(I,C2):NEXT 1680 IF FL=0 THEN RETURN 1690 NM$=P2$:DX=0:DY=1:GOSUB 1700:RETURN 1700 Y=C1:X=C2:FX=1 1710 IF NP=2 OR PL=1 THEN 1730 1720 PRINT:GOSUB 1970:PRINT @228,LEFT$(NM$+"'s ",11);:GOSUB 2060:GOTO 1880 1730 GOSUB 1970:ON FX GOTO 1740,1750 1740 PRINT:GOSUB 1970:PRINT @228,LEFT$(NM$+"'s ",11);:GOTO 1760 1750 PRINT " ":PRINT 1760 GOSUB 1980 1770 I=Y:J=X:GOSUB 1540:C$=INPUT$(1) 1775 IF C$=CHR$(27) THEN 1480 1780 IF C$<>" "THEN 1860 1790 OX=X:OY=Y 1800 Y=Y+DY:IF Y>7 THEN Y=0 1810 X=X+DX:IF X>7 THEN X=0 1820 PT=BD(Y,X):IF ABS(PT)=100 THEN 1800 1830 MD=1:I=OY:J=OX:GOSUB 1540 1840 MD=2:I=Y:J=X:GOSUB 1540 1850 GOTO 1770 1860 IF C$<>CHR$(13)THEN 1770 1870 IF ABS(BD(Y,X))=100 THEN 1770 1880 REM SCORE IT 1890 ' 1900 IF NP=1 AND PL=2 THEN MD=2:I=Y :J=X:GOSUB 1540:FOR DL=1 TO 1500:NEXT 1905 MD=1:I=C1:J=C2:BD(I,J)=-100:GOSUB 1540 1910 I=Y:J=X:PT=BD(I,J):BD(I,J)=100:GOSUB 1540 1920 IF PL=1 THEN S1=S1+PT 1930 IF PL=2 THEN S2=S2+PT 1940 GOSUB 1970 1950 PRINT @148,"LAST:";PT;" "; 1960 GOSUB 2000:RETURN 1970 RETURN'LOCATE 22,1:RETURN 1980 SOUND 1500,5:SOUND 1000,5:RETURN 2000 PRINT @68,P1$;":";STR$(S1):PRINT @108,P2$;":";STR$(S2):RETURN 2020 REM SCREEN INSTRUCTIONS 2050 RETURN 2059 ' COMPUTER PLAYER ALGORITHM 2060 MT=-100:GG=-1:FOR A1=0 TO 7:PC=BD(A1,C2):IF ABS(PC)=100 THEN 2200 2070 MX=-100:FOR A2=0 TO 7 2080 IF A2<>C2 THEN PK=BD(A1,A2):IF PK<>-100 AND PK>MX THEN MX=PK:SV=A 2090 NEXT A2 2100 IF MX<>-100 THEN 2120 2110 IF PC>MT THEN MT=PC:GG=A1:GOTO 2200 2120 IF GG<0 THEN GG=A1 2130 FOR A2=0 TO 7:PQ=BD(A2,SV):IF PQ=-100 OR A2=A1 THEN 2190 2140 MY=-100:FOR A3=0 TO 7:PW=BD(A2,A3):IF A3=SV THEN 2160 2150 IF ABS(PW)<>100 AND PW>MY THEN MY=PW 2160 NEXT A3 2170 IF MY=-100 THEN MY=0 2180 DT=PC-MX+PQ-MY:IF DT>MT THEN MT=DT:GG=A1 2190 NEXT A2 2200 NEXT A1:Y=GG:RETURN 2210 CLS:PRINT @15,"M A X I T" 2220 PRINT "The object of Maxit is to score as many":PRINT "points as possible between two players":PRINT"or one player against the computer." 2260 PRINT "You get points by using the space bar":PRINT"to move the cursor along the row or":PRINT"column marked ** and hitting RETURN":R$=INPUT$(1):CLS 2280 PRINT"Remember however that on the next move,":PRINT"your opponent gets to select from the":PRINT"row/colum that the marker is placed in, SO YOU MUST PLAN AHEAD CAREFULLY..." 2285 PRINT"Player 1 moves Horizontally, player 2":PRINT"moves Vertically":R$=INPUT$(1):RETURN 2360 PRINT @28,"M A X I T";:RETURN 3000 KS$=INPUT$(1):KS=ASC(KS$):RETURN 3100 FOR NN=0 TO VAL(RIGHT$(TIME$,2)):NN!=RND(1):NEXT:RETURN