ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ BJTables v1.5 ³ ³ by ³ ³ Anthony J. Mannucci ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Copyright Anthony J. Mannucci i LIST OF CONTENTS ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ- I. Introduction i) What is BJTables? ii) Who is BJTables for? iii) Special Features iv) Conditions for Use II. Installing BJTables i) System Requirements ii) Files Included With the Current Release iii) Up and Running III. Playing BJTables i) The BJTables screen ii) Issuing Commands iii) Program Flow iv) Supervisor Mode IV. Configuring BJTables i) The Strategy Tables ii) Loading Strategies iii) Creating New Strategies iv) The Form of the Strategy Tables V. Customizing the Count Method i) Loading The Card Count File ii) Setting up the Card Count Files VI. Choosing Different Rules of Play VII. Communicating with the Author VIII.Acknowledgements IX. Bibliography ii I. INTRODUCTION ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ- I.i WHAT IS BJTABLES? ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ- BJTables is a program which emulates the game of casino blackjack, and allows the player to play a realistic form of casino blackjack. The purpose of the program is to help the user develop blackjack skills, particularly as far as card counting abilities are concerned. Casino blackjack is the only gambling game where a skilled player can actually turn the odds to his advantage, and play a game with favorable odds. This program is intended to allow a skilled player a way to effectively practice his game before venturing out into the casino. BJTables software reads in modifiable strategy tables and has a customizable card-counting scheme. The user can try out different card-counting strategies and decide which is best for him. I.ii WHO IS BJTABLES FOR? ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ- BJTables is intended for people who already know something about the rules of blackjack. No attempt is made in this manual to teach the rules of the game. (There are many useful books on the subject, and pamphlets are available from the casinos. See the references at the end of this manual). Someone with a card- counting method in mind will particularly profit from the program, since it keeps an internal card count. The program can also be taught a strategy which is based on the count, and help the player in mastering a particular counting system. BJTables requires only a small amount of communication between the player and the program. The input to BJTables is primarily through short "mnemonics" which are key sequences entered through the keyboard. No use is made of a mouse. BJTables does not use extremely fancy graphics and sound. Rather, programming resources have been spent on the making the program valuable for the card-counting blackjack enthusiast. In particular, features such as customizable card counting and strategy tables make the program ideal for practicing different strategies before venturing out to the casino. I.iii SPECIAL FEATURES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ A list of the most interesting features of this program is given here. First, a note about terminology: 1 In this document, "player" refers to one of the players sitting at the table (excluding the dealer). In the current version of the software, there are always three players. "User" refers to the player position which is controlled by the person operating the software. The user occupies the center position in the three player game. Some of the special feature of the program are: þ A separate strategy can be chosen for each of the players. þ The program allows the user to implement his own card- counting scheme in a rather general way. The card count is maintained by the program for reference by the user, or for use in strategies. þ The program will provide information on the correct moves at the request of the user. þ The program supports surrender. þ The blackjack rules can be modified. þ The dealer can deal from a shoe consisting of from 1 to 4 decks. The user can select when the dealer will shuffle up. New for version 1.5 are: þ More on-screen prompts. þ The program supports a supervisor mode. The program will "beep" when the player makes an incorrect move. þ Implementation of "quick key" access to the current card count and correct action. þ The ability to select program pausing, and the ability to control program speed. I.iv CONDITIONS FOR USE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ This program is distributed as "freeware": it is free to any one who wants to use it, but we retain the copyright. It cannot be sold for profit without the express permission of Anthony J. Mannucci. It can be distributed or copied freely as long as it unmodified. All references to Anthony J. Mannucci as author must be retained. A nominal fee (not to exceed $8) covering the cost of distribution and a resonable profit for the distributor is acceptable. Chapter VII has addresses which can be used for communication with the author. The author would appreciate hearing from any and all users of this program! 2 II. INSTALLING BJTABLES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The BJTables program package consists of 14 files. There is the executable file, a manual, the strategy tables, count files and options files. The latter three types are ascii files and are meant to be changed if desired. Installing the program is simple. Copy the 14 files to a directory of your choice on a disk of your choice, and you're ready. The program always looks for its files in the default directory (the directory you were in when you started the program). The manual for the program (this file) can be printed from the DOS command line or read in a word-processing program or text editor. This manual is a DOS text file (ASCII file). EXAMPLE: Installing BJTables on a hard disk. 1) Create a special subdirectory for the program: C>mkdir \BJTABLES 2) Copy all the files to your hard disk. If the files came from the A: drive, do this: C>copy A:\*.* C:\BJTABLES\*.* 3) Set your default directory to the BJTABLES subdirectory: C>cd \BJTABLES 4) To start the program, type BJTABLES: C>BJTABLES Computer users with Hercules graphics should read the special note below. II.i SYSTEM REQUIREMENTS ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The BJTables program is graphics-based. It can be run in monochrome or color modes. It has been tested with the following graphics standards: a. VGA (16 colors out of 256). b. EGA 16 colors. c. EGA monochrome. d. CGA monochrome. e. Hercules graphics (see special note below). Most IBM-Compatible computers should suffice to run this program. Not much memory is required; although I do not know the "minimum" necessary, it is likely that any computer with more than 384K of memory will suffice. SPECIAL NOTE FOR HERCULES GRAPHICS USERS: the file MSHERC.COM must be run before the program is run. 3 II.ii FILES INCLUDED WITH THE CURRENT RELEASE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ There are 14 files included with the current release of BJTables. These are: þ BJTABLES.EXE -- the executable file. þ MANUAL.TXT -- the program manual. þ OPTIONS.DAT -- an ASCII file containing program options. þ COUNT.DAT -- an ASCII file containing instructions for configuring the card-counting method. þ COUNT.SMP -- a particular card-counting method (the "simple point count" of reference 2). þ COUNT.MNC -- another card-counting method (the "main-count" system described in reference 1). þ BASICSTR.DAT -- the standard "basic strategy" strategy encoded in tabular form. This is an ASCII file. þ MAINCNT.DAT -- the "main count" strategy encoded in tabular form. This strategy is discussed in reference 1. þ MAIN_2.DAT -- the "main count" strategy for a certain set of rules (doubling down after splitting is allowed). Again, see reference 1. þ BJSTRAT.1 -- the strategy table for player 1. This is the same as the basic strategy initially. þ BJSTRAT.2 -- the strategy table for player 2 (user). This is the same as the basic strategy initially. þ BJSTRAT.3 -- the strategy table for player 3. This is the same as the basic strategy initially. þ MSHERC.COM -- driver file for Hercules graphics users. þ TMSRB.FON -- font file for the program. All of the above files are plain DOS text files (ASCII files) except for executable file, MSHERC.COM and TMSRB.FON. II.iii UP AND RUNNING ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ BJTables is a highly customizable program, but it comes ready to run. The following files are necessary before the program can be run: þ BJTABLES.EXE þ TMSRB.FON þ OPTIONS.DAT þ COUNT.DAT þ BJSTRAT.1 þ BJSTRAT.2 þ BJSTRAT.3 These files can be used in their initial form, or they can be modified. But they all must be present in the same subdirectory for the program to function. To get BJTables running, simply 4 make sure all of these files are together in the same subdirectory. Then, change your default to that subdirectory and simply type BJTABLES at the DOS prompt. SPECIAL NOTE: for HERCULES graphics, the file MSHERC.COM must be executed or the program will not function properly. Simply type MSHERC at the DOS prompt before running BJTables. To understand how to modify or interpret the last 5 files, see the section entitled "Customizing BJTables". As shipped, BJTables is configured to use the so-called "basic strategy" as described in reference 1. The card counting method configured in COUNT.DAT is the "simple count" described in Edward O. Thorpe's book (see Reference 2 and the COUNT.DAT file). There are three players sitting at the table, one of them controlled by the user. The casino rules has the dealer standing pat on a count of soft seventeen. See the OPTIONS.DAT file and the section on customization to see just what additional rules are possible. III. PLAYING BJTABLES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ This section of the manual describes how to operate the program. Operation has been kept simple because, in a real game, you are worrying about the count and the strategies, rather than the mechanics of the game. III.i THE BJTABLES SCREEN ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ- The screen is divided into 4 basic areas: 1) The play box. 2) The bet box. 3) The bank box. 4) The dealer area. The play box is the large rectangle vertically centered on the screen. There is one for each player. This is where the players are dealt their cards. The bet box is the small rectangle sitting just above the play box. This is where the bets are placed and where the payoffs are received. The bank box is the rectangle below the play box. This is where the players bankroll is registered. It is updated automatically when bets are made and payoffs received. The dealer area is at the top of the screen. It is where the dealer's cards are dealt. The above are the "permanent" screen areas. There are also "pop- up" screens, which come from two sources: the help window, and the 5 insurance-bet box. The latter presents itself when the dealer up- card is an ace, and insurance is available. There is also a small red "prompt" message which appears at the lower left when necessary. III.ii ISSUING COMMANDS ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ- The user interacts with BJTables via alphanumeric keyboard input. There are two general classes of input: 1) Commands which allow the user to play the game of blackjack. 2) Commands which control unique BJTables features, such as the help system and "quick keys". All input is only received when it is the user's turn to take some action, such as betting or playing. The blackjack game commands are divided into two categories: bets and plays. BETS ÄÄÄÄ The following rules apply to bets: þ Bets must be EVEN whole numbers (no decimal places). þ Bets must be in the range 2-98. þ Are entered from the keyboard or numeric keypad (NUM LOCK on). þ Are terminated with either a period (".") or by hitting the key. þ If a mistake is made, the user can cancel the bet by pressing the 'x' key. Of course, this can only be done BEFORE the bet termination key is pressed. Note that certain bet amounts are not legal in blackjack, and the program will not allow them. For example, when doubling down, the doubling down bet must equal the original bet. If any other bet is attempted, the program will beep and the correct bet will be automatically placed. And when placing insurance, the insurance bet must be half the original bet. 6 PLAYS ÄÄÄÄ- Plays are commands about specific actions you wish to take, for example: "Hit", "Stick", "Double Down", etc. Each play is selected by a keyboard mnemonic, consisting of one or two letters. There is no visual feedback about the letters you have entered. The set of commands is: Command Press HIT h STICK st DOUBLE DOWN d SPLIT PAIR sp SURRENDER su INSURE i (or 'y') BLACK JACK bj If ERRORS are made during keyboard input, just hit the key. This "clears out" any incomplete or invalid entries you have made so far. As long as no valid command string was entered, you have a chance to recover. But, as in the real game, YOU CAN'T TAKE BACK MOVES! Sometimes, a bet is expected after a particular play. You will be prompted to place a bet with a message in the lower left-hand portion of the screen. As an example, suppose you decide to double down. You must enter a bet value immediately after the double-down command. The program will prompt you for a bet. At this point, you can place a bet or ask for assistance in a variety of ways (see below). Similarly, after choosing to split a pair, the program expects the same bet on the split hand as was put on the original hand. If the correct bet is not input immediately after the "sp" command mnemonic, the program will complain in some way. COMMANDS CONTROLLING THE HELP SYSTEM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Now commands which allow the user to get assistance and control certain BJTables features will be discussed. This essentially involves calling up the "help window" or activating "quick keys", which provide help or change a program mode. The help window has five commands related to five specific purposes: 1) Count: the user can request the card count when it is his/her turn to make input. 2) Action: the user can request to see what action should be taken, based on the current card count and strategy being used. 7 3) Help: this command gives the user information about the keyboard mnemonics for the different plays. When bets are expected, the help will discuss betting. 4) Resume: leave the help box and resume play. 5) Quit: quit the program. The help box can be summoned by hitting the slash, question-mark of F1 function keys ('/' or '?' or F1). The help box may also pop up if the program senses the user is completely lost and a variety of non-sense commands have been entered. Once the help window is displayed, it is a simple matter to actually get help: GETTING HELP: A choice in the help box may be selected in one of two ways: 1) the choice can be "highlighted" with the cursor keys. A highlighted choice has the double ">>" symbol in front of it. Once the desired kind of help is highlighted, the choice can be executed by pressing . 2) The first letter of the desired choice can be input. For example, to view the current count, the user can either press the letter "c" when the help box appears, or the user can use the cursor keys to highlight the "Count" command. Then, pressing will display the current point count. QUICK KEYS FOR COUNT AND PLAY ACTION ASSISTANCE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ There is a way to obtain the count and the correct play which does not involve the help window. This is by the use of the "quick key" combinations Alt-A and Alt-C (press the ALT key simultaneously with the C or A key). Pressing Alt-A provides the correct action which should be taken based on the programmed strategy. Pressing Alt-C displays the count and number of remaining cards. III.iii PROGRAM FLOW ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The speed at which the software operates is selectable at start- up. The fastest speed (9) is faster than a real game and the slowest speed (0) is slower than a real game. At any speed, when practicing card counting and strategies, it is easy to get confused. Therefore, the program has a special "pause mode". When this mode is activated, the program stops to allow the player as much time as he/she needs to calculate the count or just figure out what is going on. When the program has paused, a message appears in the lower left corner of the screen. To get the program moving again, just tap a key, such as the spacebar or enter key. This resumes play. Note that if a key is tapped before the program has paused, it will have no effect. Tap the key again. 8 Pause mode can be selected at program start-up time. It can also be toggled during play. When input is expected from the user, the user can press Alt-P. This will toggle pause mode. If it was on, it will be turned off. If off, it will be turned on. A message in the lower left corner displays the status of pause mode when is is changed. A small question mark ('?') is placed at the bottom of each hand, which indicates that the hand is active. When the question mark disappears, the hand is inactive. The question mark is an aid in keeping track of the activities of the other players as well as of your own hand. III.iv SUPERVISOR MODE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The current version of BJTABLES features a new "supervisor" mode. This is also called "beep" mode. When this mode is active, the program will not allow the user to make incorrect plays. This applies to regular plays as well as insurance. If the user attempts an incorrect move, the program will "beep" and not allow the move. This mode is an excellent tool for learning the card-counting system which has been installed. Beep mode can be selected at program start-up time. It can also be toggled using the Alt-B quick key. When the mode is toggled, a message in the lower left corner informs the user what the current mode is. IV. CONFIGURING BJTABLES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ- This section will discuss a very important subject: how BJTables software can be configured or customized. We will cover three areas: generating custom strategy tables, generating custom card- counting techniques, and configuring certain aspects of the rules of play. IV.i THE STRATEGY TABLES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ- One of the strengths of the BJTables software is that it is customizable. In particular, the strategy of each player can be selected by the user. Three DOS text files are used to specify a strategy. Each file controls the strategy for each player. The strategy for the automatically-controlled players determines how they actually play their hands. The strategy for the user- controlled player determines what actions will be recommended when the user chooses the "Action" command from the help box. The strategy tables encode the strategy in a well-defined manner. The tables corresponding to two "published" strategies are included: the "basic" strategy, which is the optimal strategy presuming the player does NOT count cards; and the "main count" strategy developed by Tulcea in his book (reference 1). Note that the latter strategy assumes a certain card counting technique. 9 It is possible to "mix and match" strategies for the different players. That is, each player can be playing his own strategy. The card-counting technique, however, must be common to all three players. The strategy for each player is contained in the files named BJSTRAT.1, BJSTRAT.2 and BJSTRAT.3 for each of the three players. The three strategy tables included in the program are called BASICSTR.DAT, MAINCNT.DAT and MAIN_2.DAT. All of these strategies are based on tables published in Tulcea's excellent book. IV.ii Loading Strategies ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ After a set of strategy tables have been made (or the ones supplied have been used), the program is ready to use them. The strategy file for the first user is given the name BJSTRAT.1. The file for the second and third users is BJSTRAT.2 and BJSTRAT.3. Each of these files can be different from one another, or they can be the same. As an example, suppose we wanted to have all the players play the basic strategy. Then, we could issue three commands at the DOS prompt to achieve this: C>copy basicstr.dat bjstrat.1 This command copies the basic strategy tables in basicstr.dat to the table file used by the first player. Similarly, for players 2 and 3 we would type C>copy basicstr.dat bjstrat.2 C>copy basicstr.dat bjstrat.3 Thus, all the strategy files read by the program contain the same basic strategy tables. If we desire to have the third player play a different strategy (say the "main count" strategy described in Tulcea's book), then we would just copy that file over as follows: C>copy maincnt.dat bjstrat.3 Of course custom strategy tables can (and should!) be built. The same procedure is followed to load these files for the particular player who is to use it. STRATEGY TABLES INCLUDED WITH THE CURRENT RELEASE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ BASICSTR.DAT ÄÄ The basic strategy as described in Tulcea (or slightly differently in Thorpe). This strategy table is generally used when card counting is not being done. It is the best strategy when the player is not counting cards. 10 MAINCNT.DAT ÄÄ Tulcea "Main Count" system when doubling down after splitting IS NOT allowed. This rendition of the tables applies when the dealer stands on soft 17. MAIN_2.DAT ÄÄ Tulcea "Main Count" system when doubling down after splitting IS allowed. Again, the dealer is assumed to stand on soft 17. IV.iii CREATING NEW STRATEGIES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ For most purposes, the basic strategy is a good starting point for play. This strategy gives a good play level for most situations. However, to truly gain a high skill level in blackjack, the next step is to employ some form of card-counting. And when card-counting is used, the best strategies available are strategies which depend on the count of the cards. Therefore, the strategy tables do not merely encode actions the player should take based on the lay of the cards alone; the strategy table must also encode the correct strategy for whatever the count happens to be. Generally, there is a particular counting method associated with a given set of tables. This counting method is also customizable (see below). Before discussing the way the strategy tables are constructed, we must refine our definition of what we mean by the "value" of a hand, since strategy decisions must be based on the sum total (or value) of the player's hand. We will define what we mean by the numerical "value" of a hand. This leads us into the meaning of "hard" and "soft" hands. Our definitions will follow those in Tulcea's book (reference 1). DEFINITION 1: The "value" of a hand. For a hand which contains no aces, the value of a hand is the sum total of the values of the individual cards in the hand. Remember that all face cards have the value of 10. If a hand contains aces, count one ace as 11 if this keeps the total less than 21. Count the ace as 1 if necessary to avoid busting (sum exceeds 21). EXAMPLES: hand=2,2,K has a value of 14. hand=2,A,5 has a value of 18. hand=2,A,A has a value of 14. hand=8,9,A has a value of 18. DEFINITION 2: The meaning of "hard" and "soft" hands. A "hard hand" is one which has no aces, or counts ALL aces in it as having the value of 1. A "soft hand" has one ace counting as 11 when determining the value. EXAMPLES: hand=2,2,K is a hard hand (no aces). hand=2,A,5 is soft because the ace can be counted as 11 without busting. hand=2,A,A is soft because one ace can be 11. hand=8,9,A is hard because the ace MUST count as 1. 11 IV.iv THE FORM OF THE STRATEGY TABLES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Let's discuss the form a strategy table must take. A strategy table must provide the correct action for whatever card totals or pairs the player has (whether hard or soft hand), and for whatever up-card is shown by the dealer. Therefore, the two "dimensions" for a table are provided by those quantities. Each column of the table corresponds to a specific dealer up-card; the rows of the table correspond to a particular value for the player's hand (recall our definition of value defined above). Or, in the case of pairs, the rows are labelled by the possible pairs in the hand. Each entry in the table is a number. When a card counting scheme is used, this number is used along with the current card count to determine the appropriate action. When a table is intended to be used without a card count, the count can be assumed to be zero for the purposes of reading the table. Strategy tables are used to answer "yes/no" questions. There is a different table for each type of move a player can make. The table answers the question "Should I make the move or not?". This is a yes or no question. The tables can always be used to answer a yes/no kind of question. To use the tables correctly, you have to know what specific question is being asked. Specifically, there are separate tables which answer the following questions: SURRENDER: should I surrender ("yes") or not ("no"). SPLIT PAIR: if I have a pair, should I split it ("yes") or not ("no"). DOUBLE DOWN: if allowed, should I double-down ("yes") or should I not ("no"). STAND/HIT: should I stand pat or not? In other words, should I stand ("yes") or take another card ("no"). ***************************************************************** IMPORTANT: Please note that, for the hit/stand decision, "yes" means STAND. As in "yes, I will stand", and "no, I will hit". ***************************************************************** Once we know what questions are being answered by the tables, we have to determine how the table provides us with the answer. A certain position in the table corresponds to a particular dealer up-card and a particular value (or total) for the player's hand. This number has to be translated into a "yes" or "no" statement. How is this done? Very simply: IF THE CARD COUNT IS GREATER THAN OR EQUAL TO THE NUMBER IN THE TABLE, the answer is "yes". IF THE COUNT IS LESS THAN THE NUMBER IN THE TABLE, the answer is "no". When a strategy table is to be used without reference to a card count (such as the so-called "basic" strategy), just assume the count is always 0. 12 ***************************************************************** IMPORTANT NOTE: Strategy tables always work within the context of a certain order in decision making. It could happen that two tables might give the answer "yes" for the same situation. THIS SHOULD NOT CAUSE CONFUSION. The order in which to exercise play decisions is the same order as that shown above. That is, first consider surrender, then pair splitting (if possible), then doubling down, and finally stand/hit. If any of the answers are YES along the way, do it! ***************************************************************** TABLE EXAMPLE 1: the "basic" strategy and the hit/stand decision. By way of an example, we present a table from BASICSTR.DAT, the file containing the table for the basic strategy (see below). This particular table is for the STAND/HIT decision when the player has a hard hand (no possibility of using an Ace as either a one or 11 ÄÄ using it as 11 would bust the hand). The numbers on the left, before the colon, represent the value of the player's hand. The sequence of numbers separated by commas are the table values corresponding to every possible up card for the dealer, from 2 to A (all face cards count as 10 of course). In the real strategy files, the columns are not labelled. The labels shown below are for clarity in this discussion. <ÄÄÄÄÄÄÄÄÄÄÄÄDealer's Up CardÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ> 2 3 4 5 6 7 8 9 10 A hit_stand_hard 17: 98, 98, 98, 98, 98, 98, 98, 98, 98, 98 16:-100, 98, 98, 98, 98, 98,-100,-100,-100,-100 15:-100, 98, 98, 98, 98, 98,-100,-100,-100,-100 14:-100, 98, 98, 98, 98, 98,-100,-100,-100,-100 13:-100, 98, 98, 98, 98, 98,-100,-100,-100,-100 12:-100,-100,-100, 98, 98, 98,-100,-100,-100,-100 11:-100,-100,-100,-100,-100,-100,-100,-100,-100,-100 Let's see what this table says about hitting and standing. Suppose the player's hand has a value of 13, and the dealer is showing a Jack (which counts as 10). Then, the number corresponding to this situation is -100 (ninth number over on the row labeled by 13). Since the basic strategy does not use a count, we can assume the count is zero. Thus, the "count" is GREATER than the number of the table, and this means "yes". Thus, the player should stand. That is, when the player has the hand value of 13 and the dealer shows a Jack, the tables says the player should stand. 13 At first glance, the table appears incomplete. What happens if the player's hand has a value of 18 or more? Or what if the value is 10 or less? The answer to this question is this: the "missing" rows of the table replicate the last row at each end. For example, the rows for the values 18 through 20 look exactly the same as that for 17 (of course, the total of 21 is an exception). Similarly, the rows for totals 10 and below are the same as the row for value 11. So, the strategy for hand values of 18-20 are exactly the same as the strategy for a hand value of 17. The strategy for hand values 10 and below are the same as the strategy for the hand with value of 11. Now, let's look at a table for splitting pairs. For the basic strategy, the table is: <ÄÄÄÄÄÄÄÄÄÄÄÄDealer's Up CardÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ> 2 3 4 5 6 7 8 9 10 A sp 1,1: -100,-100,-100,-100,-100,-100,-100,-100,-100,-100 10,10: 98, 98, 98, 98, 98, 98, 98, 98, 98, 98 9,9: 98,-100,-100,-100,-100,-100, 98,-100,-100, 98 8,8: -100,-100,-100,-100,-100,-100,-100,-100,-100,-100 7,7: 98,-100,-100,-100,-100,-100,-100, 98, 98, 98 6,6: 98, 98,-100,-100,-100,-100, 98, 98, 98, 98 5,5: 98, 98, 98, 98, 98, 98, 98, 98, 98, 98 4,4: 98, 98, 98, 98, 98, 98, 98, 98, 98, 98 3,3: 98, 98, 98,-100,-100,-100,-100, 98, 98, 98 2,2: 98, 98, 98,-100,-100,-100,-100, 98, 98, 98 In this table, the rows are labelled by all the possible pairs held by the player. As for all the tables, the columns are for the dealer's up card, in the order 2-A. Let's suppose the player holds a pair of sixes, and the dealer shows an 8. The number in the table is 98. Since the count is zero (i.e. there is no count for the basic strategy), the count is LESS than the number in the table. Therefore, the table's answer is "no". In this case, it means "No, I should not split my pair of sixes". Now, suppose the dealer were showing a 7 instead. Then, the number in the table is -100. Here, the count (= 0) is GREATER than the table entry. Therefore, the table provides the answer "Yes" and the player SHOULD split the pair of sixes. Similar rules apply to all of the tables. See the BASICSTR.DAT file for all of the tables. 14 TABLE EXAMPLE 2: The Main-Count System The rules for interpreting the tables are the same if a card counting scheme is used. Let's use an example for the main-count strategy table included in the file MAINCNT.DAT (the main-count system is discussed in reference 1). This table, transcribed from reference 1 and included with the program, applies when the dealer stands on soft-17. Here is the hit-stand table for hard hands: <ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄDealer's Up CardÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ> 2 3 4 5 6 7 8 9 10 A hit_stand_hard 18: -999, -999, -999, -999, -999, -999, -999, -999, -999, -999 17: -999, -999, -999, -999, -999, -999, -999, -999, -999, -23 16: -32, -35, -40, -45, -50, 30, 23, 17, 1, 28 15: -21, -24, -27, -32, -33, 34, 30, 26, 12, 28 14: -12, -15, -20, -24, -24, 51, 999, 41, 24, 42 13: -4, -8, -11, -14, -15, 999, 999, 999, 999, 999 12: 9, 5, -1, -6, -3, 999, 999, 999, 999, 999 11: 999, 999, 999, 999, 999, 999, 999, 999, 999, 999 Note how this table has many different numbers in it. The main count system is associated with a particular card counting method, as configured in the file COUNT.MNC (such files are discussed later). Let's take an example. Suppose the dealer shows a 6, and the player has a hard hand value of 13. Then, if the count is -15 or above, the answer is "yes": that is the player should stand. Otherwise, the player should "hit" or draw a card. SYNTAX RULES FOR STRATEGY FILES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Now that you understand the rules for the tables, you can make your own strategy files or change the files that have been provided. It is important that the syntax rules of the strategy files are followed exactly. These rules are: 1) The strategy files are standard DOS text files. 2) The individual tables within the files must have one of the following titles, spelled out exactly and placed just before the first row of the table (use lower-case letters and the underscore character only!). The table titles for each of the relevant situations are: hit_stand_hard hit_stand_soft dd_hard dd_soft sp surrender 15 Note there MUST be a separate table for hard and soft hands. See the definitions above. ALL TABLES MUST BE INCLUDED IN A STRATEGY FILE. 3) The rows of the tables are labeled by the value of the players' hand followed by a colon. (See the definition of "value" we discussed above.) The exception is the split- pair table, which is labelled by every possible card pair. Card values are separated by a comma (see the examples provided). 4) The order of the rows is important. Always put the rows in decreasing order as shown in the examples. In the split- pair table, the ace pair comes first. 5) The numbers following the colon determine what answers the table will give. There is one number for each possible value of the dealer's up-card, in the sequence 2 to A (all face cards and 10 take up one column). The tables entries are separated by commas. You can get these numbers from different published strategies, or you can make up your own. 6) If all possible player values are not represented in the table rows, it is assumed that the values above and below the table are continuations of the top or bottom row, respectively. For example, in the hit_stand_hard table shown above for the main count system, the row for the totals 19-21 looks like the row for the total 18, the topmost row shown. Also, the rows for totals 10 and below look like that for row 11. V. CUSTOMIZING THE COUNT METHOD ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ- For advanced players, counting cards is an important part of the game. The card count is a way of keeping track of which cards have been played from the deck and which cards remain in the deck. The references contain more information about particular counting strategies. This section of the manual explains how BJTables can be used to keep track of a particular card count which you can customize for your own purposes. V.i LOADING THE CARD COUNT FILE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The count method is determined when the program reads the file called COUNT.DAT. This file should contain information on the card counting method. This file does not contain tables; it contains "keywords" and "values". Setting these up for a particular counting scheme is discussed below. 16 To load a particular counting method, the user can manually edit the file COUNT.DAT, or the user can copy one of the supplied files to the file name COUNT.DAT. For example, to use the "main count" system discussed in reference 1, simply execute the following DOS command at the DOS prompt: C>copy COUNT.MNC COUNT.DAT When this is done, the information originally in COUNT.DAT is replaced by the counting scheme represented in COUNT.MNC. If the original COUNT.DAT information is to be saved, the file must be copied to some other name before the above operation is performed. V.ii SETTING UP THE CARD COUNT FILES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The BJTables program keeps track of the count along with the user. That is, BJTables keeps track of your count. (Each player "sees" a slightly different counts since different players have seen different cards at any given time). The reason BJTables keeps track of your count is so that it can advise you on what strategies to pursue. Also, knowledge of the count can help your betting decisions. Before placing a bet, you may ask BJTables what the count is. Central to the idea of card counting is the assignment of a number to each card type. For example, the cards 2-5 might be assigned the values 1 and the cards 9-A might be assigned the values +1. Every time a card is turned up and revealed to the player, the card count changes. For example, if an A is revealed, the count might change by +1. If a 3 is revealed, the count will decrease by 1. This sort of calculation leads to a "running total" type of count. Many counting schemes are "normalized", that is, they require that a ratio be calculated to get the count. (The "main count" scheme of Tulcea is like that). Typically, the "running total" is divided by the number of unseen cards. Or some other running total might be divided by the number of cards seen etc. In order to handle general situations, the BJTables program can handle counts which are ratios, as well as the running total type of count. The scheme used by BJTables is based on keeping two counts going at once. These two counts are called the "numerator count" and the "denominator count". The actual count computed by the program is given by the ratio: card_count = (numerator count)/(denominator count) Both the numerator and denominator counts have initial values which can be user-specified. The counts are then changed every time a card is revealed (turned up). How the two counts change depends on two "arrays" or sequences of numbers, which contain 17 the count increment for each possible card. These arrays are called "numerator_array" and "denominator_array". The first number in the sequence tells how to change the count for a 2 card, and the numbers follow all the cards in turn up to the Ace. One sequence applies to the numerator count, and the other applies to the denominator count. In addition to these arrays which express how the count changes when a card is revealed, the numerator and denominator count must be given initial values. These have the names "initial_count_numerator" and "initial_count_denominator". For the "initial_count_denominator", a value of zero has a special meaning. It means "set the initial denominator value equal to the number of cards in the deck". Please see the file COUNT.DAT for more instructions. This file contains comments and information about the structure of the count files. Before this gets too bewildering, let's focus on some specific examples. These are taken from counting methods discussed in Tulcea's book. ***************************************************************** CARD COUNTING EXAMPLE 1: the "running count" of the Main Count System given in reference 1. In this system, each card is assigned a value, and the count just rises and falls depending on which card is revealed. The initial value of the count is zero: initial_count_numerator = 0 The increments and decrements for each card (called "weights") are defined as follows: CARD 2 3 4 5 6 7 8 9 10 A WEIGHTS 1 1 2 2 2 1 0 0 -2 -1 Thus, for the program to keep track of the count, the numerator of card_count must change as indicated in the above table. So the numerator array is given by the sequence numerator_array = 1, 1, 2, 2, 2, 1, 0, 0, -2, -1 (Recall that the first number in the sequence corresponds to the "2" card and the last number corresponds to the Ace. All face cards count as 10). 18 NOW WAIT A MINUTE! Computation of the running count doesn't involve any division, but the card_count number defined above has both a numerator and a denominator. It is easy to handle this situation. First, we set the initial value of the denominator to 1: initial_count_denominator = 1 Then, we don't allow it to change no matter what card is revealed. Thus, the denominator_count remains 1 and does not affect our result: dividing by the number 1 is the same as not doing the division at all! So, for the running count, the denominator array would be: denominator_array = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 with an initial value of 1. CARD COUNTING EXAMPLE 2: the "running index" of the Main-Count system (again, see Tulcea). This is a true normalized count, since a non-trivial division is necessary. The numerator is the running count, and so is decided similarly to example 1. But further calculation is necessary. The "running index" is the "running count" divided by the number of unseen cards, and the whole result multiplied by 100. So, the running index has the same numerator_array as before, with each number multiplied my 100: numerator_array = 100, 100, 200, 200, 200, 100, 0, 0, -200, -100 Now, the denominator must keep track of the number of unseen cards. The initial value of the denominator should be the number of cards in the deck (this depends on the deck size used). initial_count_denominator = 0 Remember that the value of 0 is treated specially: it means "use the number of cards in the deck". (This special rule applies for the denominator count ONLY.) To compute the number of unseen cards, set up the denominator array to give each member of the array the same value of -1: denominator_array =-1, -1, -1, -1, -1, -1, -1, -1, -1, -1 Every time a card is revealed, the denominator count decreases by 1. Each time a card is revealed, the number of unseen cards decreases by one, and so does our denominator. This construction gives the correct running index. ***************************************************************** 19 See the files COUNT.MNC and COUNT.SMP for two examples of card counting strategies. These files also contains comments which help explain how to initialize the different keywords. COUNTING METHODS INCLUDED IN THE CURRENT RELEASE COUNT.DAT ÄÄ The REQUIRED file is used by BJTABLES for configuring the count method. It also contains useful information. It is originally set up for the "simple count" described by Thorpe. See COUNT.SMP below. COUNT.MNC ÄÄ The "Main Count" as described in Tulcea. Should be used with appropriate strategy table to emulate Tulcea's system. COUNT.SMP ÄÄ The "simple count" described in Thorpe's book. This count can be used with the basic strategy as described by Thorpe, and encoded in the file BASICSTR.DAT. Essentially, this counting method is only used as a guide for how large the bets should be. VI. CHOOSING DIFFERENT RULES OF PLAY ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ There is some flexibility in choosing the casino rules. This affects such things as whether or not the dealer will draw or stand to soft 17. Other options are discussed here also. Play options are set by editing the OPTIONS.DAT file. This file is always read by the program for the purpose of setting up the rules of play. This file contains "keywords" which are assigned different values. These keywords and the allowed values are discussed next. See the included version of the OPTIONS.DAT file for concrete examples. This file contains helpful comments. LISTING OF KEYWORDS IN THE OPTIONS.DAT FILE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ KEYWORD NAME: RULE. VALUES: "RENO" rules: dealer draws to soft seventeen. "ATLANTIC_CITY" and "LAS_VEGAS": dealer stands on soft seventeen. What the dealer does when he/she has soft seventeen (seventeen with an ace counted as 11). Some casinos have the dealer draw on soft seventeen, some don't. KEYWORD: DD_AFTER_SPLIT VALUES: YES or NO. Doubling down after splitting a pair. Some casinos allow the player to double on hands which come after splitting a pair. This option can be either YES or NO. 20 KEYWORD: SURRENDER VALUES: YES or NO. Surrender. Some casinos don't allow a player to surrender. This can be set to YES or NO. KEYWORD: NUMBER_OF_DECKS VALUES: 1 to 4. Number of decks. Casinos typically use between 1 and 4 decks in a game. BJTables can be requested to use between 1 and 4 decks. KEYWORD: SHUFFLE_UP VALUES: 0 to 3/4 of the number of cards in the game. Number of cards remaining which triggers shuffling of the deck. Many casinos do not deal until the entire deck is depleted, particularly when more than one deck is used. The user can select how many remanining cards trigger the dealer to re- shuffle the deck. Note that if the end of the deck is reached during a hand, the dealer will shuffle up because it is necessary. This will reset the card count. Please see the OPTIONS.DAT file for more information. VII. COMMUNICATING WITH THE AUTHOR ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Just because this software is free of charge doesn't mean I wouldn't appreciate something from the users of this program! I would love to hear comments and suggestions from anyone who would like to communicate with me! Please send suggestions and/or comments and/or bug reports to: U.S. MAIL: Tony Mannucci P.O. Box 411264 Los Angeles, CA 90041 GENIE E-mail: T.MANNUCCI DELPHI E-mail: MANNUCCI VIII. ACKNOWLEDGEMENTS ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The author would like to acknowledge the fact that this software was developed using Microsoft's Quick C compiler version 2.0. I have nothing but good things to say about this compiler. I can highly recommend it. I would also like to thank David M. Goldhaber for his assistance with the questions concerning the rules and play of blackjack. 21 VIII. BIBLIOGRAPHY ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ [1] C. Ionescu Tulcea, "A Book on Casino Blackjack", Pocket Books, New York, 1983. [2] Edward O. Thorpe, "Beat the Dealer", Vantage Books, New York, 1966. 22