home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / bbs / bj.scr < prev    next >
Text File  |  1993-07-20  |  12KB  |  521 lines

  1. Script
  2. ;=========================
  3. ;   BlackJack Script Game
  4. ;   File Name : BJ.SCR
  5. ;Last Changed : 03/27/1988
  6. ;  Written By : Chris King
  7. ;  Version 1.32
  8. ;=========================
  9. ;
  10. ;7/18/88
  11. ;I have done some changes to the BJ script file, you only need this file to
  12. ;run BJ and now it also saves the users money for the next time they play.
  13. ;Change string varibles [Pathname] to the drive and folder for BJ files and
  14. ;[Users] to the number of users on your BBS. The users score is saved in
  15. ;BJPLAYER.DAT, when a users score is 0 their money will reset back to 100.
  16. ;To restart all users money back to 100 just delete file BJPLAYER.DAT.
  17. ;If you have problems or questions with the STuff I have added send your
  18. ;message to Eric Crofut - GEnie E.CROFUT.
  19.  
  20. Abort Off
  21.  
  22. DefineVars:
  23.  String  Counter           ; Counter for FOR/NEXT
  24.  String  WV1               ; Temp Work Variable
  25.  String  WV2               ; Temp Work Variable
  26.  String  WV3               ; Temp Work Variable
  27.  String  UInput            ; User Input Variable
  28.  String  Top   = ' ____ '  ; User Input Variable
  29.  String  Blank = '|____|'  ; User Input Variable
  30.  String  UHand = '       ' ; Users hand   - up to 7 cards
  31.  String  DHand = '       ' ; Dealers hand - up to 7 cards
  32.  String  THand = '       ' ; Holds hand to display
  33.  String  TNo   = '0'       ; Number of cards in hand
  34.  String  Cards             ; Cards are shuffled into here
  35.  String  Suits             ; Suits are shuffled into here - not used
  36.  String  CDLeft = '52'     ; Number of cards left in the playing deck
  37.  String  UNo    = '0'      ; number of cards in users hand
  38.  String  DNo    = '0'      ; number of cards in dealers hand
  39.  String  Lit1   =  '___ \rPlayers Hand \b___'
  40.  String  Lit2   =  '___ \rDealers Hand \b___'
  41.  String  UTot   = '0'      ; Total value of users hand
  42.  String  DTot   = '0'      ; Total value of dealers hand
  43.  String  Turn              ; Flag for finished dealing
  44.  String  Money  ;* = '100'    ; User starts out with $100
  45.  String  Bet    = '0'      ; Users Bet this hand
  46.  String  BJ                ; Flag - if player or dealer has BJ
  47.  String  DSec              ; temp hold dealers second card
  48.  String  PBJ    = 'Player Has \rBlackJack!\b'  ; Player BJ Msg
  49.  String  PWin   = 'Player \rWins!\b'           ; Player Won Msg
  50.  String  PBust  = 'Player Busted...'           ; Player Busted Msg
  51.  String  DBJ    = 'Dealer Has \rBlackJack!\b'  ; Dealer BJ Msg
  52.  String  DWin              ; Dealer Won Msg
  53.  String  PMsg              ; Player Msg Line
  54.  String  DMsg              ; Dealer Msg Line
  55.  String  Pathname = 'g:\'  ; Drive and Folder name for BJ Files
  56.  String  Users    = '300'  ; Number of users on your BBS
  57.  String  PId               ;* Player ID number
  58.  
  59.  String Var10
  60.  String Var11
  61.  String Var12
  62.  String Var13
  63.  String Var14
  64.  String Var15
  65.  String Var16
  66.  String Var17
  67.  String Var18
  68.  String Var19
  69.  String Var20
  70.  String Var30
  71.  String Var31
  72.  String Var32
  73.  String Var51
  74.  String Var52
  75.  
  76.  String Var0
  77.  String Var1
  78.  
  79. Load_Player: ;* added to Load Player's Money
  80.  PId = '&31'
  81.  PId = PId * 8
  82.  Decrease PId 8
  83.  
  84.  If File_Exists '[Pathname]bjplayer.dat'
  85.   Open '[Pathname]bjplayer.dat', Input
  86.    Point PId
  87.    Finput Money
  88.   Close
  89.  else
  90.   Printe 'Please Wait, Creating User Log Data...'
  91.   Open '[Pathname]bjplayer.dat',output
  92.    For Var0 = 1 to Users do
  93.     Fprint '100   '
  94.    Endfor
  95.   Close
  96.   Money = '100'
  97.  Endif
  98.  
  99.  If Money = '0'
  100.   Money = '100'
  101.  endif
  102.  
  103.  
  104. Start_Msg:
  105.  
  106. BJ_Play:
  107.  Goto Get_Bet
  108.  
  109. ShowHand:
  110.  For [Counter] = 1 to [Tno]
  111.   Print '  ____ '
  112.  EndFor
  113.  PrintE
  114.  For [Counter] = 1 to [Tno]
  115.    WV1 = Copy (THand, Counter, 1)
  116.    Print ' |[WV1]   |'
  117.  EndFor
  118.  PrintE
  119.  For [Counter] = 1 to [Tno]
  120.   Print ' |    |'
  121.  EndFor
  122.  PrintE
  123.  For [Counter] = 1 to [Tno]
  124.    WV1 = Copy (THand, Counter, 1)
  125.   Print ' |___[WV1]|'
  126.  EndFor
  127.  PrintE
  128.  Return
  129.  
  130. Header:
  131.  Clear Screen
  132.  PrintE
  133.  
  134.  If [Bet] # 0
  135.   PrintE '\bCurrent Winnings: \r$[Money]\b   Bet: \r$[Bet]\b'
  136.  Else
  137.   PrintE 'BlackJack',center
  138.   PrintE '-----------------------',center
  139.   PrintE '\bCurrent Winnings: \r$[Money]\b',center
  140.  Endif
  141.  Return
  142.  
  143. CK_Face:
  144.  If [WV1] < 10
  145.   Return
  146.  Ef [WV1] = A
  147.   Set [WV1] = 11
  148.  Else
  149.   Set [WV1] = 10
  150.   Return
  151.  Endif
  152.  Set [WV2] = [WV2] + [WV1]
  153.  If [WV2] > 21  ; An Ace and Tot would be over 21, so set Ace to 1
  154.   Set [WV1] = 1
  155.  Endif
  156.  Return
  157.  
  158. Shuff:
  159.  Shuffle [Cards] [Suits]
  160.  Set [CDLeft] = 52
  161.  Return
  162.  
  163. Get_Bet:
  164.  Set [Bet] = 0
  165.  Gosub Header
  166.  PrintE
  167.  Print 'Place Your \rBet\b (Q=Quit)==> ',center
  168.  Input [Bet] 4 NoReturn
  169.  If [Bet] = 0
  170.   Goto Get_Bet   ;* fixed bug - wrong name - was just (Bet)
  171.  Ef [Bet] = 'Q'
  172.   Goto Save_Score
  173.  Ef [Bet] > [Money]
  174.   Set [Bet] = [Money]
  175.  Endif
  176.  
  177. Start:
  178.  Set [UHand] = ''
  179.  Set [DHand] = ''
  180.  Set [UNo]   = '0'
  181.  Set [DNo]   = '0'
  182.  Set [Utot]  = '0'
  183.  Set [Dtot]  = '0'
  184.  Set [Turn]  = ''
  185.  GoSub Shuff
  186.  
  187. Deal1:
  188.  If [CdLeft] < 11
  189.    GoSub Shuff
  190.  Endif
  191.  
  192.  WV1 =  Copy (Cards, CdLeft, 1)           ;Users 1st card
  193.  Set [UHand] = '[Uhand][WV1]'
  194.  Set [WV2] = [UTot]
  195.  Gosub CK_Face
  196.  Set [Utot] = [UTot] + [WV1]
  197.  Set [Uno] = [UNo] + 1
  198.  Set [CDLeft] = [CdLeft] - 1
  199.  
  200.  WV1 =  Copy (Cards, CdLeft, 1)           ;Users 1st card
  201.  Set [DHand] = '[Dhand][WV1]'
  202.  Set [WV2] = [DTot]
  203.  Gosub CK_Face
  204.  Set [DTot] = [DTot] + [WV1]
  205.  Set [DNo] = [DNo] + 1
  206.  Set [CDLeft] = [CdLeft] - 1
  207.  
  208.  WV1 =  Copy (Cards, CdLeft, 1)           ;Users 1st card
  209.  Set [UHand] = '[Uhand][WV1]'
  210.  Set [WV2] = [UTot]
  211.  Gosub CK_Face
  212.  Set [Utot] = [UTot] + [WV1]
  213.  Set [UNo] = [UNo] + 1
  214.  Set [CDLeft] = [CdLeft] - 1
  215.  
  216.  WV1 =  Copy (Cards, CdLeft, 1)           ;Users 1st card
  217.  Set [DSec] = [WV1]
  218.  Set [DHand] = '[Dhand]*'
  219.  Set [WV2] = [DTot]
  220.  Gosub CK_Face
  221.  Set [DTot] = [DTot] + [WV1]
  222.  Set [DNo] = [DNo] + 1
  223.  Set [CDLeft] = [CdLeft] - 1
  224.  
  225. Display:
  226.  If [UHand] = AK
  227.   Set [BJ] = P
  228.  Ef [UHand] = KA
  229.   Set [BJ] = P
  230.  Ef [UHand] = AQ
  231.   Set [BJ] = P
  232.  Ef [UHand] = QA
  233.   Set [BJ] = P
  234.  Ef [UHand] = AJ
  235.   Set [BJ] = P
  236.  Ef [UHand] = JA
  237.   Set [BJ] = P
  238.  Ef [DHand] = AK
  239.   Set [BJ] = D
  240.  Ef [DHand] = KA
  241.   Set [BJ] = D
  242.  Ef [DHand] = AQ
  243.   Set [BJ] = D
  244.  Ef [DHand] = QA
  245.   Set [BJ] = D
  246.  Ef [DHand] = AJ
  247.   Set [BJ] = D
  248.  Ef [DHand] = JA
  249.   Set [BJ] = D
  250.  Else
  251.   Set [BJ] =  ''
  252.  Endif
  253.  
  254.  Set [PMsg] = ''
  255.  Set [DMsg] = ''
  256.  If [BJ] = P
  257.   Set [PMsg] = [PBJ] ; Player has BJ
  258.  Ef [BJ] = D
  259.   Set [DMsg] = [DBJ] ; Player has BJ
  260.  Endif
  261.  
  262.  Gosub Header
  263.  PrintE '\rYour Hand Totals: \b[UTot]'
  264.  Set [TNo] = [UNo]
  265.  Set [THand] = [UHand]
  266.  Gosub ShowHand ; Show Players Hand
  267.  PrintE
  268.  PrintE '[Lit1]   [PMsg]'
  269.  PrintE
  270.  ;PrintE ' Dealers Hand Totals: [DTot]'
  271.  Set [TNo] = [DNo]
  272.  Set [THand] = [DHand]
  273.  Gosub ShowHand ; Show Dealers Hand
  274.  PrintE
  275.  PrintE '[Lit2]   [DMsg]'
  276.  
  277.  If [BJ] = P
  278.   Set [Money] = [Money] + [Bet]
  279.   Goto PlayAgain
  280.  Ef [BJ] = D
  281.   Set [Money] = [Money] - [Bet]
  282.   Goto PlayAgain
  283.  Endif
  284.  
  285. Status:
  286.  If [UTot] > 21                 ;Player busted
  287.   Goto Busted
  288.  Ef [DTot] > 21
  289.   PrintE '[PWin] \r$[Bet]\b' Center ;Dealer Busted
  290.   Set [Money] = [Money] + [Bet]
  291.   Goto PlayAgain
  292.  Ef [UNo] = 5
  293.   PrintE '[PWin] \r$[Bet]\b' Center ;Player has 5 cards
  294.   Set [money] = [Money] + [Bet]
  295.   Goto PlayAgain
  296.  Ef [DNo] = 5
  297.   Set DWin = 'Dealer Has 5 Cards - Dealer \rWins\b'
  298.   PrintE [DWin] Center          ;Dealer Wins
  299.   Set [Money] = [Money] - [Bet]
  300.   Goto PlayAgain
  301.  Ef [Turn] = F
  302.   Goto Done
  303.  Else
  304.   Goto Hit
  305.  Endif
  306.  
  307. Done:
  308.  If [UTot] = [DTot]
  309.   PrintE '\rDraw\b...   No Winner' Center ;Draw - No Winner
  310.   Goto PlayAgain
  311.  Ef [DTot] > [UTot]
  312.   Set [Money] = [Money] - [Bet]
  313.   Set DWin = 'Dealer Has \r[DTot]\b - Dealer \rWins\b'; Dealer Won Msg
  314.   PrintE [DWin] Center          ;Dealer Wins
  315.   Goto PlayAgain
  316.  Ef [UTot] > [DTot]
  317.   Set [Money] = [Money] + [Bet]
  318.   PrintE '[PWin] \r$[Bet]\b' Center ;Player Wins
  319.   Goto PlayAgain
  320.  Endif
  321.  
  322. Hit:
  323.  PrintE
  324.  Print ' \{\rH\b\}it Me Or Any Key To \rStay\b ==> ' ;* Changed command
  325.  Get_Key [UInput]  ;* Changed to Get_Key
  326.  If [UInput] = 'H' ;* Look for H not RETURN now
  327.   PrintE 'Hit'     ;* Print Hit
  328.   Goto NextCard
  329.  Else
  330.    PrintE 'Stay'   ;* Print Stay
  331.    Goto DealCont
  332.  Endif
  333.  
  334. NextCard:
  335.  If [UInput] = 'H' ;* Hit me
  336.   WV1 = Copy (Cards, CdLeft, 1)   ;Users Next card
  337.   Set [UHand] = '[Uhand][WV1]'
  338.   Set [WV2] = [UTot]
  339.   Gosub CK_Face
  340.   Set [UTot] = [UTot] + [WV1]
  341.   Set [Uno] = [UNo] + 1
  342.   Set [CDLeft] = [CdLeft] - 1
  343.   Goto Display
  344.  Endif
  345.  
  346. DealCont:
  347.  WV1 = Copy (DHand, 1, 1)        ;Turn dealers 2nd card up
  348.  Set [DHand] = [WV1]
  349.  Set [DHand] = '[DHand][DSec]'
  350.  Goto CKDeal
  351.  
  352. DealNext:
  353.  WV1 =  Copy (Cards, CdLeft, 1)    ;Dealers Next card
  354.  Set [DHand] = '[Dhand][WV1]'
  355.  Set [WV2] = [DTot]
  356.  Gosub CK_Face
  357.  Set [DTot] = [DTot] + [WV1]
  358.  Set [DNo] = [DNo] + 1
  359.  Set [CDLeft] = [CdLeft] - 1
  360.  
  361. CKDeal:
  362.  If [DTot] > 21
  363.   Set [Turn] = F
  364.   Goto Display
  365.  Endif
  366.  If [DNo] = 5
  367.   Set [Turn] = F
  368.   Goto Display
  369.  Endif
  370.  If [DTot] < 19
  371.   Goto DealNext
  372.  Endif
  373.  Set [Turn] = F
  374.  Goto Display
  375.  
  376. Busted:
  377.  PrintE [PBust] Center     ;Player Busted
  378.  Set [Money] = [Money] - [Bet]
  379. ; If [Money] = 0
  380. ;  Print 'Press <\rRETURN\b> ' Center
  381. ;  Input [UInput] 2
  382. ; Endif
  383.  
  384. PlayAgain:
  385.  If [Money] = 0
  386.   PrintE
  387.   PrintE
  388.   PrintE '\bYour \rF\bl\ra\bt \rB\br\ro\bk\re\b!' Center
  389.   PrintE
  390.   PrintE 'Stay Away From Atlantic City...' Center
  391.   PrintE
  392.   PrintE '\rBetter Luck\b Next Time.' Center
  393.   PrintE
  394.   Foreground Black
  395.   Print 'Press <\rRETURN\b> ' Center
  396.   Input [UInput] 2
  397.   Goto Save_Score
  398.  Endif
  399.  PrintE
  400.  Print 'Press <\rRETURN\b> To Continue ' Center
  401.  Get_Key [UInput]  ;* Changed to Get_Key
  402.  
  403.  If [UInput] = Q
  404.   PrintE 'Quit'    ;* added print Quit
  405.   Goto Save_Score
  406.  Ef Time_Exceeded
  407.   PrintE 'Sorry Your Out Of Time!'    ;* added print out
  408.   Goto Save_Score
  409.  Else
  410.   Goto Get_Bet
  411.  Endif
  412.  
  413.  
  414. Save_Score:
  415.  PrintE
  416.  PrintE
  417.  Print 'Recording Your Score of \r$[Money]\b' Center
  418.  
  419. Record:
  420.  if file_exists '[pathname]bjscore.txt' * added
  421.   Open '[Pathname]BjScore.Txt' Input
  422.   Finput [Var51] ; High Score Player
  423.   Finput [Var52] ; High Score Wins
  424.   Finput [Var11] ; Player1
  425.   Finput [Var12] ; Player2
  426.   Finput [Var13] ; Player3
  427.   Finput [Var14] ; Player4
  428.   Finput [Var15] ; Player5
  429.   Finput [Var16] ; Player6
  430.   Finput [Var17] ; Player7
  431.   Finput [Var18] ; Player8
  432.   Finput [Var19] ; Player9
  433.   Finput [Var20] ; Player10
  434.   Close
  435.  endif
  436.  
  437.  Set [Var30] = &1   ; Users Handle
  438.  Set [Var31] = &24  ; Todays Date
  439.  Set [Var32] = [Money] ; Winnings
  440.  
  441.  Open '[Pathname]BjScore.Txt' Output
  442.  If [Var32] > [Var52]  ; See if this guy is High Scorer
  443.    Set [Var51] = '[Var30][Var31] $[Var32]'
  444.    Set [Var52] = [Var32]
  445.  Endif
  446.  FprintE [Var51]
  447.  FprintE [Var52]
  448.  
  449.  Expand [Var30] 22
  450.  If [Money] > 0
  451.   Set [Var10] = '[Var30][Var31] $[Var32]'
  452.  Else
  453.   Set [Var10] = '[Var30][Var31] Busted'
  454.  Endif
  455.  FprintE [Var10] ; Post Players Score
  456.  FprintE [Var11] ; roll the others
  457.  FprintE [Var12]
  458.  FprintE [Var13]
  459.  FprintE [Var14]
  460.  FprintE [Var15]
  461.  FprintE [Var16]
  462.  FprintE [Var17]
  463.  FprintE [Var18]
  464.  FprintE [Var19]
  465.  
  466.  Close
  467.  
  468.  
  469.  Expand Money 6
  470.  
  471.  Open '[pathname]bjplayer.dat', Append
  472.   point PId
  473.   Fprint Money
  474.  Close
  475.  
  476.  PrintE
  477.  Print 'Your Score Has Been Posted.' Center
  478.  
  479.  
  480. Display_Scores:
  481.  Clear Screen
  482.  PrintE
  483.  Foreground Red
  484.  PrintE 'BlackJack ScoreBoard' Center
  485.  Foreground Black
  486.  PrintE '------------------------------' Center
  487.  
  488.  Open '[Pathname]BjScore.Txt' Input
  489.  Finput [Var1] ; Read High Score Player
  490.  Finput [Var0] ; Dummy read to position past High Score
  491.  
  492.  PrintE '* * * * * \rHigh Score \b* * * * *' Center
  493.  PrintE
  494.  PrintE [Var1] Center
  495.  PrintE
  496.  Foreground Red
  497.  PrintE 'Last \b10\r Players' Center
  498.  Foreground Black
  499.  PrintE '---------------' Center
  500.  Foreground Red
  501.  PrintE 'Users Name              Date   Amount' Center
  502.  Foreground Black
  503.  PrintE '--------------------- -------- ------' Center
  504.  
  505. Read:
  506.  Finput [Var1] ; Player
  507.  if var1 = ''  ;* added
  508.   goto read
  509.  endif
  510.  
  511.  Expand [Var1] 38
  512.  PrintE [Var1] Center
  513.  Goto Read
  514.  
  515. EOF:
  516.  Close
  517.  Print 'Press <\rRETURN\b> To Continue' Center
  518.  Input [Var1] 1
  519.  
  520. ; execute 'menu.scr' ; run another menu