awacke1 commited on
Commit
522f1af
β€’
1 Parent(s): f6ea017

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -36
app.py CHANGED
@@ -7,37 +7,34 @@ MAX_DICE = 5
7
  MAX_PLAYERS = 4
8
  DICE_SIDES = 6
9
 
10
- # Predefined list of rhyming names with emojis for players
11
- player_names = [
12
- ("Mick 🎀", "Rick πŸš€", "Nick 🧊", "Vick 🌿")
13
- ]
14
 
15
  # Game functions
16
  def roll_dice(n):
17
  return np.random.randint(1, DICE_SIDES + 1, n)
18
 
19
  def display_dice(dice_rolls):
20
- # Display emojis based on the number rolled
21
- emoji_str = ""
22
- for roll in dice_rolls:
23
- emoji_str += emojize(":game_die:") + " " * roll + " " # Adjust this line for a more accurate representation
24
- return emoji_str.strip()
25
 
26
- def update_scores(scores, dice):
27
- for i, score in enumerate(scores):
28
- if dice[i] == DICE_SIDES:
29
- scores[i] += 1
30
- else:
31
- scores[i] = 0
 
32
  return scores
33
 
34
- # Streamlit app setup
35
- st.set_page_config(
36
- page_title="Multiplayer Emoji Dice Game",
37
- page_icon="🎲",
38
- layout="centered",
39
- )
40
 
 
 
41
  st.title("Multiplayer Emoji Dice Game")
42
  st.write("Roll the dice and try to get as many sixes as possible!")
43
 
@@ -47,26 +44,37 @@ dice_count = st.slider("Number of dice per player", 1, MAX_DICE, 2, step=1)
47
 
48
  # Game logic
49
  scores = [0 for _ in range(players)]
50
- rolled_dice = roll_dice(players * dice_count)
51
- scores = update_scores(scores, rolled_dice)
 
52
 
53
- # Display game board for all players with rhyming names
54
  for player in range(players):
55
- start_index = player * dice_count
56
- end_index = start_index + dice_count
57
- player_name = player_names[player % len(player_names)] # Loop through player_names if players > len(player_names)
58
- st.write(f"{player_name} rolled: {display_dice(rolled_dice[start_index:end_index])}")
59
 
60
- st.write(f"Scores: {scores}")
 
 
 
 
61
 
62
  # Update game state
63
  if st.button("Roll again"):
64
  scores = [0 for _ in range(players)]
65
- rolled_dice = roll_dice(players * dice_count)
66
- scores = update_scores(scores, rolled_dice)
 
 
67
  for player in range(players):
68
- start_index = player * dice_count
69
- end_index = start_index + dice_count
70
- player_name = player_names[player % len(player_names)]
71
- st.write(f"{player_name} rolled: {display_dice(rolled_dice[start_index:end_index])}")
72
- st.write(f"Scores: {scores}")
 
 
 
 
 
7
  MAX_PLAYERS = 4
8
  DICE_SIDES = 6
9
 
10
+ # Player names and emojis
11
+ player_names = ["Mick 🎀", "Rick πŸš€", "Nick 🧊", "Vick 🌿"]
 
 
12
 
13
  # Game functions
14
  def roll_dice(n):
15
  return np.random.randint(1, DICE_SIDES + 1, n)
16
 
17
  def display_dice(dice_rolls):
18
+ # Display the correct number of emojis for each dice roll
19
+ return " ".join(emojize(":game_die:") * roll for roll in dice_rolls)
 
 
 
20
 
21
+ def display_total(total):
22
+ # Display the total of dice rolls with an emoji
23
+ return f"Total: {total} " + emojize(":trophy:")
24
+
25
+ def update_scores(scores, dice_rolls):
26
+ for i in range(len(scores)):
27
+ scores[i] = sum(dice_rolls[i])
28
  return scores
29
 
30
+ def determine_winner(scores):
31
+ # Determine the player with the highest score
32
+ max_score = max(scores)
33
+ winners = [i for i, score in enumerate(scores) if score == max_score]
34
+ return winners
 
35
 
36
+ # Streamlit app setup
37
+ st.set_page_config(page_title="Multiplayer Emoji Dice Game", page_icon="🎲", layout="centered")
38
  st.title("Multiplayer Emoji Dice Game")
39
  st.write("Roll the dice and try to get as many sixes as possible!")
40
 
 
44
 
45
  # Game logic
46
  scores = [0 for _ in range(players)]
47
+ dice_rolls = [roll_dice(dice_count) for _ in range(players)]
48
+ scores = update_scores(scores, dice_rolls)
49
+ winners = determine_winner(scores)
50
 
51
+ # Display game board for all players with names, rolls, and totals
52
  for player in range(players):
53
+ player_rolls = dice_rolls[player]
54
+ player_total = scores[player]
55
+ st.write(f"{player_names[player]} rolled: {display_dice(player_rolls)}")
56
+ st.write(display_total(player_total))
57
 
58
+ # Display winner(s)
59
+ if len(winners) > 1:
60
+ st.write("It's a tie between: " + " and ".join(player_names[winner] for winner in winners))
61
+ else:
62
+ st.write(f"Winner: {player_names[winners[0]]} πŸ†")
63
 
64
  # Update game state
65
  if st.button("Roll again"):
66
  scores = [0 for _ in range(players)]
67
+ dice_rolls = [roll_dice(dice_count) for _ in range(players)]
68
+ scores = update_scores(scores, dice_rolls)
69
+ winners = determine_winner(scores)
70
+
71
  for player in range(players):
72
+ player_rolls = dice_rolls[player]
73
+ player_total = scores[player]
74
+ st.write(f"{player_names[player]} rolled: {display_dice(player_rolls)}")
75
+ st.write(display_total(player_total))
76
+
77
+ if len(winners) > 1:
78
+ st.write("It's a tie between: " + " and ".join(player_names[winner] for winner in winners))
79
+ else:
80
+ st.write(f"Winner: {player_names[winners[0]]} πŸ†")