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): class PlayerRole(Enum):
UNKNOWN = 0 UNKNOWN = 0
ATTACKER = 1 ATTACKER = 1
DEFENDER = 2 DECLARER = 2
PARTNER = 3
NUM_OF_PLAYERS = 4 NUM_OF_PLAYERS = 4

View File

@ -101,11 +101,11 @@ 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/test_seed.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=AUTOPLAY, view_all_cards=VIEW_ALL_CARDS)
main_view.run() main_view.run()

View File

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