Listing of file='BALANCE' on disk='vmedia/games_vol_3.wvd.zip'
# Sector 3, program filename = 'BALANCE'
0010 DIM A(12),S$1,C$3,L(12),R(12),E$8,L$12,R$12
0030 E$="BALANCE"
: GOTO 100
0041 DEFFN'0"\ACTE$:SAVE<S>T()E$"
0047 DEFFN'7"LISTS";HEX(0D)
0100 PRINT
: PRINT HEX(03);TAB(20);BOX(1,43);" T H E G A M E O F B A L A N C E
";HEX(0A);"You have 12 coins. One is counterfeit and a different weight
to the other 11."
0110 PRINT "You have three weighings and you must determine the counterfeit."
: PRINT "Enter 'L' and then coin numbers, then 'R' and coin numbers."
: PRINT "I will indicate if in balance or not when 'B' is pressed."
0120 PRINT "To remove a coin, enter the coin number as -ve, i.e. -11"
0130 PRINT "To remove all coins from a side, enter the coin number as 'E'"
0140 PRINT TAB(35);"GOOD LUCK!"
0150 PRINT AT(9,0);"1.3.5.7.9...";AT(9,67);"1.3.5.7.9..."
0200 PRINT AT(10,25);BOX(0,30);BOX(3,0);AT(10,55);BOX(3,0);AT(10,40);BOX(1,0);
AT(11,39);BOX(1,2);AT(12,40);BOX(5,0);AT(17,35);BOX(1,10)
0210 PRINT AT(15,19);BOX(1,0);AT(16,19);BOX(0,12);AT(15,31);BOX(1,0)
0220 PRINT AT(15,49);BOX(1,0);AT(16,49);BOX(0,12);AT(15,61);BOX(1,0)
0225 FOR X=1TO 12
: PRINT AT(23,X*5+8);BOX(1,3);X;
: NEXT X
: MAT A=CON
: MAT R=ZER
: MAT L=ZER
: G=0
0227 Q=INT(INT(RND(1)*100)/8)
: IF Q<1OR Q>12THEN 227
: Q1=RND(1)
: IF Q1>.49THEN Q1=.1
: ELSE Q1=-.1
: REM ANSWER PRINT AT(0,0);Q;Q1
0230 PRINT AT(19,30);
: LINPUT "Side of balance (L/R)"-S$
: S=POS("LlRrBb"=S$)
: IF S=0THEN 230
: IF S=2THEN S=1
: IF S=3OR S=4THEN S=2
: IF S>2THEN 5000
0240 PRINT AT(20,-13+S*33);
: C$=" "
: LINPUT "Coin"-C$
: IF C$="B"THEN 5000
: IF C$="E"THEN GOSUB 5100
: CONVERT C$TO C
: ERRORGOTO 230
0244 IF C=0THEN 230
0245 IF C<1THEN 246
: IF C>12OR C<>INT(C)THEN 240
: GOTO 250
0246 IF C<-12OR C>-1OR C<>INT(C)THEN 240
0250 IF C>0THEN GOSUB 6000
: ELSE GOSUB 6050
: GOTO 230
5000 REM BALANCE
: L$,R$=" "
: L=0
: FOR X=1TO 12
: IF L(X)=1THEN STR(L$,X,1)="*"
: L=L+L(X)
: IF Q=XAND L(X)<>0THEN L=L+Q1
: NEXT X
: R=0
: FOR X=1TO 12
: IF R(X)=1THEN STR(R$,X,1)="*"
: R=R+R(X)
: IF Q=XAND R(X)<>0THEN R=R+Q1
: NEXT X
: PRINT AT(10+G,0);L$;AT(10+G,67);R$
5010 IF L<RTHEN PRINT AT(17,22);"Light"
: IF L=RTHEN PRINT AT(17,22);"Even "
: IF L>RTHEN PRINT AT(17,22);"Heavy"
5020 IF L<RTHEN PRINT AT(17,52);"Heavy"
: IF L=RTHEN PRINT AT(17,52);"Even "
: IF L>RTHEN PRINT AT(17,52);"Light"
5022 IF L<RTHEN PRINT AT(10+G,13);"l"
: IF R<LTHEN PRINT AT(10+G,13);"h"
: IF L=RTHEN PRINT AT(10+G,13);"e"
5025 G=G+1
5030 PRINT AT(22,0);"You have had";G;"weighs. If you know the counterfeit, pr
ess the relative SFK ?";
: KEYIN K$
5040 IF G=3AND K$=HEX(0D)THEN K$=HEX(FF)
: PRINT AT(22,0,78)
: IF K$=HEX(0D)THEN 230
: IF VAL(K$)<1OR VAL(K$)>12AND K$<>HEX(FF)THEN 5030
: IF VAL(K$)=QTHEN 5050
: PRINT AT(21,0,80);"You missed. Too bad. The counterfeit is coin";Q;
: IF G>3THEN PRINT " It is possible in 3 weighs"
: GOTO 5060
5050 PRINT AT(21,0,80);"**** CONGRATULATIONS **** The counterfeit is coin";Q
: GOTO 5060
5060 PRINT AT(22,0,80);"Press <RETURN> to play again, else SFK31";
: KEYIN K$
: IF K$=HEX(1F)THEN LOAD RUN "GAMES"
: GOTO 10
5100 REM EMPTY
: FOR C=1TO 12
: IF S=2AND R(C)=1THEN GOSUB 6050
: ELSE IF S=1AND L(C)=1THEN GOSUB 6050
: NEXT C
: RETURN
6000 REM MOVE COIN
: IF A(C)=0THEN RETURN
: A(C)=0
: IF S=2THEN R(C)=1
: ELSE L(C)=1
6010 PRINT AT(23,C*5+8);" ";
: Y=INT((C-1)/4)
: Y1=C-Y*4
: Y=Y+1
: PRINT AT(12+Y,-14+S*30+Y1*3);C
: RETURN
6050 REM REPLACE COIN
: C=ABS(C)
: IF S=1AND L(C)<>1THEN RETURN
: IF S=2AND R(C)<>1THEN RETURN
: IF A(C)=1THEN RETURN
: A(C)=1
: IF S=2THEN R(C)=0
: ELSE L(C)=0
6060 PRINT AT(23,C*5+8);C;
: Y=INT((C-1)/4)
: Y1=C-Y*4
: Y=Y+1
: PRINT AT(12+Y,-14+S*30+Y1*3);" "
: RETURN