Fix up Vbot play and display bids
parent
9f5178268e
commit
2e53ccad0f
|
@ -245,9 +245,9 @@ class VivianAI(RandomAI):
|
||||||
card_nums[i]>max_trump_played :
|
card_nums[i]>max_trump_played :
|
||||||
card_viability[i] *= 2 / card_nums[i]
|
card_viability[i] *= 2 / card_nums[i]
|
||||||
|
|
||||||
best_viability = max(card_viability)
|
best_viability = max(card_viability)
|
||||||
best_cards = [play for viability, play in zip(card_viability, valid_plays) if viability == best_viability]
|
best_cards = [play for viability, play in zip(card_viability, valid_plays) if viability == best_viability]
|
||||||
return random.choice(best_cards)
|
return random.choice(best_cards)
|
||||||
|
|
||||||
def update_memory(self):
|
def update_memory(self):
|
||||||
played_cards = [card.value for card in self.table_status["played cards"]]
|
played_cards = [card.value for card in self.table_status["played cards"]]
|
||||||
|
|
6
main.py
6
main.py
|
@ -101,9 +101,9 @@ if __name__ == '__main__':
|
||||||
with open('last_game_rng.rng', 'wb') as f:
|
with open('last_game_rng.rng', 'wb') as f:
|
||||||
pickle.dump(rng_state, f)
|
pickle.dump(rng_state, f)
|
||||||
|
|
||||||
#with open('seeds/Vbot_good_hand2.rng', 'rb') as f:
|
with open('seeds/test_seed.rng', 'rb') as f:
|
||||||
# rng_state = pickle.load(f)
|
rng_state = pickle.load(f)
|
||||||
#random.setstate(rng_state)
|
random.setstate(rng_state)
|
||||||
|
|
||||||
main_view = GameScreen(900, 600, clear_colour=(255, 0, 0),
|
main_view = GameScreen(900, 600, clear_colour=(255, 0, 0),
|
||||||
autoplay=True, view_all_cards=VIEW_ALL_CARDS)
|
autoplay=True, view_all_cards=VIEW_ALL_CARDS)
|
||||||
|
|
41
table.py
41
table.py
|
@ -186,7 +186,7 @@ class Table:
|
||||||
surf = pygame.Surface((self.announcer_width, self.announcer_height/3), pygame.SRCALPHA)
|
surf = pygame.Surface((self.announcer_width, self.announcer_height/3), pygame.SRCALPHA)
|
||||||
self.announcer_line.append(surf)
|
self.announcer_line.append(surf)
|
||||||
|
|
||||||
self.update_all_players(role=True, wins=True)
|
self.update_all_players(role=True, wins=True, clear_wins=True)
|
||||||
|
|
||||||
self.write_message("Press P to play!")
|
self.write_message("Press P to play!")
|
||||||
|
|
||||||
|
@ -261,23 +261,38 @@ class Table:
|
||||||
if update_now:
|
if update_now:
|
||||||
self.update_table.emit()
|
self.update_table.emit()
|
||||||
|
|
||||||
def update_player_wins(self, player_num, update_now=True):
|
def update_player_wins(self, player_num, update_now=True, clear=False):
|
||||||
self.player_stats[player_num][2].fill((255, 255, 255, 255*VIEW_TRANSPARENT))
|
self.player_stats[player_num][2].fill((255, 255, 255, 255*VIEW_TRANSPARENT))
|
||||||
if self.players[player_num].score > 1:
|
if not clear:
|
||||||
rendered_text = self.player_font.render("Wins: {0:d}".format(self.players[player_num].score), True,
|
if self.players[player_num].score > 1:
|
||||||
|
rendered_text = self.player_font.render("Wins: {0:d}".format(self.players[player_num].score), True,
|
||||||
|
(255, 255, 255)).convert_alpha()
|
||||||
|
else:
|
||||||
|
rendered_text = self.player_font.render("Win: {0:d}".format(self.players[player_num].score), True,
|
||||||
|
(255, 255, 255)).convert_alpha()
|
||||||
|
self.center_text_on_surface(self.player_stats[player_num][2], rendered_text,
|
||||||
|
(255, 255, 255, 255 * VIEW_TRANSPARENT))
|
||||||
|
if update_now:
|
||||||
|
self.update_table.emit()
|
||||||
|
|
||||||
|
def update_player_bid(self, player_num, bid, update_now=True):
|
||||||
|
self.player_stats[player_num][2].fill((255, 255, 255, 255 * VIEW_TRANSPARENT))
|
||||||
|
if not bid:
|
||||||
|
rendered_text = self.player_font.render("Pass".format(self.players[player_num].score), True,
|
||||||
(255, 255, 255)).convert_alpha()
|
(255, 255, 255)).convert_alpha()
|
||||||
else:
|
else:
|
||||||
rendered_text = self.player_font.render("Win: {0:d}".format(self.players[player_num].score), True,
|
bid_text = str(bid//10) + ' ' + cards.get_suit_string(bid % 10)
|
||||||
|
rendered_text = self.player_font.render(bid_text.format(self.players[player_num].score), True,
|
||||||
(255, 255, 255)).convert_alpha()
|
(255, 255, 255)).convert_alpha()
|
||||||
self.center_text_on_surface(self.player_stats[player_num][2], rendered_text,
|
self.center_text_on_surface(self.player_stats[player_num][2], rendered_text,
|
||||||
(255, 255, 255, 255 * VIEW_TRANSPARENT))
|
(255, 255, 255, 255 * VIEW_TRANSPARENT))
|
||||||
if update_now:
|
if update_now:
|
||||||
self.update_table.emit()
|
self.update_table.emit()
|
||||||
|
|
||||||
def update_all_players(self, role=False, wins=True):
|
def update_all_players(self, role=False, wins=True, clear_wins=False):
|
||||||
for i in range(NUM_OF_PLAYERS):
|
for i in range(NUM_OF_PLAYERS):
|
||||||
if wins:
|
if wins:
|
||||||
self.update_player_wins(i, update_now=False)
|
self.update_player_wins(i, update_now=False, clear=clear_wins)
|
||||||
if role:
|
if role:
|
||||||
self.update_players_role(i, update_now=False)
|
self.update_players_role(i, update_now=False)
|
||||||
self.update_table.emit()
|
self.update_table.emit()
|
||||||
|
@ -482,6 +497,7 @@ class Table:
|
||||||
self.write_message(msg, line=1, update_now=False)
|
self.write_message(msg, line=1, update_now=False)
|
||||||
msg = 'Bid Leader: Player {0:d}'.format(self.current_player)
|
msg = 'Bid Leader: Player {0:d}'.format(self.current_player)
|
||||||
self.write_message(msg, line=2, update_now=True)
|
self.write_message(msg, line=2, update_now=True)
|
||||||
|
self.update_player_bid(self.current_player, player_bid, update_now=False)
|
||||||
|
|
||||||
if self.table_status["bid"] < 75:
|
if self.table_status["bid"] < 75:
|
||||||
self.current_player += 1
|
self.current_player += 1
|
||||||
|
@ -599,13 +615,6 @@ class Table:
|
||||||
card_nums = [card.number() for card in self.table_status["played cards"]]
|
card_nums = [card.number() for card in self.table_status["played cards"]]
|
||||||
follow_suits = [suit == leading_card.suit() for suit in card_suits]
|
follow_suits = [suit == leading_card.suit() for suit in card_suits]
|
||||||
trumps = [suit == self.table_status['trump suit'] for suit in card_suits]
|
trumps = [suit == self.table_status['trump suit'] for suit in card_suits]
|
||||||
#trump_played = any(trumps)
|
|
||||||
|
|
||||||
# Break trump if the trump suit is played
|
|
||||||
#if not self.table_status['trump broken']:
|
|
||||||
# if trump_played:
|
|
||||||
# self.table_status['trump broken'] = True
|
|
||||||
# self.write_message("Trump Broken!", delay_time=1)
|
|
||||||
|
|
||||||
# Determine which players to check for winner, and determine winner
|
# Determine which players to check for winner, and determine winner
|
||||||
valid_nums = [card_nums[i] * ((follow_suits[i] and not self.table_status['trump broken']) or trumps[i])
|
valid_nums = [card_nums[i] * ((follow_suits[i] and not self.table_status['trump broken']) or trumps[i])
|
||||||
|
@ -643,7 +652,6 @@ class Table:
|
||||||
self.table_status['trump broken'] = True
|
self.table_status['trump broken'] = True
|
||||||
self.write_message("Trump Broken!", delay_time=1.5)
|
self.write_message("Trump Broken!", delay_time=1.5)
|
||||||
|
|
||||||
|
|
||||||
if not self.table_status['partner reveal']:
|
if not self.table_status['partner reveal']:
|
||||||
if card.value == self.table_status['partner']:
|
if card.value == self.table_status['partner']:
|
||||||
self.table_status['partner reveal'] = True
|
self.table_status['partner reveal'] = True
|
||||||
|
@ -675,7 +683,7 @@ class Table:
|
||||||
|
|
||||||
for i in range(NUM_OF_PLAYERS):
|
for i in range(NUM_OF_PLAYERS):
|
||||||
self.update_players_role(i)
|
self.update_players_role(i)
|
||||||
self.update_player_wins(i)
|
self.update_player_wins(i, clear=True)
|
||||||
self.table_status['defender']['wins'] = 0
|
self.table_status['defender']['wins'] = 0
|
||||||
self.table_status['attacker']['wins'] = 0
|
self.table_status['attacker']['wins'] = 0
|
||||||
self.table_status["played cards"] = [0]*NUM_OF_PLAYERS
|
self.table_status["played cards"] = [0]*NUM_OF_PLAYERS
|
||||||
|
@ -684,7 +692,6 @@ class Table:
|
||||||
self.write_message("", line=1, update_now=False)
|
self.write_message("", line=1, update_now=False)
|
||||||
self.write_message("", line=2)
|
self.write_message("", line=2)
|
||||||
self.display_current_player()
|
self.display_current_player()
|
||||||
print(len(self.discard_deck))
|
|
||||||
self.update_table.emit()
|
self.update_table.emit()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue