Rida-Zehra commited on
Commit
a84332e
ยท
verified ยท
1 Parent(s): 26998d9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +226 -188
app.py CHANGED
@@ -1,213 +1,251 @@
1
  import streamlit as st
2
  import random
 
3
 
4
  st.set_page_config(page_title="Mini Game Arcade ๐ŸŽฎ", layout="centered")
5
 
6
- # --- Initialize Score ---
7
- if 'score' not in st.session_state:
8
  st.session_state.score = 0
9
 
10
- # --- Header ---
11
- st.title("๐ŸŽฎ Mini Game Arcade")
12
- st.markdown("Welcome! Play a game and earn points! ๐Ÿง ๐Ÿ’ก")
 
 
 
 
 
 
 
13
 
14
- # --- Display Score + Reset Button ---
15
- st.markdown(f"### โญ Current Score: `{st.session_state.score}`")
 
 
16
  if st.button("๐Ÿ”„ Reset Score"):
17
  st.session_state.score = 0
18
  st.success("Score has been reset!")
19
 
20
- # --- Game Selection ---
21
- games = [
22
- "Rock Paper Scissors", "Guess the Number", "Word Scramble", "Emoji Quiz",
23
- "Math Quiz", "Coin Toss", "Color Guess", "Yes or No", "Hangman (Short Word)"
24
- ]
25
-
26
- selected_game = st.selectbox("๐ŸŽฒ Choose a game", games)
27
-
28
- # --- ROCK PAPER SCISSORS ---
29
- if selected_game == "Rock Paper Scissors":
30
- st.subheader("โœŠ๐Ÿ–โœŒ Rock Paper Scissors")
31
- user_choice = st.radio("Your Move:", ["Rock", "Paper", "Scissors"])
32
- if st.button("Play"):
33
- computer = random.choice(["Rock", "Paper", "Scissors"])
34
- st.write(f"๐Ÿค– Computer chose: {computer}")
35
- if user_choice == computer:
36
- st.info("It's a tie!")
37
- elif (user_choice == "Rock" and computer == "Scissors") or \
38
- (user_choice == "Paper" and computer == "Rock") or \
39
- (user_choice == "Scissors" and computer == "Paper"):
40
- st.success("You win! +1 point")
41
- st.session_state.score += 1
42
- else:
43
- st.error("You lose!")
44
-
45
- # --- GUESS THE NUMBER ---
46
- elif selected_game == "Guess the Number":
47
- st.subheader("๐Ÿ”ข Guess the Number")
48
- number = random.randint(1, 20)
49
- guess = st.number_input("Guess a number between 1 and 20", 1, 20)
50
- if st.button("Submit Guess"):
51
- if guess == number:
52
- st.success("๐ŸŽ‰ Correct! +1 point")
53
- st.session_state.score += 1
54
- elif guess < number:
55
- st.warning("Too low!")
56
- else:
57
- st.warning("Too high!")
58
- st.caption(f"The number was: {number}")
59
-
60
- # --- WORD SCRAMBLE ---
61
- # --- WORD SCRAMBLE ---
62
- elif selected_game == "Word Scramble":
63
- st.subheader("๐Ÿ”ค Word Scramble")
64
- easy_words = ["cake", "fish", "book", "door", "tree", "milk", "rice", "bike", "lamp", "frog", "star", "jump"]
65
- word = random.choice(easy_words)
66
- scrambled = ''.join(random.sample(word, len(word)))
67
- st.write(f"Unscramble this word: `{scrambled}`")
68
- answer = st.text_input("Your Guess")
69
- if st.button("Check Answer"):
70
- if answer.lower() == word:
71
- st.success("Correct! +1 point")
72
- st.session_state.score += 1
73
- else:
74
- st.error(f"Wrong. It was `{word}`.")
75
-
76
- # --- EMOJI QUIZ ---
77
- # --- EMOJI QUIZ ---
78
- elif selected_game == "Emoji Quiz":
79
- st.subheader("๐Ÿ˜Š Emoji Quiz")
80
- emoji_dict = {
81
- "๐ŸŽ๐Ÿ“ฑ": "apple",
82
- "๐Ÿ“˜๐ŸŽ“": "study",
83
- "๐ŸŽฎ๐Ÿง ": "game",
84
- "๐Ÿ•โค๏ธ": "pizza",
85
- "๐Ÿ๐Ÿ’ป": "python",
86
- "๐Ÿš—๐Ÿ’จ": "drive",
87
- "๐ŸŽง๐ŸŽถ": "music",
88
- "โœˆ๏ธ๐ŸŒ": "travel",
89
- "๐Ÿƒ๐Ÿ’ช": "exercise",
90
- "๐Ÿถ๐Ÿพ": "dog",
91
- "๐Ÿ˜ด๐Ÿ›๏ธ": "sleep",
92
- "๐Ÿ›’๐Ÿงƒ": "shopping",
93
- "๐Ÿ“ท๐Ÿ“ธ": "camera",
94
- "๐Ÿ“บ๐ŸŽฌ": "movie",
95
- "๐Ÿ’กโšก": "idea",
96
- "๐ŸŒง๏ธโ˜”": "rain",
97
- "๐ŸŒž๐Ÿ–๏ธ": "summer",
98
- "๐Ÿ ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": "family",
99
- "๐ŸŽ‚๐ŸŽ‰": "birthday",
100
- "๐Ÿ“ž๐Ÿ“ฑ": "call"
101
- }
102
-
103
- emoji, correct = random.choice(list(emoji_dict.items()))
104
- st.write(f"What do these emojis mean? {emoji}")
105
- user_ans = st.text_input("Your Answer")
106
- if st.button("Check"):
107
- if user_ans.lower().strip() == correct:
108
- st.success("You're right! +1 point")
109
- st.session_state.score += 1
110
- else:
111
- st.error(f"Oops, the answer was: {correct}")
112
-
113
-
114
- # --- MATH QUIZ ---
115
- elif selected_game == "Math Quiz":
116
- st.subheader("โž• Math Quiz")
117
- a, b = random.randint(1, 10), random.randint(1, 10)
118
- correct = a + b
119
- st.write(f"What is {a} + {b}?")
120
- user_ans = st.number_input("Your Answer", 0)
121
- if st.button("Submit"):
122
- if user_ans == correct:
123
- st.success("Correct! +1 point")
124
- st.session_state.score += 1
125
- else:
126
- st.error(f"Wrong. Answer: {correct}")
127
-
128
- # --- COIN TOSS ---
129
- elif selected_game == "Coin Toss":
130
- st.subheader("๐Ÿช™ Coin Toss")
131
- user_call = st.radio("Call it:", ["Heads", "Tails"])
132
- if st.button("Flip"):
133
- result = random.choice(["Heads", "Tails"])
134
- st.write(f"๐Ÿช™ It's {result}!")
135
- if user_call == result:
136
- st.success("You guessed it! +1 point")
137
- st.session_state.score += 1
138
- else:
139
- st.error("Try again!")
140
-
141
- # --- COLOR GUESS ---
142
- elif selected_game == "Color Guess":
143
- st.subheader("๐ŸŽจ Color Guess")
144
- colors = ["Red", "Blue", "Green", "Yellow", "Purple"]
145
- correct = random.choice(colors)
146
- user_guess = st.selectbox("Guess the color", colors)
147
- if st.button("Check Color"):
148
- if user_guess == correct:
149
- st.success("Correct! +1 point")
150
- st.session_state.score += 1
151
- else:
152
- st.warning(f"Wrong. It was {correct}.")
153
-
154
- # --- YES OR NO ---
155
- elif selected_game == "Yes or No":
156
- st.subheader("โ“ Yes or No")
157
- question = st.text_input("Ask any yes/no question")
158
- if st.button("Answer"):
159
- response = random.choice(["Yes", "No", "Maybe", "Definitely not", "Probably yes"])
160
- st.write(f"๐Ÿง  Answer: {response}")
161
- st.info("This game doesn't affect your score.")
162
-
163
- # --- HANGMAN (Short Word) ---
164
- # --- HANGMAN GAME ---
165
- elif selected_game == "Hangman (Short Word)":
166
- st.subheader("๐ŸŽฏ Hangman")
167
-
168
- if 'hangman_word' not in st.session_state:
169
- st.session_state.hangman_word = random.choice([
170
- "fish", "milk", "tree", "door", "cake", "book", "frog", "rain", "bike", "jump",
171
- "lamp", "home", "ring", "desk", "lion", "wolf", "snow", "king", "moon", "star"
172
- ])
173
- st.session_state.hangman_display = ["_"] * len(st.session_state.hangman_word)
174
- st.session_state.hangman_tries = 6
175
- st.session_state.hangman_guessed = []
176
-
177
- st.write(" ".join(st.session_state.hangman_display))
178
- st.write(f"๐Ÿ•น๏ธ Tries Left: `{st.session_state.hangman_tries}`")
179
- st.write(f"๐Ÿ”ค Letters guessed: `{', '.join(st.session_state.hangman_guessed)}`")
180
-
181
- letter = st.text_input("Guess a letter", max_chars=1)
182
-
183
- if st.button("Submit Letter"):
184
- if not letter or not letter.isalpha():
185
- st.warning("Please enter a valid letter.")
186
- elif letter in st.session_state.hangman_guessed:
187
- st.info("You've already guessed that letter.")
188
- else:
189
- st.session_state.hangman_guessed.append(letter)
190
-
191
- if letter in st.session_state.hangman_word:
192
- for i, l in enumerate(st.session_state.hangman_word):
193
- if l == letter:
194
- st.session_state.hangman_display[i] = letter
195
- st.success("โœ… Correct letter!")
196
  else:
