Add declarer and partner label, fix first bid display

master
En Yi 2019-06-15 01:02:49 +01:00
parent 2e53ccad0f
commit 453bd3cd49
3 changed files with 27 additions and 19 deletions

View File

@ -12,7 +12,8 @@ class GameState(Enum):
class PlayerRole(Enum):
UNKNOWN = 0
ATTACKER = 1
DEFENDER = 2
DECLARER = 2
PARTNER = 3
NUM_OF_PLAYERS = 4

View File

@ -101,11 +101,11 @@ if __name__ == '__main__':
with open('last_game_rng.rng', 'wb') as f:
pickle.dump(rng_state, f)
with open('seeds/test_seed.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)
autoplay=AUTOPLAY, view_all_cards=VIEW_ALL_CARDS)
main_view.run()

View File

@ -250,12 +250,16 @@ class Table:
def update_players_role(self, player_num, update_now=True):
self.player_stats[player_num][1].fill((255, 255, 255, 255*VIEW_TRANSPARENT))
if self.players[player_num].role == PlayerRole.DEFENDER:
rendered_text = self.player_font.render("Defender", True, (0, 64, 192)).convert_alpha()
self.center_text_on_surface(self.player_stats[player_num][1], rendered_text,
(255, 255, 255, 255 * VIEW_TRANSPARENT))
role_text = ''
colour = (128, 64, 192)
if self.players[player_num].role == PlayerRole.DECLARER:
role_text = 'Declarer'
elif self.players[player_num].role == PlayerRole.ATTACKER:
rendered_text = self.player_font.render("Attacker", True, (192, 0, 0)).convert_alpha()
role_text = 'Attacker'
colour = (192, 0, 0)
elif self.players[player_num].role == PlayerRole.PARTNER:
role_text = 'Partner'
rendered_text = self.player_font.render(role_text, True, colour).convert_alpha()
self.center_text_on_surface(self.player_stats[player_num][1], rendered_text,
(255, 255, 255, 255 * VIEW_TRANSPARENT))
if update_now:
@ -453,6 +457,7 @@ class Table:
cards.get_suit_string(self.table_status["bid"] % 10))
self.write_message(msg, line=1, delay_time=0)
self.display_current_player(self.current_player)
self.update_player_bid(self.current_player, 11, update_now=False)
msg = 'Bid Leader: Player {0:d}'.format((self.current_player - self.passes -
1 * (not self.first_player)) % NUM_OF_PLAYERS)
self.write_message(msg, line=2, delay_time=1)
@ -497,14 +502,15 @@ 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)
if self.first_player:
self.first_player = False
else:
self.update_player_bid(self.current_player, player_bid, update_now=False)
if self.table_status["bid"] < 75:
self.current_player += 1
self.current_player %= NUM_OF_PLAYERS
self.display_current_player(self.current_player)
if self.first_player:
self.first_player = False
time.sleep(0.5)
if self.passes == NUM_OF_PLAYERS - 1 or self.table_status["bid"] == 75:
self.calling_panel.list1.replace_list(['2','3','4','5','6','7','8','9','10','J','Q','K','A'])
@ -550,7 +556,7 @@ class Table:
self.table_status['attacker']['target'] = 14 - self.table_status['defender']['target']
# Set the roles of the players
self.players[self.current_player].role = PlayerRole.DEFENDER
self.players[self.current_player].role = PlayerRole.DECLARER
self.write_message('Bidding Complete', delay_time=0)
msg = 'Trump: {1:s}, Partner: {0:s}'.format(cards.get_card_string(self.table_status["partner"]),
@ -632,7 +638,8 @@ class Table:
if player.AI:
player.AI.update_memory()
if self.players[winning_player].role == PlayerRole.DEFENDER:
if self.players[winning_player].role == PlayerRole.DECLARER or\
self.players[winning_player].role == PlayerRole.PARTNER :
self.table_status['defender']['wins'] += 1
elif self.players[winning_player].role == PlayerRole.ATTACKER:
self.table_status['attacker']['wins'] += 1
@ -665,7 +672,7 @@ class Table:
time.sleep(0.5)
def reveal_all_roles(self, partner):
self.players[partner].role = PlayerRole.DEFENDER
self.players[partner].role = PlayerRole.PARTNER
self.table_status['defender']['wins'] += self.players[partner].score
for i in range(NUM_OF_PLAYERS):
if self.players[i].role == PlayerRole.UNKNOWN: