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