Spaces:
Sleeping
Sleeping
import streamlit as st | |
import random | |
import emoji | |
# Enhanced Scrabble letters distribution and scores with emoji representation | |
letters_scores = { | |
'A': (1, "π °οΈ"), 'B': (3, "π ±οΈ"), 'C': (3, "π"), 'D': (2, "π¬"), 'E': (1, "π¦"), | |
'F': (4, "π"), 'G': (2, "π"), 'H': (4, "π"), 'I': (1, "π¦"), 'J': (8, "π·"), | |
'K': (5, "π"), 'L': (1, "π¦"), 'M': (3, "π"), 'N': (1, "πΆ"), 'O': (1, "π"), | |
'P': (3, "π"), 'Q': (10, "π"), 'R': (1, "π"), 'S': (1, "β"), 'T': (1, "π΄"), | |
'U': (1, "π¦"), 'V': (4, "π»"), 'W': (4, "π"), 'X': (8, "β"), 'Y': (4, "π"), 'Z': (10, "β‘") | |
} | |
letters_distribution = { | |
'A': 9, 'B': 2, 'C': 2, 'D': 4, 'E': 12, 'F': 2, 'G': 3, 'H': 2, 'I': 9, | |
'J': 1, 'K': 1, 'L': 4, 'M': 2, 'N': 6, 'O': 8, 'P': 2, 'Q': 1, 'R': 6, | |
'S': 4, 'T': 6, 'U': 4, 'V': 2, 'W': 2, 'X': 1, 'Y': 2, 'Z': 1 | |
} | |
# Flatten distribution for random selection | |
flat_letters = [letter for letter, count in letters_distribution.items() for _ in range(count)] | |
# Function to generate a simple AI word | |
def generate_ai_word(letters): | |
# Simple strategy: pick a random number of letters and form a word | |
num_letters = random.randint(1, len(letters)) | |
return random.sample(letters, num_letters) | |
# Select 7 random letters | |
random_letters = random.sample(flat_letters, 7) | |
# Streamlit UI enhancements | |
st.title('Emoji Scrabble Simulator π²') | |
# Columns for player and computer | |
col1, col2 = st.columns(2) | |
# Display for player | |
with col1: | |
st.header("Player's Turn π§") | |
user_word = [] | |
user_score = 0 | |
# Display letters as buttons | |
for letter in random_letters: | |
score, letter_emoji = letters_scores[letter] | |
if st.button(f"{letter_emoji} ({score})", key=f"player_{letter}"): | |
user_word.append(letter) | |
user_score += score | |
st.success(f"Current word: {''.join(user_word)}") | |
st.info(f"Current score: {user_score}") | |
st.write(f"**Final word:** {''.join(user_word)}") | |
st.write(f"**Final score:** {user_score}") | |
# Display for computer | |
with col2: | |
st.header("Computer's Turn π€") | |
ai_word = generate_ai_word(random_letters) | |
ai_score = sum([letters_scores[letter][0] for letter in ai_word]) | |
st.write(f"**AI's word:** {''.join(ai_word)}") | |
st.write(f"**AI's score:** {ai_score}") | |
# Determine the winner | |
if user_score > ai_score: | |
st.balloons() | |
st.success("π Congratulations! You won against the computer! π") | |
elif user_score < ai_score: | |
st.error("π₯οΈ The computer wins this round. Try again! π₯οΈ") | |
else: | |
st.warning("π€ It's a tie! Well played! π€") | |