Spaces:
Sleeping
Sleeping
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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,
|
12 |
+
'J': 1, 'K': 1, 'L': 4, 'M': 2, 'N': 6, 'O': 8, 'P': 2, 'Q': 1, 'R': 6,
|
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}")
|