Listing of file='MARBLES' on disk='vmedia/games-droz01.wvd.zip'
# Sector 311, program filename = 'MARBLES' 0010 REM *MARBLES* 0020 REM *** AUTHOR.....KEN PARKER 0030 REM *** TITLE......KALAH 0040 REM *** USE........ALLOWS USER TO SHOW SOME OF THE WANG'S 0050 REM *** VARIOUS CAPABILITIES. 0060 REM *** (ALSO PROVIDES THE MEANS FOR TWO ANALYSTS 0070 REM *** TO MATCH THEIR STRATEGIC ABILITIES AND TO 0080 REM *** INCREASE THEIR ABILITY TO PERFORM THE 0090 REM *** HIGH LEVEL QUICK RESPONSE THINKING NEEDED 0100 REM *** TO COMPLETE ESG STUDIES)............... 0110 REM *** **************************************************** 0120 DIM P1(2),P2(2),A(14) 0130 DIM B$(3) : B$(1)="*** TIE GAME ***" 0140 B$(2)="WINNER PLAYER #1" 0150 PRINT HEX(030A) 0160 B$(3)="WINNER PLAYER #2" 0170 S=3 : P2(1)=14 : P2(2)=7 0180 P1(1)=7 : P1(2)=14 0190 INPUT "(INPUT 1-PLAYER VS PLAYER,2-PLAYER VS COMPUTER)",H 0200 IF H=1 THEN 220 0210 IF H=2 THEN 220 : GOTO 190 0220 INPUT "INPUT INITIAL NUMBER",I 0230 FOR J=1 TO 14 : A(J)=I : NEXT J 0240 A(7),A(14)=0 0250 ON S GOTO 260,270,570 0260 P=1 : S=2 : GOTO 280 0270 P=2 : S=1 : IF H=2 THEN 320 0280 T=25*(P-1)+1 0290 PRINT TAB(T);"FOR PLAYER #";P;"INPUT POT NUMBER"; 0300 INPUT N 0310 GOTO 340 0320 GOSUB 950 0330 REM .....LOGIC FOR CHIPS..... 0340 IF N<7 THEN 360 0350 PRINT "PLEASE PLAY YOU SIDE" : ON S GOTO 270,260 0360 N=N+7*(P-1) 0370 IF A(N)>0 THEN 390 0380 PRINT "THIS POT IS EMPTY. TRY AGAIN" : ON S GOTO 270,260 0390 N1=A(N) : A(N)=0 0400 IF N1=1 THEN 460 0410 FOR J=N1 TO 2 STEP -1 0420 N=N+1 : IF N<15 THEN 430 : N=1 0430 IF N=P2(P) THEN 420 0440 A(N)=A(N)+1 0450 NEXT J 0460 N=N+1 : IF N<15 THEN 470 : N=1 0470 IF N<>P1(P) THEN 500 0480 A(N)=A(N)+1 0490 S=P : GOTO 570 0500 IF N<>P2(P) THEN 510 : N=N+1 : IF N<15 THEN 510 : N=1 0510 ON P GOTO 520,530 0520 IF N<7 THEN 540 : GOTO 550 0530 IF N>7 THEN 540 : GOTO 550 0540 IF A(N)=0 THEN 720 0550 A(N)=A(N)+1 0560 REM ......DISPLAY..... 0570 PRINT HEX(030A) 0580 PRINT TAB(23);"PLAYER # 2" 0590 PRINTUSING 610 0600 PRINTUSING 630,A(13),A(12),A(11),A(10),A(9),A(8) 0610 % (6) (5) (4) (3) (2) (1) 0620 % (1) (2) (3) (4) (5) (6) 0630 % ## ## ## ## ## ## 0640 % ### ### 0650 PRINTUSING 640,A(14),A(7) 0660 PRINTUSING 630,A(1),A(2),A(3),A(4),A(5),A(6) 0670 PRINTUSING 620 0680 PRINT TAB(23);"PLAYER # 1" 0690 PRINT HEX(0A0A) 0700 GOSUB 780 0710 ON S GOTO 260,270,260,170 0720 N2=14-N : IF A(N2)=0 THEN 550 0730 A(P*7)=A(P*7)+A(N2)+1 0740 A(N)=0 0750 A(N2)=0 0760 GOTO 570 0770 REM .....CHECK FOR WIN..... 0780 S1=0 : S2=0 : FOR I=1 TO 6 : S1=S1+A(I) : S2=S2+A(I+7) : NEXT I 0790 IF S1=0 THEN 820 0800 IF S2=0 THEN 820 0810 RETURN 0820 A(7)=A(7)+S1 : A(14)=A(14)+S2 0830 PRINT TAB(10);"END OF GAME" 0840 FOR I=1 TO 2 : PRINT TAB(15);"PLAYER #";I;"=";A(I*7) : NEXT I 0850 W=1 : IF A(7)=A(14) THEN 870 : W=2 : IF A(7)>A(14) THEN 870 0860 W=3 0870 E$=B$(W) 0880 FOR I=1 TO 15 : PRINT TAB(10);E$;HEX(0D); 0890 FOR J=1 TO 50 : NEXT J 0900 PRINT TAB(63);HEX(0D); 0910 FOR J=1 TO 50 : NEXT J 0920 NEXT I : PRINT TAB(10);E$;HEX(0A) 0930 S=4 : INPUT "PLAY AGAIN",P7$ : IF STR(P7$,1,1)="N" THEN LOAD T#0,"START" : RETURN 0940 REM ...POT SEARCH... 0950 N=0 0960 FOR I=13 TO 8 STEP -1 0970 IF A(I)-INT(A(I)/13)*13+(I-7)<>7 THEN 1010 0980 N=I-7 0990 M1=INT(A(I)/13)+1 1000 I=8 1010 NEXT I 1020 IF N=0 THEN 1130 1030 FOR I=13 TO 8 STEP -1 1040 IF A(I)<>13 THEN 1100 : M2=A(14-I) 1050 IF M2=0 THEN 1100 1060 IF A(N+7)>7 THEN 1070 : IF N+7>I THEN 1100 1070 M2=M2+3 1080 IF M2<M1+2 THEN 1100 1090 N=I-7 : M1=M2 1100 NEXT I 1110 RETURN 1120 REM ...LOOK FOR ZERO 1130 W1=8 : W2=13 : GOSUB 1510 1140 IF M1=0 THEN 1170 1150 N=M3-7 : RETURN 1160 REM ...PROTECT FROM ZERO... 1170 W1=1 : W2=6 : GOSUB 1510 1180 IF N1=0 THEN 1360 1190 FOR J=13 TO 8 STEP -1 1200 IF A(J)+J-14<N1 THEN 1230 1210 N=J-7 1220 J=8 1230 NEXT J 1240 IF N=0 THEN 1250 : RETURN 1250 IF N1=0 THEN 1360 : N=7-N1 1260 IF A(N+7)=0 THEN 1270 : RETURN 1270 FOR I=8 TO 13 1280 IF A(I)=0 THEN 1320 1290 IF I<N+7 THEN 1300 : N=I-7 : I=13 : GOTO 1320 1300 IF I+A(J)>=N+7 THEN 1320 1310 N=I-7 : I=13 1320 NEXT I 1330 IF A(N+7)<>0 THEN 1340 : N=0 : GOTO 1360 1340 RETURN 1350 REM ...PROTECT FROM OTHER PLAYER... 1360 FOR I=6 TO 1 STEP -1 1370 IF A(I)+I<>7 THEN 1430 1380 FOR J=13 TO 8 STEP -1 1390 IF A(J)+J-14<I THEN 1420 1400 N=J-7 1410 J=8 : I=1 1420 NEXT J 1430 NEXT I 1440 IF N=0 THEN 1470 1450 RETURN 1460 REM ...WHY NOT!... 1470 N=INT(RND(1)*6)+1 1480 IF A(N+7)=0 THEN 1470 1490 RETURN 1500 REM 1510 REM ...SUBROUTINE FOR BEST ZERO... 1520 REM 1530 M1,N1,M3=0 1540 FOR I=W2 TO W1 STEP -1 1550 IF A(I)<>13 THEN 1580 : M2=A(14-I) 1560 IF M2=0 THEN 1680 : M2=M2+3 1570 IF M2<=M1 THEN 1680 : M1=M2 : N1=I : M3=I : GOTO 1680 1580 IF A(I)<>0 THEN 1680 1590 FOR J=W1 TO W2 1600 IF A(J)>13 THEN 1670 1610 M2=J+A(J) : IF M2-INT(M2/14)*13<>I THEN 1670 1620 IF I=J THEN 1670 1630 M2=A(14-I) 1640 IF M2<>0 THEN 1650 : IF A(J)<6 THEN 1670 1650 M3=J : M2=M2+INT(A(J)/7)*2+1 1660 IF M2<M1 THEN 1670 : M1=M2 : N1=I 1670 NEXT J 1680 NEXT I 1690 RETURN 1700 GOTO 10