awacke1 commited on
Commit
b4fb610
Β·
verified Β·
1 Parent(s): b3b30f6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -22
app.py CHANGED
@@ -1,11 +1,14 @@
1
  import streamlit as st
2
  import random
 
3
 
4
- # Scrabble letters distribution and scores
5
  letters_scores = {
6
- 'A': 1, 'B': 3, 'C': 3, 'D': 2, 'E': 1, 'F': 4, 'G': 2, 'H': 4, 'I': 1,
7
- 'J': 8, 'K': 5, 'L': 1, 'M': 3, 'N': 1, 'O': 1, 'P': 3, 'Q': 10, 'R': 1,
8
- 'S': 1, 'T': 1, 'U': 1, 'V': 4, 'W': 4, 'X': 8, 'Y': 4, 'Z': 10
 
 
9
  }
10
  letters_distribution = {
11
  'A': 9, 'B': 2, 'C': 2, 'D': 4, 'E': 12, 'F': 2, 'G': 3, 'H': 2, 'I': 9,
@@ -13,30 +16,56 @@ letters_distribution = {
13
  'S': 4, 'T': 6, 'U': 4, 'V': 2, 'W': 2, 'X': 1, 'Y': 2, 'Z': 1
14
  }
15
 
16
- # Flatten distribution to make random selection easier
17
  flat_letters = [letter for letter, count in letters_distribution.items() for _ in range(count)]
18
 
 
 
 
 
 
 
19
  # Select 7 random letters
20
  random_letters = random.sample(flat_letters, 7)
21
 
22
- # Streamlit app
23
- st.title('Scrabble Simulator')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
- # Display the selected letters with buttons
26
- st.write('Click the buttons to build your word and see the score!')
27
 
28
- # User's current word and score
29
- user_word = []
30
- user_score = 0
 
 
31
 
32
- # Generate buttons for the letters
33
- for letter in random_letters:
34
- if st.button(f"{letter} ({letters_scores[letter]})", key=letter):
35
- user_word.append(letter)
36
- user_score += letters_scores[letter]
37
- st.write(f"Current word: {''.join(user_word)}")
38
- st.write(f"Current score: {user_score}")
39
 
40
- # Display the final word and score
41
- st.write(f"Final word: {''.join(user_word)}")
42
- st.write(f"Final score: {user_score}")
 
 
 
 
 
 
1
  import streamlit as st
2
  import random
3
+ import emoji
4
 
5
+ # Enhanced Scrabble letters distribution and scores with emoji representation
6
  letters_scores = {
7
+ 'A': (1, "πŸ…°οΈ"), 'B': (3, "πŸ…±οΈ"), 'C': (3, "🌊"), 'D': (2, "🐬"), 'E': (1, "πŸ¦„"),
8
+ 'F': (4, "🍟"), 'G': (2, "πŸ‡"), 'H': (4, "πŸ’“"), 'I': (1, "🍦"), 'J': (8, "🎷"),
9
+ 'K': (5, "πŸ”‘"), 'L': (1, "🦁"), 'M': (3, "🍈"), 'N': (1, "🎢"), 'O': (1, "🍊"),
10
+ 'P': (3, "πŸ•"), 'Q': (10, "πŸ‘‘"), 'R': (1, "🌈"), 'S': (1, "⭐"), 'T': (1, "🌴"),
11
+ 'U': (1, "πŸ¦„"), 'V': (4, "🎻"), 'W': (4, "πŸ‰"), 'X': (8, "❌"), 'Y': (4, "πŸ’›"), 'Z': (10, "⚑")
12
  }
13
  letters_distribution = {
14
  'A': 9, 'B': 2, 'C': 2, 'D': 4, 'E': 12, 'F': 2, 'G': 3, 'H': 2, 'I': 9,
 
16
  'S': 4, 'T': 6, 'U': 4, 'V': 2, 'W': 2, 'X': 1, 'Y': 2, 'Z': 1
17
  }
18
 
19
+ # Flatten distribution for random selection
20
  flat_letters = [letter for letter, count in letters_distribution.items() for _ in range(count)]
21
 
22
+ # Function to generate a simple AI word
23
+ def generate_ai_word(letters):
24
+ # Simple strategy: pick a random number of letters and form a word
25
+ num_letters = random.randint(1, len(letters))
26
+ return random.sample(letters, num_letters)
27
+
28
  # Select 7 random letters
29
  random_letters = random.sample(flat_letters, 7)
30
 
31
+ # Streamlit UI enhancements
32
+ st.title('Emoji Scrabble Simulator 🎲')
33
+
34
+ # Columns for player and computer
35
+ col1, col2 = st.columns(2)
36
+
37
+ # Display for player
38
+ with col1:
39
+ st.header("Player's Turn πŸ§‘")
40
+ user_word = []
41
+ user_score = 0
42
+
43
+ # Display letters as buttons
44
+ for letter in random_letters:
45
+ score, letter_emoji = letters_scores[letter]
46
+ if st.button(f"{letter_emoji} ({score})", key=f"player_{letter}"):
47
+ user_word.append(letter)
48
+ user_score += score
49
+ st.success(f"Current word: {''.join(user_word)}")
50
+ st.info(f"Current score: {user_score}")
51
 
52
+ st.write(f"**Final word:** {''.join(user_word)}")
53
+ st.write(f"**Final score:** {user_score}")
54
 
55
+ # Display for computer
56
+ with col2:
57
+ st.header("Computer's Turn πŸ€–")
58
+ ai_word = generate_ai_word(random_letters)
59
+ ai_score = sum([letters_scores[letter][0] for letter in ai_word])
60
 
61
+ st.write(f"**AI's word:** {''.join(ai_word)}")
62
+ st.write(f"**AI's score:** {ai_score}")
 
 
 
 
 
63
 
64
+ # Determine the winner
65
+ if user_score > ai_score:
66
+ st.balloons()
67
+ st.success("πŸŽ‰ Congratulations! You won against the computer! πŸŽ‰")
68
+ elif user_score < ai_score:
69
+ st.error("πŸ–₯️ The computer wins this round. Try again! πŸ–₯️")
70
+ else:
71
+ st.warning("🀝 It's a tie! Well played! 🀝")