197
- st.session_state.hangman_tries -= 1
198
- st.error("โŒ Incorrect letter!")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
 
200
- # Check for win/lose
201
  if "_" not in st.session_state.hangman_display:
202
- st.success(f"๐ŸŽ‰ You guessed it! The word was `{st.session_state.hangman_word}`.")
203
  st.session_state.score += 1
204
  if st.button("Play Again"):
205
  for key in ["hangman_word", "hangman_display", "hangman_tries", "hangman_guessed"]:
206
  del st.session_state[key]
207
 
208
  elif st.session_state.hangman_tries == 0:
209
- st.error(f"๐Ÿ’€ Game Over! The word was `{st.session_state.hangman_word}`.")
210
  if st.button("Try Again"):
211
  for key in ["hangman_word", "hangman_display", "hangman_tries", "hangman_guessed"]:
212
  del st.session_state[key]
213
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  import random
3
+ import time
4
 
5
  st.set_page_config(page_title="Mini Game Arcade ๐ŸŽฎ", layout="centered")
6
 
7
+ # --- Score Initialization ---
8
+ if "score" not in st.session_state:
9
  st.session_state.score = 0
10
 
11
+ # --- Selected Game State ---
12
+ if "selected_game" not in st.session_state:
13
+ st.session_state.selected_game = None
14
+
15
+ # --- Game List ---
16
+ game_list = [
17
+ "Rock Paper Scissors", "Guess the Number", "Word Scramble", "Emoji Quiz",
18
+ "Math Quiz", "Coin Toss", "Color Guess", "Yes or No", "Hangman (Short Word)",
19
+ "Odd or Even", "Fast Tap Challenge"
20
+ ]
21
 
