awacke1 commited on
Commit
29e0011
ยท
verified ยท
1 Parent(s): 6881b6d

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +79 -0
app.py ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import random
3
+
4
+ # Define letter scores and distribution
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
+ flat_letters = [letter for letter, count in letters_distribution.items() for _ in range(count)]
16
+
17
+ # Emojis for letters (selected for better UTF-8 compatibility)
18
+ letter_emojis = {
19
+ 'A': '๐Ÿ…ฐ๏ธ', 'B': '๐Ÿ…ฑ๏ธ', 'C': 'ยฉ๏ธ', 'D': '๐ŸŒ›', 'E': '๐Ÿ“ง', 'F': '๐ŸŽ', 'G': 'โ›ฝ', 'H': 'โ™“', 'I': 'โ„น๏ธ',
20
+ 'J': '๐ŸŽท', 'K': '๐ŸŽ‹', 'L': '๐Ÿ›ด', 'M': 'โ“‚๏ธ', 'N': '๐ŸŽต', 'O': '๐Ÿ…พ๏ธ', 'P': '๐Ÿ…ฟ๏ธ', 'Q': '๐Ÿ”', 'R': 'ยฎ๏ธ',
21
+ 'S': '๐Ÿ’ฒ', 'T': '๐ŸŒด', 'U': 'โ›Ž', 'V': 'โœ…', 'W': 'ใ€ฐ๏ธ', 'X': 'โŽ', 'Y': 'โœŒ๏ธ', 'Z': 'โšก'
22
+ }
23
+
24
+ # Streamlit app setup
25
+ st.title('Scrabble Simulator with Emojis')
26
+
27
+ # Player and computer scores and words
28
+ player_word = []
29
+ player_score = 0
30
+ computer_word = []
31
+ computer_score = 0
32
+
33
+ # Generate 7 random letters for player and computer
34
+ player_letters = random.sample(flat_letters, 7)
35
+ computer_letters = random.sample(flat_letters, 7)
36
+
37
+ # Display player's letters with emojis
38
+ st.subheader('Your Letters:')
39
+ col1, col2, col3, col4, col5, col6, col7 = st.columns(7)
40
+ columns = [col1, col2, col3, col4, col5, col6, col7]
41
+
42
+ for col, letter in zip(columns, player_letters):
43
+ with col:
44
+ if st.button(f"{letter_emojis[letter]} {letters_scores[letter]}", key=f"player_{letter}"):
45
+ player_word.append(letter)
46
+ player_score += letters_scores[letter]
47
+ st.session_state[f"player_{letter}"] = True # Disable the button
48
+
49
+ # Display player's current word and score
50
+ st.write(f"Your current word: {''.join(player_word)}")
51
+ st.write(f"Your current score: {player_score}")
52
+
53
+ # Computer's turn (simplified for this example)
54
+ computer_choice = random.choice(computer_letters)
55
+ computer_word.append(computer_choice)
56
+ computer_score += letters_scores[computer_choice]
57
+
58
+ st.subheader("Computer's Letters:")
59
+ st.write(f"๐Ÿค– Computer selected: {letter_emojis[computer_choice]} {letters_scores[computer_choice]}")
60
+ st.write(f"Computer's current word: {''.join(computer_word)}")
61
+ st.write(f"Computer's current score: {computer_score}")
62
+
63
+ # Display final scores and determine winner
64
+ if 'finish' in st.session_state and st.session_state['finish']:
65
+ st.write(f"Final word: {''.join(player_word)}")
66
+ st.write(f"Final score: {player_score}")
67
+ st.write("Game Over!")
68
+ st.write(f"Computer's final word: {''.join(computer_word)}")
69
+ st.write(f"Computer's final score: {computer_score}")
70
+ # Determine winner
71
+ if player_score > computer_score:
72
+ st.success("You win! ๐ŸŽ‰")
73
+ elif player_score < computer_score:
74
+ st.error("Computer wins! ๐Ÿ–ฅ๏ธ")
75
+ else:
76
+ st.warning("It's a tie! ๐Ÿค")
77
+ else:
78
+ if st.button("Finish Game"):
79
+ st.session_s