image of READY prompt

Wang2200.org

Listing of file='MARBLES' on disk='vmedia/games.wvd.zip'

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