import streamlit as st import numpy as np from emoji import emojize # Game constants MAX_DICE = 5 MAX_PLAYERS = 4 DICE_SIDES = 6 # Predefined list of rhyming names with emojis for players player_names = [ ("Mick 🎤", "Rick 🚀", "Nick 🧊", "Vick 🌿") ] # Game functions def roll_dice(n): return np.random.randint(1, DICE_SIDES + 1, n) def display_dice(dice_rolls): # Display emojis based on the number rolled emoji_str = "" for roll in dice_rolls: emoji_str += emojize(":game_die:") + " " * roll + " " # Adjust this line for a more accurate representation return emoji_str.strip() def update_scores(scores, dice): for i, score in enumerate(scores): if dice[i] == DICE_SIDES: scores[i] += 1 else: scores[i] = 0 return scores # Streamlit app setup st.set_page_config( page_title="Multiplayer Emoji Dice Game", page_icon="🎲", layout="centered", ) st.title("Multiplayer Emoji Dice Game") st.write("Roll the dice and try to get as many sixes as possible!") # Game settings players = st.slider("Number of players", 1, MAX_PLAYERS, 2, step=1) dice_count = st.slider("Number of dice per player", 1, MAX_DICE, 2, step=1) # Game logic scores = [0 for _ in range(players)] rolled_dice = roll_dice(players * dice_count) scores = update_scores(scores, rolled_dice) # Display game board for all players with rhyming names for player in range(players): start_index = player * dice_count end_index = start_index + dice_count player_name = player_names[player % len(player_names)] # Loop through player_names if players > len(player_names) st.write(f"{player_name} rolled: {display_dice(rolled_dice[start_index:end_index])}") st.write(f"Scores: {scores}") # Update game state if st.button("Roll again"): scores = [0 for _ in range(players)] rolled_dice = roll_dice(players * dice_count) scores = update_scores(scores, rolled_dice) for player in range(players): start_index = player * dice_count end_index = start_index + dice_count player_name = player_names[player % len(player_names)] st.write(f"{player_name} rolled: {display_dice(rolled_dice[start_index:end_index])}") st.write(f"Scores: {scores}")