General
The BBA program uses the EPBot class, which is also available as dll libraries:
EPBot86.dll + EPBot86.tlb for 32-bit programs;
EPBot64.dll + EPBot64.tlb for 64-bit programs;
EPBotARM64.dll for 64-bit programs;
EPBot32.dll for 32-bit programs using COM (requires registering the library using the administrator command Regsvr32 "...\Bridge Bidding Analyser\EPBot32.dll" and setting the platform to x86 CPU).
The source code for both libraries is identical. Libraries use the .NET Framework 4.81.
Features:
high speed of operation - within 1 second it is possible to make over 1,000 calls with interpretation;
low RAM consumption - ~200 MB for 1600 bots.
Using the EPBot
GitHub examples:
Using the EPBot - from VB.NET - Edward Piwowar (contains DLL libraries)
Using the EPBot hand simulation - from VB.NET - Edward Piwowar (contains DLL libraries)
Using the EPBot extracting information - from VB.NET - Edward Piwowar (contains DLL libraries)
Using the EPBot public-private information - from VB.NET - Edward Piwowar (contains DLL libraries)
Using the EPBot - additional information:
Configuration of bidding systems (convention card):
EPBot.system_name(system_number) As String - system descriptive name (read only);
EPBot.system_type(system_number) = system_type - setting the system type for the lines:
system_number:
0 - NS first room, WE second room;
1 - WE first room, NS second room,
system_type:
0 - 21GF;
1 - SAYC:
2 - WJ;
3 - PC;
4 - Acol,
EPBot.scoring = type_of_scoring:
0 - match points;
1 - imp,
EPBot.conventions (system, convention) As Boolean - convention is an index or a name. Enabling some conventions disables others, for example:
enabling the convention "Multi" disables:
"Weak natural 2D opening";
"Weak natural 2M opening";
"Wilkosz",
enabling the convention "Soloway Jump Shifts" disables:
"Bergen";
"Reverse Bergen";
"Mini splinter";
"Soloway Jump Shifts Extended".
EPBot.convention_index(convention_by_name) - indexes of conventions.
Auction:
EPBot.new_hand position, longer(), dealer, vulnerability - giving the player a new hand with an indication of the dealer and assumptions:
position:
0 - N;
1 - E;
2 - S;
3 - W,
dealer - the same as position;
vulnerability:
0 - both before;
1 - EW after the game;
2 - NS after the game;
3 - both after the game,
EPBot.interpret_bid potential_bid - a command to interpret the specified potential_bid before it is fixed. Interpret this potential_bid as follows, with position = 13;
EPBot.get_bid - bid request. The get_bid command performs hand analysis before set_bid. After getting data you can use set_bid. The call to this procedure must be in accordance with the bidding order;
EPBot.set_bid position, bid - confirm of the player's bid in position. After .set_bid you can no longer get valid data from this bot.
The EPBot stores and makes available the following public information (reading and writing):
EPBot.info_meaning - contains descriptive meaning of the indicated player's bid;
EPBot.info_alerting - False or True if the bid is alerted;
EPBot.info_feature (position)() - contains a number of additional information about the selected player. Some items (DLLs version 23 or above have new values):
F_MIN_HCP = 402 - the minimum amount of HCP of the indicated player;
F_MAX_HCP = 403 - maximum amount of HCP of the indicated player;
F_MIN_PKT = 404 - the minimum number of balance points of the indicated player;
F_ZGLOSZONE_ASY = 406 (aces)
F_ZGLOSZONE_KROLE = 407 (kings)
F_FORCE_PARTNER = 411 - forces partner if it has a value higher than the current bid (then "F" appears in the bid description in column 2);
F_FORCING_21 = 412;
F_KOLOR_DOMNIEMANY = 424 (trump - this information is available from the user who asks about aces or trump queen)
F_ZADANE_PYTANIE_O_ASY = 425 (asking about aces)
F_GAME_FORCING = 443,
EPBot.info_min_length (position)() - contains information about the revealed minimum suit length;
EPBot.info_max_length (position)() - contains information about the revealed maximum suit length;
EPBot.info_probable_length (position)() - contains information about the probable length of suits (example: (1H)-2H => probable_length(0) = 5 and probable_length(1) = 5);
EPBot.info_strength (position)() - contains information about the revealed HCP of suits (A4 + K3 + Q2 + J1);
EPBot.info_honors (position)() - contains information about the revealed distribution of honor (A16 + K8 + Q4 + J2 + T1);
EPBot.info_stoppers (position)() - contains information about the revealed stoppers.
Meaning:
-2 - no Q and no J;
-1 - no A and no K;
no information;
1 - is Q or J;
2 - is A or K.
The above information is obtained from the EPBot and applies to the player in the positions described below.
Meaning of position:
positions 0-3 - public information based on auctions - these items contain information obtained directly from the auction and are available at any time.
positions 4-7 - these items contain private processed information (taking into account its own hand) about all players (position mod 4) available after calling the procedure after EPBot.get_bid (may be use by Management Program).
position 13 - information on a potential bid entered by the command:
EPBot.interpret_bid potential_bid
Can only be used as a bid hint for the player to whom it is bidding.
The above information is comprehensive in the current situation.
If necessary, they should be remembered by the management software after each bid.
Also:
EPBot.copyright - copyrights;
EPBot.version - library version;
EPBot.LastError - description of the last error;
EPBot.get_Position - current Position;
EPBot.get_Dealer - current Dealer;
EPBot.get_Vulnerability - current Vulnerability;
EPBot.get_Cards - current Cards;
EPBot.used_conventions() - number of used conventions;
EPBot.get_hand() - for calculated position 4-7 (available after EPBot.get_bid);
EPBot.get_probable_level(selected_strain) and EPBot.get_probable_levels() - estimated contract level for strains: 0-4 (clubs to NT) and 5 as a current strain (for current opponent strain) - it is based only on the hands of the bidder and the bidding of partner and opponents;
EPBot.get_SD_tricks(ByRef hand(partner_position).suit(), ByRef percentages())() - returns arrays of computed tricks and approximate percentages using a single dummy.
Percentages are simplified to the following values:
50;
70;
90,
EPBot.selected_conventions()() - list of selected conventions for team 1 and team 2;
EPBot.set_arr_bids(arr_bids) - to set whole bidding (the bot will accept all full betting rounds ending with RHO);
EPBot.get_str_bidding - a string like '1S-P-2C-X-P-P-P'.