22
+ # --- App Header ---
23
+ st.title("๐ŸŽฎ Mini Game Arcade")
24
+ st.markdown("Welcome! Choose a game below and earn points! ๐Ÿง โœจ")
25
+ st.markdown(f"### โญ Score: `{st.session_state.score}`")
26
  if st.button("๐Ÿ”„ Reset Score"):
27
  st.session_state.score = 0
28
  st.success("Score has been reset!")
29
 
30
+ # --- Game Selector (Cards Style) ---
31
+ cols = st.columns(3)
32
+ for i, game in enumerate(game_list):
33
+ if cols[i % 3].button(game):
34
+ st.session_state.selected_game = game
35
+
36
+ st.divider()
37
+
38
+ # --- Run Selected Game ---
39
+ selected_game = st.session_state.selected_game
40
+ if selected_game:
41
+
42
+ # --- Rock Paper Scissors ---
43
+ if selected_game == "Rock Paper Scissors":
44
+ st.subheader("โœŠ๐Ÿ–โœŒ Rock Paper Scissors")
45
+ user_choice = st.radio("Your Move:", ["Rock", "Paper", "Scissors"])
46
+ if st.button("Play"):
47
+ computer = random.choice(["Rock", "Paper", "Scissors"])
48
+ st.write(f"๐Ÿค– Computer chose: {computer}")
49
+ if user_choice == computer:
50
+ st.info("It's a tie!")
51
+ elif (user_choice == "Rock" and computer == "Scissors") or \
52
+ (user_choice == "Paper" and computer == "Rock") or \
53
+ (user_choice == "Scissors" and computer == "Paper"):
54
+ st.success("You win! +1 point")
55
+ st.session_state.score += 1
56
+ else:
57
+ st.error("You lose!")
58
+
59
+ # --- Guess the Number ---
60
+ elif selected_game == "Guess the Number":
61
+ st.subheader("๐Ÿ”ข Guess the Number")
62
+ if "guess_number" not in st.session_state:
63
+ st.session_state.guess_number = random.randint(1, 20)
64
+ guess = st.number_input("Guess a number between 1 and 20", 1, 20)
65
+ if st.button("Submit Guess"):
66
+ target = st.session_state.guess_number
67
+ if guess == target:
68
+ st.success("๐ŸŽ‰ Correct! +1 point")
69
+ st.session_state.score += 1
70
+ del st.session_state.guess_number
71
+ elif guess < target:
72
+ st.warning("Too low!")
73
+ else:
74
+ st.warning("Too high!")
75
+ st.caption(f"The number was: {target}")
76
+
77
+ # --- Word Scramble ---
78
+ elif selected_game == "Word Scramble":
79
+ st.subheader("๐Ÿ”ค Word Scramble")
80
+ words = ["cake", "fish", "book", "door", "tree", "milk", "bike", "lamp", "frog", "star"]
81
+ if "scramble_word" not in st.session_state:
82
+ word = random.choice(words)
83
+ scrambled = ''.join(random.sample(word, len(word)))
84
+ st.session_state.scramble_word = word
85
+ st.session_state.scrambled = scrambled
86
+ st.write(f"Unscramble this: `{st.session_state.scrambled}`")
87
+ answer = st.text_input("Your Guess")
88
+ if st.button("Check Answer"):
89
+ if answer.lower() == st.session_state.scramble_word:
90
+ st.success("Correct! +1 point")
91
+ st.session_state.score += 1
92
+ del st.session_state.scramble_word
93
+ del st.session_state.scrambled
94
+ else:
95
+ st.error(f"Wrong! It was `{st.session_state.scramble_word}`")
96
+
97
+ # --- Emoji Quiz ---
98
+ elif selected_game == "Emoji Quiz":
99
+ st.subheader("๐Ÿ˜Š Emoji Quiz")
100
+ emoji_dict = {
101
+ "๐ŸŽ๐Ÿ“ฑ": "apple", "๐Ÿ“˜๐ŸŽ“": "study", "๐ŸŽฎ๐Ÿง ": "game", "๐Ÿ•โค๏ธ": "pizza", "๐Ÿ๐Ÿ’ป": "python",
102
+ "๐Ÿš—๐Ÿ’จ": "drive", "๐ŸŽง๐ŸŽถ": "music", "โœˆ๏ธ๐ŸŒ": "travel", "๐Ÿƒ๐Ÿ’ช": "exercise", "๐Ÿถ๐Ÿพ": "dog",
103
+ "๐Ÿ˜ด๐Ÿ›๏ธ": "sleep", "๐Ÿ›’๐Ÿงƒ": "shopping", "๐Ÿ“ท๐Ÿ“ธ": "camera", "๐Ÿ“บ๐ŸŽฌ": "movie", "๐Ÿ’กโšก": "idea",
104
+ "๐ŸŒง๏ธโ˜”": "rain", "๐ŸŒž๐Ÿ–๏ธ": "summer", "๐Ÿ ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": "family", "๐ŸŽ‚๐ŸŽ‰": "birthday", "๐Ÿ“ž๐Ÿ“ฑ": "call"
105
+ }
106
+ if "emoji_pair" not in st.session_state:
107
+ emoji, word = random.choice(list(emoji_dict.items()))
108
+ st.session_state.emoji_pair = (emoji, word)
109
+ emoji, correct = st.session_state.emoji_pair
110
+ st.write(f"What do these emojis mean? {emoji}")
111
+ user_ans = st.text_input("Your Answer")
112
+ if st.button("Check"):
113
+ if user_ans.lower().strip() == correct:
114
+ st.success("You're right! +1 point")
115
+ st.session_state.score += 1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
  else:
