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_viability[i] *= 2 / card_nums[i]
|
||||
|
||||
best_viability = max(card_viability)
|
||||
best_cards = [play for viability, play in zip(card_viability, valid_plays) if viability == best_viability]
|
||||
return random.choice(best_cards)
|
||||
best_viability = max(card_viability)
|
||||
best_cards = [play for viability, play in zip(card_viability, valid_plays) if viability == best_viability]
|
||||
return random.choice(best_cards)
|
||||
|
||||
def update_memory(self):
|
||||
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:
|
||||
pickle.dump(rng_state, f)
|
||||
|
||||
#with open('seeds/Vbot_good_hand2.rng', 'rb') as f:
|
||||
# rng_state = pickle.load(f)
|
||||
#random.setstate(rng_state)
|
||||
with open('seeds/test_seed.rng', 'rb') as f:
|
||||
rng_state = pickle.load(f)
|
||||
random.setstate(rng_state)
|
||||
|
||||
main_view = GameScreen(900, 600, clear_colour=(255, 0, 0),
|
||||
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)
|
||||
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!")
|
||||
|
||||
|
@ -261,23 +261,38 @@ class Table:
|
|||
if update_now:
|
||||
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))
|
||||
if self.players[player_num].score > 1:
|
||||
rendered_text = self.player_font.render("Wins: {0:d}".format(self.players[player_num].score), True,
|
||||
if not clear:
|
||||
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()
|
||||
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()
|
||||
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_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):
|
||||
if wins:
|
||||
self.update_player_wins(i, update_now=False)
|
||||
self.update_player_wins(i, update_now=False, clear=clear_wins)
|
||||
if role:
|
||||
self.update_players_role(i, update_now=False)
|
||||
self.update_table.emit()
|
||||
|
@ -482,6 +497,7 @@ class Table:
|
|||
self.write_message(msg, line=1, update_now=False)
|
||||
msg = 'Bid Leader: Player {0:d}'.format(self.current_player)
|
||||
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:
|
||||
self.current_player += 1
|
||||
|
@ -599,13 +615,6 @@ class Table:
|
|||
card_nums = [card.number() for card in self.table_status["played cards"]]
|
||||
follow_suits = [suit == leading_card.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
|
||||
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.write_message("Trump Broken!", delay_time=1.5)
|
||||
|
||||
|
||||
if not self.table_status['partner reveal']:
|
||||
if card.value == self.table_status['partner']:
|
||||
self.table_status['partner reveal'] = True
|
||||
|
@ -675,7 +683,7 @@ class Table:
|
|||
|
||||
for i in range(NUM_OF_PLAYERS):
|
||||
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['attacker']['wins'] = 0
|
||||
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=2)
|
||||
self.display_current_player()
|
||||
print(len(self.discard_deck))
|
||||
self.update_table.emit()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue