Las Vegas

Type: Program
Platform(s): TS 2068

Play the one-armed bandit.

   10 REM "LAS VEGAS"
  100 DIM R(3,13): DIM J(13): LET J(5)=1: LET J(6)=1: LET J(7)=1
  110 LET W$="AKQJ7*$0/=+#%"
  120 FOR I=5 TO 12: READ R(2,I),R(3,I): NEXT I
  130 DATA 8,40,8,40,7,30,5,25,3,20,3,20,2,10,2,10
  140 DIM H(3): DIM P(3): DIM C(4): DIM D(4)
  150 DIM K(3): DIM V(4): DIM O(3): DIM A(3)
  160 DIM F(3): DIM G(4): DIM E(4,2)
  170 FOR I=1 TO 3: READ P(I): NEXT I
  180 FOR I=1 TO 4: READ D(I): READ E(I,1): READ E(I,2): NEXT I
  190 DATA 12,14,16,12,1,14,13,2,20,15,3,14,16,2,9
  200 LET B$="             ": REM 13*
  210 LET NT=-1: LET NJ=4: LET NI=0: LET WI=0
  220 LET HB=0: LET DO=0: LET DC=0: LET JA=0
  230 LET JC=0: LET MO=0: LET MM=0: LET R=0: LET GW=0: LET NH=0: LET NG=0
  240 FOR I=1 TO 3: LET V(I)=INT (RND*14): NEXT I
  600 GO TO 4000
 1000 REM ***FLASH $ AND GET INKEY$***
 1010 PRINT AT R,C; OVER 1; FLASH 1;S$;
 1020 LET I$=INKEY$: IF I$="" THEN GO TO 1020
 1030 PRINT AT R,C; PAPER CL;T$
 1040 RETURN 
 1100 REM **ADD INCREMENT TO MONEY**
 1110 FOR I=SGN (IN) TO IN STEP SGN (IN)
 1120 PRINT AT 0,7;MO+I;" ";: BEEP .1,40: NEXT I
 1130 LET MO=MO+IN: RETURN 
 1200 REM ***REMOVE DOUBLE***
 1210 LET DO=0: PRINT AT 6,11; PAPER 2;"       ";
 1220 FOR I=1 TO 4: PRINT AT 7,D(I);W$(I);: LET C(I)=0: NEXT I: RETURN 
 1300 REM ***CLEAR LAST LINE***
 1310 PRINT AT 21,0;TAB 31;"";: RETURN 
 1400 REM ***JACKPOT***
 1410 FOR T=1 TO 4: FOR C=1 TO JC: PRINT AT 0,11+C;" ";: NEXT C
 1420 FOR C=1 TO JC: BEEP .1,10+2*C: PRINT AT 0,11+C;"J";: NEXT C
 1430 NEXT T: RETURN 
 1500 REM ***FLASH POSSIBLE HOLDS AND GET INKEY$***
 1510 FOR I=1 TO 3: IF H(I)=0 THEN PRINT AT 11,P(I); FLASH 1; PAPER 2; INK 7; OVER 1;"H";
 1520 NEXT I: LET HO=0
 1530 LET I$=INKEY$: IF I$="" THEN GO TO 1530
 1540 IF I$<>"1" AND I$<>"2" AND I$<>"3" THEN GO TO 1570
 1550 LET I=VAL I$: PRINT AT 11,P(I); PAPER 2; INK 7;"H";
 1560 LET HO=1: LET H(I)=1: GO TO 1530
 1570 FOR I=1 TO 3: IF H(I)=0 THEN PRINT AT 11,P(I); PAPER 2;" ";
 1580 NEXT I: LET NH=NH+HO: RETURN 
 2000 REM ***DRAW SCREEN***
 2010 PRINT AT 5,11; PAPER 3;"       ";
 2020 FOR I=0 TO 4: PRINT AT 6+I,10; PAPER 3;" "; PAPER 2;"       "; PAPER 3;" "; PAPER 7;" "; PAPER 3;" ";: NEXT I
 2030 PRINT AT 6,20; PAPER 2;" ";: PRINT AT 10,19; PAPER 3;" ";
 2040 FOR I=0 TO 2: PRINT AT 9,12+2*I; PAPER 6;" ";: NEXT I
 2050 PRINT AT 11,11; PAPER 5;"       ";
 2060 FOR I=0 TO 2: PRINT AT 11,12+2*I; PAPER 6;" ";: NEXT I
 2070 FOR I=0 TO 3: PRINT AT 12+I,12; PAPER 5;"     ";: NEXT I
 2080 FOR I=0 TO 3: FOR K=0 TO 4+2*I: PRINT AT 16+I,12-I+K; PAPER 1;" ";: NEXT K: NEXT I
 2090 PRINT AT 0,0;"TOTAL: 0";
 2100 PRINT AT 8,0;"--%--= 1";
 2110 FOR I=12 TO 5 STEP -1
 2120 PRINT AT 21-I,0;"-";W$(I);W$(I);"- = ";R(2,I);
 2130 PRINT AT 21-I,22;W$(I);W$(I);W$(I);" = ";R(3,I);
 2140 IF J(I) THEN PRINT "+J"
 2150 NEXT I: RETURN 
 2300 REM ***ADAPT VARIABLES****
 2310 LET NT=NT+1: IF WI>0 THEN LET HB=1: LET WI=0
 2320 FOR I=1 TO 3: LET H(I)=0: PRINT AT 11,P(I); PAPER 2;" ";: NEXT I
 2330 IF DO THEN GO TO 2380
 2340 FOR I=1 TO 4: IF C(I)=0 THEN GO TO 2370
 2350 LET C(I)=C(I)-1: IF C(I)>0 THEN GO TO 2370
 2360 LET NJ=NJ+1: PRINT AT 7,D(I);W$(I);
 2370 NEXT I: GO TO 2390
 2380 LET DC=DC-1: IF DC=0 THEN GO SUB 1200
 2390 IF JA THEN PRINT AT 0,11+JC;" ";: LET JC=JC-1: IF JC=0 THEN LET JA=0
 2400 IF MO>MM THEN LET MM=MO
 2410 RETURN 
 2500 REM ***NOT ENOUGH MONEY***
 2510 LET HB=1: GO SUB 1200
 2520 LET JA=0: PRINT AT 0,10;TAB 31;"";
 2530 GO SUB 1300: PRINT AT 21,8; PAPER 5;"INSERT OR END";
 2540 LET S$="INSERT (I)": LET T$=B$: LET CL=7: LET R=2: LET C=0: GO SUB 1000
 2550 IF I$="P" OR I$="p" THEN GO TO 2540
 2560 RETURN 
 2600 REM ***HOLD POSSIBLE***
 2610 GO SUB 1300: PRINT AT 21,2; PAPER 5;"INSERT, HOLD, PLAY OR END";
 2620 GO SUB 1500: RETURN 
 2700 REM *** NO HOLD POSSIBLE **
 2710 GO SUB 1300: PRINT AT 21,5; PAPER 5;"INSERT, PLAY OR END";
 2720 LET S$="???": LET T$="   ": LET CL=1: LET R=18: LET C=13: GO SUB 1000
 2730 RETURN 
 2800 REM ** WHAT TO DO WITH WINNINGS **
 2810 GO SUB 1300
 2820 IF HB THEN PRINT AT 21,7;"";: GO TO 2840
 2830 PRINT AT 21,4; PAPER 5;"HOLD, ";
 2840 PRINT ; PAPER 5;"GAMBLE OR COLLECT";
 2850 LET S$="???": LET T$="   ": LET CL=1: LET R=18: LET C=13: GO SUB 1000
 2860 RETURN 
 2900 REM *** PLAY ***
 2910 FOR I=1 TO 3: IF H(I) THEN GO TO 2940
 2920 LET O(I)=V(I): LET FI=INT (RND*100)+1: LET V(I)=FI: IF FI<5 THEN GO TO 2940
 2930 LET V(I)=5+(FI>7)+(FI>10)+(FI>13)+(FI>36)+(FI>49)+(FI>68)+(FI>87)
 2940 NEXT I
 2950 FOR C=6 TO 9: PRINT AT C,20;" ";: PRINT AT C+1,20; PAPER 2;" ";
 2960 FOR I=1 TO 15: NEXT I: NEXT C
 2970 FOR C=10 TO 7 STEP -1: PRINT AT C,20; PAPER 3;" ";: PRINT AT C-1,20; PAPER 2;" ";
 2980 FOR I=1 TO 15: NEXT I: NEXT C
 2990 FOR I=1 TO 3: LET F(I)=0: NEXT I
 3000 FOR I=0 TO 70: FOR J=1 TO 3
 3010 IF H(J)=1 THEN GO TO 3060
 3020 IF F(J)=1 THEN GO TO 3050
 3030 LET O(J)=O(J)+1: IF O(J)>13 THEN LET O(J)=1
 3040 IF (I>10+13*J) AND O(J)=V(J) THEN LET F(J)=1: BEEP .02,8*J
 3050 PRINT AT 9,P(J); PAPER 6;W$(O(J));
 3060 NEXT J: NEXT I: RETURN 
 3100 REM ** TAKE CARE OF JOKERS
 3110 LET JO=0: FOR I=1 TO 3: LET V=V(I)
 3120 IF V>4 THEN LET FV=V: GO TO 3150
 3130 LET JW=1: LET JO=JO+1: IF C(V)>0 THEN GO TO 3150
 3140 PRINT AT 7,D(V); PAPER 3;" ";: LET C(V)=20: LET NJ=NJ-1
 3150 NEXT I: LET DO=(NJ=0): IF DO THEN LET DC=15: PRINT AT 6,11; PAPER 6;"DOUBLE!";
 3160 RETURN 
 3200 REM ** COMPUTE WINNINGS
 3210 LET HV=5: GO TO (3220 AND JO=0)+(3250 AND JO=1)+(3220 AND JO=2)+(3270 AND JO=3)
 3220 LET HV=FV
 3230 GO TO 3270
 3250 LET V(4)=15: LET JR=JW+1: LET JL=JW-1: IF JL=0 THEN LET JL=4
 3260 LET HV=V(JR): IF V(JR)>V(JL) THEN LET HV=V(JL)
 3270 FOR I=1 TO 3: LET K(I)=V(I): IF V(I)<5 THEN LET K(I)=HV
 3280 NEXT I: IF K(1)<>K(2) OR K(2)<>K(3) THEN GO TO 3300
 3290 IF J(K(1)) THEN LET JA=1: LET JC=15: GO SUB 1400
 3300 LET W1=0: LET W2=0
 3310 FOR I=1 TO 3: IF K(I)=13 THEN LET W1=W1+1
 3320 NEXT I: LET NS=1+(K(1)=K(2))+(K(2)=K(3)): LET W2=R(NS,K(2))
 3330 LET WI=W2: IF W1>WI THEN LET WI=W1
 3340 IF JA AND WI>0 AND WI<10 THEN LET WI=10
 3350 IF DO THEN LET WI=2*WI
 3360 RETURN 
 3400 REM ** GAMBLE ROUTINE
 3410 LET DT=1: LET G(1)=2*WI: LET G(2)=0: LET G(3)=INT (3*WI/2): LET G(4)=INT (WI/2)
 3420 LET NG=NG+1: GO SUB 1300: PRINT AT 21,12; PAPER 5;"STOP";
 3430 FOR I=1 TO 3: PRINT AT I,8; PAPER 6;"               ";: NEXT I: REM 15*
 3440 LET R=R+1: IF R>4 THEN LET R=1
 3450 PRINT AT E(R,1),E(R,2); PAPER 6;G(R): BEEP .003,10+3*R
 3460 IF I$<>"S" AND I$<>"s" THEN LET I$=INKEY$: GO TO 3480
 3470 LET DT=(2+RND)*0.5*DT^1.3: IF DT>250 THEN LET DT=250
 3475 FOR I=1 TO DT: NEXT I: IF DT>200 THEN GO TO 3490
 3480 PRINT AT E(R,1),E(R,2); PAPER 6;"   ";: GO TO 3440
 3490 FOR I=1 TO 3: PRINT AT I,8;TAB 31;"";: NEXT I
 3500 LET GW=GW+G(R)-WI: LET WI=G(R): RETURN 
 3600 REM *** END OF GAME ***
 3610 CLS : PRINT : PRINT "AMOUNT OF MONEY": PRINT 
 3620 PRINT " PUT IN:";TAB 18;"$";: LET X=NI: GO SUB 3800
 3630 PRINT " GOT BACK:";TAB 18;"$";: LET X=MO/4: GO SUB 3800
 3640 PRINT " MAX AT ONE TIME: $";: LET X=MM/4: GO SUB 3800
 3650 IF GW>=0 THEN PRINT " WON BY GAMBLING: $";: LET X=GW/4: GO SUB 3800
 3660 IF GW<0 THEN PRINT " LOST BY GAMBLING:$";: LET X=-GW/4: GO SUB 3800
 3670 PRINT : PRINT : PRINT "NUMBER OF HOLDS:";TAB 19;: LET X=NH: GO SUB 3900
 3680 PRINT "NUMBER OF GAMBLES:";TAB 19;: LET X=NG: GO SUB 3900
 3690 PRINT "NUMBER OF TURNS:";TAB 19;: LET X=NT: GO SUB 3900
 3700 RETURN 
 3800 LET L=LEN STR$ X-LEN STR$ INT X
 3810 LET X$=STR$ X+("0" AND L=2)+(".00" AND L=0)
 3820 FOR I=LEN X$ TO 5: PRINT " ";: NEXT I: PRINT X$: RETURN 
 3900 FOR I=LEN STR$ X TO 2: PRINT " ";: NEXT I: PRINT X: RETURN 
 4000 REM *** MAIN PROGRAM ***
 4010 GO SUB 2000: REM SCREEN
 4020 GO SUB 2300: REM ADAPT
 4030 LET CA=2*HB+(MO>1)+1: GO SUB (2500 AND CA=1)+(2600 AND CA=2)+(2500 AND CA=3)+(2700 AND CA=4)
 4040 PRINT AT 3,8;TAB 31;"";: LET CA=(I$="I" OR I$="i")+2*(I$="P" OR I$="p")+3*(I$="E" OR I$="e")
 4050 GO TO (4030 AND CA=0)+(4100 AND CA=1)+(4200 AND CA=2)+(4700 AND CA=3)
 4100 LET NI=NI+1: LET IN=4: GO SUB 1100: IF MO>MM THEN LET MM=MO
 4110 GO TO 4030
 4200 LET IN=-2: GO SUB 1100
 4210 GO SUB 2900: REM PLAY
 4230 GO SUB 3100: REM JOKERS
 4240 GO SUB 3200: REM WINNINGS
 4250 IF H(1)+H(2)+H(3)>0 THEN GO TO 4270
 4260 LET HB=0: LET LW=WI: GO TO (4290 AND WI>0)+(4020 AND WI<=0)
 4270 LET HB=1: IF WI>LW THEN GO TO 4290
 4275 IF LW=0 THEN GO TO 4020
 4280 PRINT AT 3,10;TAB 31;"";: PRINT AT 3,11; PAPER 6;"YOU LOST";: BEEP 2,10: GO TO 4020
 4290 PRINT AT 3,10; PAPER 6;"YOU WON ";WI;: FOR I=1 TO WI: BEEP .1,20: NEXT I
 4300 IF MO<2 THEN LET HB=1
 4310 GO SUB 2800: REM GET INSTRUCTIONS
 4320 LET CA=((I$="H" OR I$="h") AND NOT HB)+2*(I$="G" OR I$="g")+3*(I$="C" OR I$="c")
 4330 GO TO (4310 AND CA=0)+(4600 AND CA=1)+(4500 AND CA=2)+(4400 AND CA=3)
 4400 LET IN=WI: GO SUB 1100: GO TO 4020
 4500 LET HB=1: GO SUB 3400: REM GAMBLE
 4510 IF WI>0 THEN GO TO 4290
 4520 GO TO 4280
 4600 LET WI=0: GO TO 4020
 4700 GO SUB 3600: REM END
 4800 STOP 
 9998 SAVE "las vegas" LINE 1
 9999 PRINT "TO VERIFY - REWIND": VERIFY ""

People

No people associated with this content.

Scroll to Top