117
+ st.error(f"Oops, it was: `{correct}`")
118
+ del st.session_state.emoji_pair
119
+
120
+ # --- Math Quiz ---
121
+ elif selected_game == "Math Quiz":
122
+ st.subheader("โž• Math Quiz")
123
+ if "math_pair" not in st.session_state:
124
+ a, b = random.randint(1, 10), random.randint(1, 10)
125
+ st.session_state.math_pair = (a, b)
126
+ a, b = st.session_state.math_pair
127
+ st.write(f"What is {a} + {b}?")
128
+ user_ans = st.number_input("Your Answer", 0)
129
+ if st.button("Submit"):
130
+ if user_ans == a + b:
131
+ st.success("Correct! +1 point")
132
+ st.session_state.score += 1
133
+ else:
134
+ st.error(f"Wrong! Answer: {a + b}")
135
+ del st.session_state.math_pair
136
+
137
+ # --- Coin Toss ---
138
+ elif selected_game == "Coin Toss":
139
+ st.subheader("๐Ÿช™ Coin Toss")
140
+ user_call = st.radio("Call it:", ["Heads", "Tails"])
141
+ if st.button("Flip"):
142
+ result = random.choice(["Heads", "Tails"])
143
+ st.write(f"๐Ÿช™ It's {result}!")
144
+ if user_call == result:
145
+ st.success("You guessed it! +1 point")
146
+ st.session_state.score += 1
147
+ else:
148
+ st.error("Try again!")
149
+
150
+ # --- Color Guess ---
151
+ elif selected_game == "Color Guess":
152
+ st.subheader("๐ŸŽจ Color Guess")
153
+ colors = ["Red", "Blue", "Green", "Yellow", "Purple"]
154
+ if "color_ans" not in st.session_state:
155
+ st.session_state.color_ans = random.choice(colors)
156
+ guess = st.selectbox("Guess the color", colors)
157
+ if st.button("Check Color"):
158
+ if guess == st.session_state.color_ans:
159
+ st.success("Correct! +1 point")
160
+ st.session_state.score += 1
161
+ else:
162
+ st.warning(f"Nope! It was {st.session_state.color_ans}")
163
+ del st.session_state.color_ans
164
+
165
+ # --- Yes or No ---
166
+ elif selected_game == "Yes or No":
167
+ st.subheader("โ“ Yes or No")
168
+ question = st.text_input("Ask any yes/no question")
169
+ if st.button("Answer"):
170
+ response = random.choice(["Yes", "No", "Maybe", "Definitely not", "Probably yes"])
171
+ st.write(f"๐Ÿง  Answer: {response}")
172
+ st.info("This game doesn't affect your score.")
173
+
174
+ # --- Hangman ---
175
+ elif selected_game == "Hangman (Short Word)":
176
+ st.subheader("๐ŸŽฏ Hangman")
177
+ if 'hangman_word' not in st.session_state:
178
+ word = random.choice([
179
+ "fish", "milk", "tree", "door", "cake", "book", "frog", "rain",
180
+ "bike", "jump", "lamp", "home", "ring", "desk", "lion", "wolf"
181
+ ])
182
+ st.session_state.hangman_word = word
183
+ st.session_state.hangman_display = ["_"] * len(word)
184
+ st.session_state.hangman_tries = 6
185
+ st.session_state.hangman_guessed = []
186
+
187
+ st.write(" ".join(st.session_state.hangman_display))
188
+ st.write(f"๐Ÿ•น๏ธ Tries Left: `{st.session_state.hangman_tries}`")
189
+ st.write(f"๐Ÿ”ค Letters guessed: `{', '.join(st.session_state.hangman_guessed)}`")
190
+ letter = st.text_input("Guess a letter", max_chars=1)
191
+
192
+ if st.button("Submit Letter"):
193
+ if not letter or not letter.isalpha():
194
+ st.warning("Enter a valid letter.")
195
+ elif letter in st.session_state.hangman_guessed:
196
+ st.info("Already guessed.")
197
+ else:
198
+ st.session_state.hangman_guessed.append(letter)
199
+ if letter in st.session_state.hangman_word:
200
+ for i, l in enumerate(st.session_state.hangman_word):
201
+ if l == letter:
202
+ st.session_state.hangman_display[i] = letter
203
+ st.success("Correct letter!")
204
+ else:
205
+ st.session_state.hangman_tries -= 1
206
+ st.error("Wrong letter!")
207
 
 
208
  if "_" not in st.session_state.hangman_display:
