acpc_poker_types 7.2.0 → 7.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/acpc_poker_types/hand_player.rb +20 -16
- data/lib/acpc_poker_types/hand_player_group.rb +4 -1
- data/lib/acpc_poker_types/version.rb +1 -1
- data/spec/match_state_spec.rb +42 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e7db77dcac1bb6a8abf691890b233c4989f3a3e
|
4
|
+
data.tar.gz: 7c5962907fc4347379e80c716207efb468db404c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cbf955f892695ed3ef36e87b61cb374e01869429decd6b0c78611269f21c5a6a12e668ef91542460a185668edea981ad81da7b8c86bf77add96f77322ebba389
|
7
|
+
data.tar.gz: d284cf1b711a6ea1d4100a9903cf949a6f62a85b9121d701b0d43935dbe3a187b336636ff060fd10b44d60bfcaa02999037d98e10d1fe8802a7faa59636933a4
|
@@ -87,26 +87,22 @@ class HandPlayer
|
|
87
87
|
else
|
88
88
|
l_actions << PokerAction.new(PokerAction::CHECK)
|
89
89
|
end
|
90
|
-
if !wager_illegal &&
|
91
|
-
|
92
|
-
|
90
|
+
if !wager_illegal && wager_allowed_by_stack?(amount_to_call)
|
91
|
+
min_wager_by_cost = [min_wager_by + amount_to_call.to_r, stack].min
|
92
|
+
|
93
|
+
add_wager_actions = ->(wager_character) do
|
94
|
+
l_actions << PokerAction.new(wager_character, cost: min_wager_by_cost)
|
95
|
+
if all_in_allowed?(betting_type, min_wager_by_cost)
|
96
|
+
l_actions << PokerAction.new(wager_character, cost: stack)
|
97
|
+
end
|
98
|
+
end
|
93
99
|
|
94
100
|
if (
|
95
|
-
amount_to_call.to_r > 0 ||
|
96
|
-
(
|
97
|
-
contributions.length > in_round &&
|
98
|
-
contributions[in_round] > 0
|
99
|
-
)
|
101
|
+
amount_to_call.to_r > 0 || contributions[in_round].to_i > 0
|
100
102
|
)
|
101
|
-
|
102
|
-
unless betting_type == GameDefinition::BETTING_TYPES[:limit] || min_wager_by_adjusted == max_wager_by
|
103
|
-
l_actions << PokerAction.new(PokerAction::RAISE, cost: max_wager_by)
|
104
|
-
end
|
103
|
+
add_wager_actions.call(PokerAction::RAISE)
|
105
104
|
else
|
106
|
-
|
107
|
-
unless betting_type == GameDefinition::BETTING_TYPES[:limit] || min_wager_by_adjusted == max_wager_by
|
108
|
-
l_actions << PokerAction.new(PokerAction::BET, cost: max_wager_by)
|
109
|
-
end
|
105
|
+
add_wager_actions.call(PokerAction::BET)
|
110
106
|
end
|
111
107
|
end
|
112
108
|
|
@@ -141,5 +137,13 @@ class HandPlayer
|
|
141
137
|
def round
|
142
138
|
@actions.length - 1
|
143
139
|
end
|
140
|
+
|
141
|
+
def wager_allowed_by_stack?(amount_to_call)
|
142
|
+
stack > amount_to_call.to_r
|
143
|
+
end
|
144
|
+
|
145
|
+
def all_in_allowed?(betting_type, min_wager_by_cost)
|
146
|
+
betting_type != GameDefinition::BETTING_TYPES[:limit] && min_wager_by_cost < stack
|
147
|
+
end
|
144
148
|
end
|
145
149
|
end
|
@@ -81,7 +81,10 @@ class HandPlayerGroup < DelegateClass(Array)
|
|
81
81
|
@players[acting_player_position].legal_actions(
|
82
82
|
in_round: round,
|
83
83
|
amount_to_call: amount_to_call(acting_player_position),
|
84
|
-
wager_illegal:
|
84
|
+
wager_illegal: (
|
85
|
+
game_def.max_number_of_wagers[round] &&
|
86
|
+
num_wagers(round) >= game_def.max_number_of_wagers[round]
|
87
|
+
),
|
85
88
|
betting_type: game_def.betting_type,
|
86
89
|
min_wager_by: min_wager_by
|
87
90
|
)
|
data/spec/match_state_spec.rb
CHANGED
@@ -944,6 +944,48 @@ describe MatchState do
|
|
944
944
|
|
945
945
|
patient.must_equal x_actions
|
946
946
|
|
947
|
+
patient.map { |action| action.cost }.must_equal x_actions.map { |action| action.cost }
|
948
|
+
end
|
949
|
+
it 'should work properly in no-limit after an opponent has bet' do
|
950
|
+
game_definition = GameDefinition.parse_file(AcpcDealer::GAME_DEFINITION_FILE_PATHS[2][:nolimit])
|
951
|
+
|
952
|
+
patient = MatchState.parse("MATCHSTATE:0:0:r9550:Jh7d|").legal_actions(
|
953
|
+
game_definition
|
954
|
+
)
|
955
|
+
|
956
|
+
blind = 100
|
957
|
+
to_call = 9550 - blind
|
958
|
+
to_all_in = game_definition.chip_stacks[0] - blind
|
959
|
+
|
960
|
+
x_actions = [
|
961
|
+
PokerAction.new(PokerAction::CALL, cost: to_call),
|
962
|
+
PokerAction.new(PokerAction::FOLD, cost: 0),
|
963
|
+
PokerAction.new(PokerAction::RAISE, cost: 2 * to_call),
|
964
|
+
PokerAction.new(PokerAction::RAISE, cost: to_all_in)
|
965
|
+
]
|
966
|
+
|
967
|
+
patient.must_equal x_actions
|
968
|
+
|
969
|
+
patient.map { |action| action.cost }.must_equal x_actions.map { |action| action.cost }
|
970
|
+
end
|
971
|
+
it 'should not error' do
|
972
|
+
game_definition = GameDefinition.parse_file(AcpcDealer::GAME_DEFINITION_FILE_PATHS[2][:nolimit])
|
973
|
+
|
974
|
+
patient = MatchState.parse("MATCHSTATE:0:0:r9550c/:Jh7d|/QhQsJs").legal_actions(
|
975
|
+
game_definition
|
976
|
+
)
|
977
|
+
|
978
|
+
blind = 100
|
979
|
+
to_all_in = game_definition.chip_stacks[0] - 9550
|
980
|
+
|
981
|
+
x_actions = [
|
982
|
+
PokerAction.new(PokerAction::CHECK, cost: 0),
|
983
|
+
PokerAction.new(PokerAction::BET, cost: game_definition.min_wagers[1]),
|
984
|
+
PokerAction.new(PokerAction::BET, cost: to_all_in)
|
985
|
+
]
|
986
|
+
|
987
|
+
patient.must_equal x_actions
|
988
|
+
|
947
989
|
patient.map { |action| action.cost }.must_equal x_actions.map { |action| action.cost }
|
948
990
|
end
|
949
991
|
end
|