image of READY prompt

Wang2200.org

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