209
+ st.success(f"You guessed it! Word: `{st.session_state.hangman_word}`")
210
  st.session_state.score += 1
211
  if st.button("Play Again"):
212
  for key in ["hangman_word", "hangman_display", "hangman_tries", "hangman_guessed"]:
213
  del st.session_state[key]
214
 
215
  elif st.session_state.hangman_tries == 0:
216
+ st.error(f"Game Over! Word was: `{st.session_state.hangman_word}`")
217
  if st.button("Try Again"):
218
  for key in ["hangman_word", "hangman_display", "hangman_tries", "hangman_guessed"]:
219
  del st.session_state[key]
220
 
221
+ # --- Odd or Even ---
222
+ elif selected_game == "Odd or Even":
223
+ st.subheader("๐Ÿ”ข Odd or Even")
224
+ if "odd_even_number" not in st.session_state:
225
+ st.session_state.odd_even_number = random.randint(1, 100)
226
+ num = st.session_state.odd_even_number
227
+ guess = st.radio(f"Is {num} odd or even?", ["Odd", "Even"])
228
+ if st.button("Check"):
229
+ correct = "Even" if num % 2 == 0 else "Odd"
230
+ if guess == correct:
231
+ st.success("Correct! +1 point")
232
+ st.session_state.score += 1
233
+ else:
234
+ st.error(f"Nope! It's {correct}")
235
+ del st.session_state.odd_even_number
236
+
237
+ # --- Fast Tap Challenge ---
238
+ elif selected_game == "Fast Tap Challenge":
239
+ st.subheader("โฑ๏ธ Fast Tap Challenge")
240
+ if st.button("Start Timer"):
241
+ st.session_state.tap_start = time.time()
242
+ if st.button("Stop Timer"):
243
+ if "tap_start" in st.session_state:
244
+ elapsed = time.time() - st.session_state.tap_start
245
+ if elapsed < 1.5:
246
+ st.success(f"Great! You tapped in {elapsed:.2f}s. +1 point")
247
+ st.session_state.score += 1
248
+ else:
249
+ st.warning(f"Too slow! You took {elapsed:.2f}s.")
250
+ del st.session_state.tap_start
251
+