Implement partner calling method
parent
6958009277
commit
53a7090347
|
@ -64,6 +64,7 @@ class RandomAI(BaseAI):
|
||||||
|
|
||||||
:return: int - the bid
|
:return: int - the bid
|
||||||
"""
|
"""
|
||||||
|
return 0
|
||||||
if self.player:
|
if self.player:
|
||||||
current_round_bid = self.table_status["bid"] // 10
|
current_round_bid = self.table_status["bid"] // 10
|
||||||
current_suit_bid = self.table_status["bid"] % 10
|
current_suit_bid = self.table_status["bid"] % 10
|
||||||
|
@ -142,6 +143,42 @@ class VivianAI(RandomAI):
|
||||||
return next_bid_num*10 + favourable_suit
|
return next_bid_num*10 + favourable_suit
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
def call_partner(self):
|
||||||
|
"""
|
||||||
|
|
||||||
|
:return: int - the card value
|
||||||
|
"""
|
||||||
|
player_cards = self.player.get_deck_values()
|
||||||
|
card_suits = [cards.get_card_suit(crd) for crd in player_cards]
|
||||||
|
card_nums = [cards.get_card_number(crd) for crd in player_cards]
|
||||||
|
trump_suit = self.table_status["bid"] % 10
|
||||||
|
trump_nums = [num for suit, num in zip(card_suits, card_nums) if suit == trump_suit]
|
||||||
|
|
||||||
|
if 14 not in trump_nums:
|
||||||
|
return trump_suit*100 + 14
|
||||||
|
if 13 not in trump_nums:
|
||||||
|
return trump_suit*100 + 13
|
||||||
|
if 12 not in trump_nums:
|
||||||
|
return trump_suit*100 + 12
|
||||||
|
|
||||||
|
suit_values = []
|
||||||
|
|
||||||
|
for i in range(4):
|
||||||
|
suit_values.append(sum([num for suit, num in zip(card_suits, card_nums) if suit == i+1]))
|
||||||
|
|
||||||
|
min_val = min(suit_values)
|
||||||
|
weakest_suit = [i + 1 for i, val in enumerate(suit_values) if suit_values == min_val]
|
||||||
|
if len(weakest_suit) > 1:
|
||||||
|
weakest_suit = random.choice(weakest_suit)
|
||||||
|
else:
|
||||||
|
weakest_suit = weakest_suit[0]
|
||||||
|
|
||||||
|
all_nums = [i+2 for i in range(13)]
|
||||||
|
weak_nums = [num for suit, num in zip(card_suits, card_nums) if suit == weakest_suit]
|
||||||
|
[all_nums.remove(num) for num in weak_nums]
|
||||||
|
return weakest_suit*100 + max(weak_nums)
|
||||||
|
|
||||||
|
|
||||||
def estimate_wins(self):
|
def estimate_wins(self):
|
||||||
player_cards = self.player.get_deck_values()
|
player_cards = self.player.get_deck_values()
|
||||||
card_suits = [cards.get_card_suit(crd) for crd in player_cards]
|
card_suits = [cards.get_card_suit(crd) for crd in player_cards]
|
||||||
|
@ -152,7 +189,7 @@ class VivianAI(RandomAI):
|
||||||
n_cards.append(card_suits.count(i+1))
|
n_cards.append(card_suits.count(i+1))
|
||||||
|
|
||||||
bids = [0] * 5
|
bids = [0] * 5
|
||||||
trump_points = [num-10 if num >=10 else 0.001 for num in card_nums]
|
trump_points = [num-10 if num >= 10 else 0.001 for num in card_nums]
|
||||||
non_trump_points = [self.calc_win_points(num, n_cards[suit-1]) if num > 10 else 0.001
|
non_trump_points = [self.calc_win_points(num, n_cards[suit-1]) if num > 10 else 0.001
|
||||||
for (num, suit) in zip(card_nums, card_suits)]
|
for (num, suit) in zip(card_nums, card_suits)]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue