image of READY prompt

Wang2200.org

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