import streamlit as st import numpy as np from emoji import emojize # Game constants MAX_DICE = 5 MAX_PLAYERS = 4 DICE_SIDES = 6 # Game functions def roll_dice(n): return np.random.randint(1, DICE_SIDES + 1, n) def display_dice(dice): #return " ".join([emojize(":game_die:") for _ in range(dice)]) #return " ".join([emojize(":game_die:") for _ in range(dice.item())]) return " ".join([emojize(":game_die:") for _ in range(dice.flatten())]) 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 st.write(f"Player 1 rolled: {display_dice(rolled_dice[:dice_count])}") if players > 1: st.write(f"Player 2 rolled: {display_dice(rolled_dice[dice_count:])}") 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) st.write(f"Player 1 rolled: {display_dice(rolled_dice[:dice_count])}") if players > 1: st.write(f"Player 2 rolled: {display_dice(rolled_dice[dice_count:])}") st.write(f"Scores: {scores}")