Bidding Practice using BBO

One of the excellent tools under Bridgebase Online (BBO) is “bidding table” which allows us to practice partnership bidding.

Deal source window provides various options to set constraints for randomly generated hands. But the real power is under the “Advanced” tab which allows you to plug-in additional programming code to define the constraints more precisely. This is truly a powerful feature. BBO uses Hans Van Staveren’s Dealer program to generate hands. I have created some code using syntax used by the Dealer program for our partnership bidding practice. When we practice, we generally target few hand types in a particular session and this tool saves lot of time for our targeted bidding practice by generating specified hand types for both opener and responder. In this article, I will try to demonstrate this process in a step by step manner and share the code I wrote as an example. I have written this specifically for all the opening bids and responses in our bidding system (Meck Lite Precision).

The following are the steps:

Step 1:

Login to BBO and open a bidding table

Navigation: Play or Watch Bridge> Start a table > Start a training table > Start a bidding table

Step 2:

Press ‘Deal Source’ button at the bottom of the screen. You will see number of tab windows here. Open General tab and uncheck North, West, East and leave on South as Dealer. We will not use North, South, East, West tabs for this purpose.

Step 3:

Open “Advanced” tab and check the box “Use this input for Dealer program.”

Copy & paste the following lines of code:

#precision hand generator

generate 10000

produce 25

vulnerable ns

dealer south

south1n = (shape(south, any 4333 + any 4432 + any 5332) && hcp(south)>=14 && hcp(south)<=16)

south2n = (shape(south, any 4333 + any 4432 + any 5332) && hcp(south)>=19 && hcp(south)<=20)

south1c = (not south1n) && (not south2n) && hcp(south)>=16

south1h = (hearts(south)>= 5 &&hcp(south)>=10&&hcp(south)<=15)

south2c = (clubs(south)> 6 && spades(south) <6 && hearts(south) <6 && diamonds(south)<6&&hcp(south)>=10&&hcp(south)<=15)

south2d = (hearts(south)< 5 && spades(south) <5 && diamonds(south) <2&&hcp(south)>=10&&hcp(south)<=15)

south2h = (hcp(south)>5 && hcp(south)<10) && shape(south, x6xx)

south2s = (hcp(south)>5 && hcp(south)<10) && shape(south, 6xxx)

south3h = (hcp(south)>5 && hcp(south)<10) && shape(south, x7xx + x8xx)

south3s = (hcp(south)>5 && hcp(south)<10) && shape(south, 7xxx + 8xxx)

north1c1d = hcp(north)<=7

north1c1h = hcp(north)>=8 && hcp(north) <=11 && spades(north)<5

north1c1s = hcp(north)>=8 && spades(north) >=5

north1c1n = hcp(north)>=12 && hearts(north) >=5

north1c2c = hcp(north)>=12 && clubs(north) >=5

north1c2d = hcp(north)>=12 && diamonds(north) >=5

north1c2h = hcp(north)>=12 && hcp(north)<=13 && shape(north, any 4333 + any 4432)

north1c2n = hcp(north)>=14 && shape(north, any 4333 + any 4432)

north1c2s = hcp(north)>=12 && shape(north, any 4441)

north1d1h = hearts(north) >= 4

north1d1s = spades(north) > 4 && hearts(north) <=3

north1d1n = hearts(north) <=3 && spades(north) <=3 && hcp(north) <=10

north1d2c = clubs(north) >=5 && hcp(north) >=11

north1d2d = diamonds(north) >=5 && hcp(north) >=11

north1d2h = spades(north)>=5 && hearts(north) >=4 && hcp(north) <10

north1d2s = spades(north)>=5 && hearts(north) >=4 && hcp(north) >=10 && hcp(north) <=12

north1d2n = hearts(north) <=3 && spades(north) <=3 && hcp(north) >=11 && hcp(north) <=12

north1d3n = hearts(north) <=3 && spades(north) <=3 && hcp(north) >=13 && hcp(north) <=15

north1d3c = clubs(north) >=5 && diamonds(north) >=5 && hcp(north) <8

north1d3d = diamonds(north) >=6 && hcp(north) < 8

condition south1c && north1c1h

action printall

Step 4:

The last but one line in the code specifies the current South and North hand. All you need to do is change the condition statement to switch from one bidding practice to another.

“condition south1c && north1c1h” means South is 1 opening hand and North hand is 1 response hand over 1 opening. You can use ‘condition south1d && north1d2d’ to practice 1 opening and 2 response. If you wish north hand to be random against one particular opening, say 1, then you can use the condition statement as ‘condition south1c’.

Click the ‘Redeal’ button to generate a set of hands.