home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / MBUG / MBUG055.ARC / POKER.BAS < prev    next >
BASIC Source File  |  1979-12-31  |  12KB  |  403 lines

  1. 54 'Poker Machine Simulation
  2. 55 BEL$ = CHR$(7):'Bell 
  3. 58 BS$ = CHR$(8):' Backspace 
  4. 61 HT$ = CHR$(9):'Horizontal tab 
  5. 64 LF$ = CHR$(10):'Line feed 
  6. 67 VT$ = CHR$(11):'Vert tab 
  7. 70 FF$ = CHR$(12):'Form feed 
  8. 73 RET$ = CHR$(13):'Carriage return 
  9. 76 ESC$ = CHR$(27):'Escape 
  10. 79 HOME$ = CHR$(17):'Cursor home 
  11. 82 NL$ = ESC$+"R":'Clear line
  12. 84 SP$ = CHR$(32):'Space 
  13. 85 TURN=0
  14. 86 '
  15. 87 ' ------ DYNAMIC VIDEO ATTRIBUTE CONTROL STRINGS ------ 
  16. 88 '
  17. 94 STDVID$ =ESC$+"K":'Normal Video                 
  18. 111 '
  19. 113 REVSTD$ = ESC$+"J":'Inverse Video
  20. 128 '  ------ DYNAMIC EDITING CONTROL STRINGS ------ 
  21. 129 '
  22. 135 CLRSCRN$ = CHR$(12)
  23. 185 ' ----------------- SCREEN ADDRESSES ------------------
  24. 186 '
  25. 187 LHS% = 1 
  26. 188 RHS% = 64 
  27. 189 TOP% = 1 
  28. 190 BOTTOM% = 30 
  29. 193 '
  30. 194 '   Definition of CURSOR LOAD Function.
  31. 195 DEF FNCSRLD$(ROW%,COLUMN%) = ESC$+"="+CHR$(ROW%+31)+CHR$(COLUMN%+31) 
  32. 200 '
  33. 201 '  ------  FORMAT CONTROL OPERATION STRINGS ------ 
  34. 202 '
  35. 1000 DIM PRESREEL(3,3):'Reels are displayed(3 rows x 3 columns) 
  36. 1050 DIM REEL(3,20):'Reel Combinations
  37. 1100 '
  38. 1150    ' 
  39. 1200    '*******        INITIALISE  DATA        ******** 
  40. 1250    ' 
  41. 1300 STARTROW% = TOP%+6 
  42. 1350    NUMOFREELS%     = 3 
  43. 1400    ' 
  44. 1450    PRINT CLRSCRN$ 
  45. 1500 PRINT TAB(24)"JACKPOT GAME":PRINT 
  46. 1550 PRINT"Do you want to see the payouts ..... <Y>es or any key ";
  47. 1600 A$=INKEY$:IF A$="" THEN 1600
  48. 1650 IF A$="Y" THEN 1700 ELSE 2400
  49. 1700    PRINT CLRSCRN$ 
  50. 1725 PRINT TAB(24)"JACKPOT GAME":PRINT
  51. 1730 PRINT"You start the game with $15 each turn costs $1":PRINT
  52. 1740 PRINT TAB(10)"The rest is up to you and luck":PRINT:PRINT
  53. 1750    PRINT "REEL 1"  ,"REEL 2"       ,"REEL 3"       ,"PAYOFF $":PRINT 
  54. 1800    ' 
  55. 1850    PRINT "NINE"    ,"ANYTHING"     ,"ANYTHING"     ,"3" 
  56. 1900    PRINT "NINE"    ,"NINE"         ,"ANYTHING"     ,"5" 
  57. 1950    PRINT "JACK"    ,"JACK"         ,"ACE"          ,"6" 
  58. 2000    PRINT "KING"    ,"KING"         ,"JACK"         ,"8" 
  59. 2050    PRINT "TEN"     ,"TEN"          ,"TEN"          ,"10" 
  60. 2150    PRINT "JACK"    ,"JACK"         ,"JACK"         ,"18" 
  61. 2200    PRINT "QUEEN"   ,"QUEEN"        ,"QUEEN"        ,"20" 
  62. 2250    PRINT "KING"    ,"KING"         ,"KING"         ,"30" 
  63. 2300    PRINT "ACE"     ,"ACE"          ,"ACE"          ,"200" 
  64. 2350    ' 
  65. 2400    FOR POSITION% = 1 TO NUMOFREELS% 
  66. 2450            COLOFFSET%(POSITION%) = LHS%+OFFSET% 
  67. 2500      OFFSET% = OFFSET%+14 
  68. 2550    NEXT POSITION% 
  69. 2600    FOR DISPLAYREEL% = 1 TO 6 
  70. 2650            FOR SEG% = 1 TO 5                        
  71. 2700                    READ REEL$(DISPLAYREEL%,SEG%)    
  72. 2750            NEXT SEG% 
  73. 2800    NEXT DISPLAYREEL%                                
  74. 2850 PRINT:PRINT
  75. 2900 INPUT"Input number (Range -32766 to 32767) to start ..... ";A 
  76. 3000    RANDOMIZE(A) 
  77. 3050    FOR CARD% = 1 TO 20 
  78. 3100            FOR COLUMN% = 1 TO 3 
  79. 3150                    READ REEL(COLUMN%,CARD%) 
  80. 3200            NEXT COLUMN% 
  81. 3250    NEXT CARD% 
  82. 3300  YOURCASH = 14 
  83. 3350    PRINT CLRSCRN$ 
  84. 3351 PRINT"                       ";REVSTD$;" JACKPOT GAME ";STDVID$
  85. 3400    '>>>>>>>        LOOP RE-ENTRY POINT 
  86. 3402 TURN=TURN+1
  87. 3405 PRINT ESC$+"Y"
  88. 3410 PRINT FNCSRLD$(TOP%+4,55);NL$;
  89. 3420 PRINT USING "$$#####-";YOURCASH
  90. 3425 PRINT FNCSRLD$(TOP%+5,57);"credit"
  91. 3500 PRINT FNCSRLD$(TOP%+15,LHS%);"PAY ------"
  92. 3505 PRINT FNCSRLD$(TOP%+15,LHS%+51);"------ LINE"
  93. 3506 PRINT FNCSRLD$(TOP%+15,LHS%+22);"---"
  94. 3507 PRINT FNCSRLD$(TOP%+15,LHS%+36);"---"
  95. 3550    FOR COLUMN% = 1 TO 3 
  96. 3600            RANDOMCARD% = INT(20*RND+1) 
  97. 3650            ' Check for boundary condition, CARD%=1 
  98. 3700            IF RANDOMCARD% = 1
  99.         THEN
  100.        PRESREEL (1,COLUMN%) = REEL(COLUMN%,20):
  101.        GOTO 3800 
  102. 3750            PRESREEL (1,COLUMN%) = REEL(COLUMN%,RANDOMCARD%-1) 
  103. 3800            PRESREEL(2,COLUMN%) = REEL(COLUMN%,RANDOMCARD%) 
  104. 3850            ' Check for boundary condition, CARD%=20 
  105. 3900            IF RANDOMCARD% = 20
  106.         THEN
  107.        PRESREEL (3,COLUMN%) = REEL(COLUMN%,1):
  108.        GOTO 4000 
  109. 3950            PRESREEL (3,COLUMN%) = REEL(COLUMN%,RANDOMCARD%+1) 
  110. 4000            GOSUB 5550 
  111. 4050    NEXT COLUMN% 
  112. 4100    WINNINGS = 0 : BELLON$ = "" 
  113. 4110    ' 
  114. 4120    'The following IF THEN statements check for winning combinations 
  115. 4130    ' 
  116. 4150    IF PRESREEL(2,1) <> 4
  117.          THEN
  118.         4300
  119.          ELSE
  120.         IF PRESREEL(2,2) <> 4
  121.        THEN
  122.       4900 
  123. 4200    IF PRESREEL(2,3) = 4
  124.          THEN
  125.         4250
  126.          ELSE
  127.         IF PRESREEL(2,3) <> 2
  128.        THEN
  129.       4900
  130.        ELSE
  131.       WINNINGS = 8    :
  132.       BELLON$ = BEL$  :
  133.       GOTO 4900 
  134. 4250    WINNINGS = 30   :
  135.  BELLON$ = BEL$  :
  136.  GOTO 4900 
  137. 4300    IF PRESREEL(2,1) <> 5
  138.          THEN
  139.         4400
  140.          ELSE
  141.         IF PRESREEL(2,2) <> 5
  142.        THEN
  143.       4900
  144.        ELSE
  145.       IF PRESREEL(2,3) <> 5
  146.      THEN
  147.     4900 
  148. 4350    WINNINGS = 10   :
  149.  BELLON$ = BEL$  :
  150.  GOTO 4900 
  151. 4400    IF PRESREEL(2,1) <> 3
  152.          THEN
  153.         4500
  154.          ELSE
  155.         IF PRESREEL(2,2) <> 3
  156.        THEN
  157.       4900
  158.        ELSE
  159.       IF PRESREEL(2,3) <> 3
  160.      THEN
  161.     4900 
  162. 4450    WINNINGS = 200  :
  163.  BELLON$ = BEL$  :
  164.  GOTO 4900 
  165. 4500    IF PRESREEL(2,1) <> 1
  166.          THEN
  167.         4600
  168.          ELSE
  169.         IF PRESREEL(2,2) = 1
  170.        THEN
  171.       4550
  172.        ELSE
  173.       WINNINGS = 3    :
  174.       BELLON$ = BEL$  :
  175.       GOTO 4900 
  176. 4550    WINNINGS = 5    :
  177.  BELLON$ = BEL$  :
  178.  GOTO 4900 
  179. 4600    IF PRESREEL(2,1) <> 2
  180.          THEN
  181.         4750
  182.          ELSE
  183.         IF PRESREEL(2,2) <> 2
  184.        THEN
  185.       4900
  186.        ELSE
  187.       IF PRESREEL(2,3) = 3
  188.      THEN
  189.     4700 
  190. 4650    IF PRESREEL(2,3) <> 2
  191.          THEN
  192.         4900
  193.          ELSE
  194.         WINNINGS = 18   :
  195.         BELLON$ = BEL$  :
  196.         GOTO 4900 
  197. 4700    WINNINGS = 6    :
  198.  BELLON$ = BEL$  :
  199.  GOTO 4900 
  200. 4750    IF PRESREEL(2,1) <> 6
  201.          THEN
  202.         4900
  203.          ELSE
  204.         IF PRESREEL(2,2) <> 6
  205.        THEN
  206.       4900
  207.        ELSE
  208.       IF PRESREEL(2,3) = 3
  209.      THEN
  210.     4850 
  211. 4800    IF PRESREEL(2,3) <> 6
  212.          THEN
  213.         4900
  214.          ELSE
  215.         WINNINGS = 20   :
  216.         BELLON$ = BEL$  :
  217.         GOTO 4900 
  218. 4850    WINNINGS = 15   :
  219.  BELLON$ = BEL$ 
  220. 4900 IF WINNINGS = 200 THEN GOSUB 6050:PRINT FNCSRLD$(TOP%+5,20);"***** JACKPOT *****"
  221. 4950    IF BELLON$ = BEL$
  222.          THEN
  223.         GOSUB 6050 
  224. 5100 PRINT FNCSRLD$(TOP%+4,LHS%+11);"To 'PLAY' hit any key, else 'N' to quit ";
  225. 5150 A$=INKEY$:IF A$="" THEN 5150
  226. 5160    YOURCASH = YOURCASH-1 
  227. 5200    IF A$ = "N"
  228.           THEN
  229.          5250
  230.           ELSE
  231.          3400    
  232. 5250 IF YOURCASH < 15  THEN 5350
  233. 5255 PRINT CHR$(12):PRINT
  234. 5260 PRINT"CONGRATULATIONS ..... you won ";YOURCASH-14;" Dollars in ";TURN;" turns":PRINT
  235. 5300    GOTO 10250 
  236. 5350 IF YOURCASH < 0 THEN 5390
  237. 5360 PRINT CHR$(12)
  238. 5370 PRINT"Too bad you LOST ";14-YOURCASH ;" Dollars"
  239. 5380 GOTO 5460
  240. 5390 PRINT CHR$(12):PRINT
  241. 5400 PRINT "YOU HAVE TEN DAYS TO PAY ME THE $";15-YOURCASH;" AFTER THAT" 
  242. 5450 PRINT  "IT IS OUT OF MY HANDS AS TO WHAT HAPPENS TO YOU !!!" 
  243. 5460 PRINT:PRINT"All of this loss took you ";TURN;" turns":PRINT
  244. 5500    GOTO 10250 
  245. 5550    IF PRESREEL(2,COLUMN%) = 1 
  246.          THEN
  247.         GOSUB 6650 : RETURN 
  248. 5600    IF PRESREEL(2,COLUMN%) = 2
  249.          THEN
  250.         GOSUB 6650 : RETURN 
  251. 5650    IF PRESREEL(2,COLUMN%) = 3
  252.          THEN
  253.         GOSUB 6650 : RETURN 
  254. 5700    IF PRESREEL(2,COLUMN%) = 4
  255.          THEN
  256.         GOSUB 6650 : RETURN 
  257. 5750    IF PRESREEL(2,COLUMN%) = 5
  258.          THEN
  259.         GOSUB 6650 : RETURN 
  260. 5800    PRESREEL(2,COLUMN%) = 6 
  261. 5850    GOSUB 6650 
  262. 5900    RETURN 
  263. 5950    ' 
  264. 6000    '---------------------------------------------------------------------- 
  265. 6050    '       Subroutine [1]: DING BELL & INCREMENT EARNINGS  
  266. 6100    ' 
  267. 6150    FOR LOOP = 1 TO WINNINGS 
  268. 6200            PRINT BEL$; 
  269. 6205 FOR D= 1 TO 30:NEXT D
  270. 6210            YOURCASH = YOURCASH+1 
  271. 6215 PRINT FNCSRLD$(TOP%+27,30);"WIN"
  272. 6220  PRINT FNCSRLD$(TOP%+4,55);NL$;
  273. 6230            PRINT USING "$$#####-";YOURCASH 
  274. 6400    NEXT LOOP 
  275. 6450    RETURN 
  276. 6500    ' 
  277. 6550    '---------------------------------------------------------------------- 
  278. 6600    ' 
  279. 6650    '       Subroutine [2]: PRINT REELS  
  280. 6700    ' 
  281. 6750  '
  282. 6800    PRINTROW% = STARTROW% 
  283. 6850    FOR ROW% = 1 TO 3 
  284. 6900            FOR SEG%        = 1 TO 5 
  285. 6950                            PRINT FNCSRLD$
  286.        (PRINTROW%+SEG%,COLOFFSET%(COLUMN%)+12);
  287.        REVSTD$;
  288.        REEL$(PRESREEL(ROW%,COLUMN%),SEG%);
  289.        STDVID$ 
  290. 7000            NEXT SEG% 
  291. 7050            PRINTROW% = PRINTROW%+6 
  292. 7100    NEXT ROW% 
  293. 7150    PRINT HOME$ 
  294. 7200    RETURN 
  295. 7250    ' 
  296. 7300    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  297. 7350    ' 
  298. 7400    '       REEL DISPLAY DATA 
  299. 7450    ' 
  300. 7500    DATA "999999999" 
  301. 7550    DATA "9       9" 
  302. 7600    DATA " N I N E " 
  303. 7650    DATA "9       9" 
  304. 7700    DATA "999999999" 
  305. 7750    DATA "JJJJJJJJJ" 
  306. 7800    DATA "J       J" 
  307. 7850    DATA " J A C K " 
  308. 7900    DATA "J       J" 
  309. 7950    DATA "JJJJJJJJJ" 
  310. 8000    DATA "    *    " 
  311. 8050    DATA "   * *   " 
  312. 8100    DATA " A  C  E " 
  313. 8150    DATA " ******* " 
  314. 8200    DATA "*       *" 
  315. 8250    DATA "KKKKKKKKK" 
  316. 8300    DATA "K\\\ ///K" 
  317. 8350    DATA " K I N G " 
  318. 8400    DATA "K/// \\\K" 
  319. 8450    DATA "KKKKKKKKK" 
  320. 8500    DATA "10     10" 
  321. 8550    DATA "    T    " 
  322. 8600    DATA " T  E  N " 
  323. 8650    DATA "    N    " 
  324. 8700    DATA "10     10" 
  325. 8750    DATA "QQQQQQQQQ" 
  326. 8800    DATA "Q-------Q" 
  327. 8850    DATA "Q U E E N" 
  328. 8900    DATA "Q-------Q" 
  329. 8950    DATA "QQQQQQQQQ" 
  330. 9000    ' 
  331. 9050    '       REEL COMBINATION DATA 
  332. 9100    ' 
  333. 9110    ' This data is sequence the cards appear on each reel these are NOT 
  334. 9120    ' the winning combinations, they are determined in the programme by 
  335. 9130    ' the IF THEN statements so marked. 
  336. 9131    ' 
  337. 9150    '      REEL 1, REEL 2, REEL 3 
  338. 9200    '        
  339. 9249    '       JACK    KING    JACK 
  340. 9250    DATA    2,      4,      2 
  341. 9251    ' 
  342. 9299    '       TEN     NINE    KING 
  343. 9300    DATA    5,      1,      4 
  344. 9301    ' 
  345. 9349    '       JACK    JACK    TEN 
  346. 9350    DATA    2,      2,      5 
  347. 9351    ' 
  348. 9399    '       QUEEN   KING    QUEEN 
  349. 9400    DATA    6,      4,      6 
  350. 9401    ' 
  351. 9449    '       NINE    NINE    JACK 
  352. 9450    DATA    1,      1,      2 
  353. 9451    ' 
  354. 9499    '       KING    JACK    QUEEN 
  355. 9500    DATA    4,      2,      6 
  356. 9501    ' 
  357. 9549    '       TEN     KING    TEN 
  358. 9550    DATA    5,      4,      5 
  359. 9551    ' 
  360. 9599    '       QUEEEN  NINE    KING 
  361. 9600    DATA    6,      1,      4 
  362. 9601    ' 
  363. 9649    '       KING    TEN ***ACE*** 
  364. 9650    DATA    4,      5,      3 
  365. 9651    ' 
  366. 9699    '       TEN     TEN     TEN 
  367. 9700    DATA    5,      5,      5 
  368. 9701    ' 
  369. 9749    '       NINE    NINE    JACK 
  370. 9750    DATA    1,      1,      2 
  371. 9751    ' 
  372. 9799    '       JACK    JACK    KING 
  373. 9800    DATA    2,      2,      4 
  374. 9801    ' 
  375. 9849    '       KING    KING    QUEEN 
  376. 9850    DATA    4,      4,      6 
  377. 9851    ' 
  378. 9899    '       NINE ***ACE***  JACK 
  379. 9900    DATA    1,      3,      2 
  380. 9901    ' 
  381. 9949    '   ***ACE***   KING    JACK     
  382. 9950    DATA    3,      4,      2 
  383. 9951    ' 
  384. 9999    '       JACK    NINE    KING 
  385. 10000   DATA    2,      1,      4 
  386. 10001   ' 
  387. 10049   '       QUEEN   JACK    TEN 
  388. 10050   DATA    6,      2,      5 
  389. 10051   ' 
  390. 10099   '       NINE    KING    JACK 
  391. 10100   DATA    1,      4,      2 
  392. 10101   ' 
  393. 10149   '       KING    QUEEN   KING 
  394. 10150   DATA    4,      6,      4 
  395. 10151   ' 
  396. 10199   '       JACK    NINE    JACK 
  397. 10200   DATA    2,      1,      2 
  398. 10201   ' 
  399. 10250   END 
  400.   6,      4 
  401. 10151   ' 
  402. 10199   '       JACK    NINE    JACK 
  403. 10200   DATA