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! 🤝")