File size: 10,828 Bytes
7f7728a
 
a84332e
7f7728a
 
 
a84332e
 
a7da305
 
a84332e
 
 
 
 
 
 
 
 
 
a7da305
a84332e
 
 
 
a7da305
 
 
7f7728a
a84332e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52588de
a84332e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26998d9
 
a84332e
26998d9
 
 
 
 
 
a84332e
26998d9
 
 
a7da305
a84332e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
import streamlit as st
import random
import time

st.set_page_config(page_title="Mini Game Arcade ๐ŸŽฎ", layout="centered")

# --- Score Initialization ---
if "score" not in st.session_state:
    st.session_state.score = 0

# --- Selected Game State ---
if "selected_game" not in st.session_state:
    st.session_state.selected_game = None

# --- Game List ---
game_list = [
    "Rock Paper Scissors", "Guess the Number", "Word Scramble", "Emoji Quiz",
    "Math Quiz", "Coin Toss", "Color Guess", "Yes or No", "Hangman (Short Word)",
    "Odd or Even", "Fast Tap Challenge"
]

# --- App Header ---
st.title("๐ŸŽฎ Mini Game Arcade")
st.markdown("Welcome! Choose a game below and earn points! ๐Ÿง โœจ")
st.markdown(f"### โญ Score: `{st.session_state.score}`")
if st.button("๐Ÿ”„ Reset Score"):
    st.session_state.score = 0
    st.success("Score has been reset!")

# --- Game Selector (Cards Style) ---
cols = st.columns(3)
for i, game in enumerate(game_list):
    if cols[i % 3].button(game):
        st.session_state.selected_game = game

st.divider()

# --- Run Selected Game ---
selected_game = st.session_state.selected_game
if selected_game:

    # --- Rock Paper Scissors ---
    if selected_game == "Rock Paper Scissors":
        st.subheader("โœŠ๐Ÿ–โœŒ Rock Paper Scissors")
        user_choice = st.radio("Your Move:", ["Rock", "Paper", "Scissors"])
        if st.button("Play"):
            computer = random.choice(["Rock", "Paper", "Scissors"])
            st.write(f"๐Ÿค– Computer chose: {computer}")
            if user_choice == computer:
                st.info("It's a tie!")
            elif (user_choice == "Rock" and computer == "Scissors") or \
                 (user_choice == "Paper" and computer == "Rock") or \
                 (user_choice == "Scissors" and computer == "Paper"):
                st.success("You win! +1 point")
                st.session_state.score += 1
            else:
                st.error("You lose!")

    # --- Guess the Number ---
    elif selected_game == "Guess the Number":
        st.subheader("๐Ÿ”ข Guess the Number")
        if "guess_number" not in st.session_state:
            st.session_state.guess_number = random.randint(1, 20)
        guess = st.number_input("Guess a number between 1 and 20", 1, 20)
        if st.button("Submit Guess"):
            target = st.session_state.guess_number
            if guess == target:
                st.success("๐ŸŽ‰ Correct! +1 point")
                st.session_state.score += 1
                del st.session_state.guess_number
            elif guess < target:
                st.warning("Too low!")
            else:
                st.warning("Too high!")
            st.caption(f"The number was: {target}")

    # --- Word Scramble ---
    elif selected_game == "Word Scramble":
        st.subheader("๐Ÿ”ค Word Scramble")
        words = ["cake", "fish", "book", "door", "tree", "milk", "bike", "lamp", "frog", "star"]
        if "scramble_word" not in st.session_state:
            word = random.choice(words)
            scrambled = ''.join(random.sample(word, len(word)))
            st.session_state.scramble_word = word
            st.session_state.scrambled = scrambled
        st.write(f"Unscramble this: `{st.session_state.scrambled}`")
        answer = st.text_input("Your Guess")
        if st.button("Check Answer"):
            if answer.lower() == st.session_state.scramble_word:
                st.success("Correct! +1 point")
                st.session_state.score += 1
                del st.session_state.scramble_word
                del st.session_state.scrambled
            else:
                st.error(f"Wrong! It was `{st.session_state.scramble_word}`")

    # --- Emoji Quiz ---
    elif selected_game == "Emoji Quiz":
        st.subheader("๐Ÿ˜Š Emoji Quiz")
        emoji_dict = {
            "๐ŸŽ๐Ÿ“ฑ": "apple", "๐Ÿ“˜๐ŸŽ“": "study", "๐ŸŽฎ๐Ÿง ": "game", "๐Ÿ•โค๏ธ": "pizza", "๐Ÿ๐Ÿ’ป": "python",
            "๐Ÿš—๐Ÿ’จ": "drive", "๐ŸŽง๐ŸŽถ": "music", "โœˆ๏ธ๐ŸŒ": "travel", "๐Ÿƒ๐Ÿ’ช": "exercise", "๐Ÿถ๐Ÿพ": "dog",
            "๐Ÿ˜ด๐Ÿ›๏ธ": "sleep", "๐Ÿ›’๐Ÿงƒ": "shopping", "๐Ÿ“ท๐Ÿ“ธ": "camera", "๐Ÿ“บ๐ŸŽฌ": "movie", "๐Ÿ’กโšก": "idea",
            "๐ŸŒง๏ธโ˜”": "rain", "๐ŸŒž๐Ÿ–๏ธ": "summer", "๐Ÿ ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": "family", "๐ŸŽ‚๐ŸŽ‰": "birthday", "๐Ÿ“ž๐Ÿ“ฑ": "call"
        }
        if "emoji_pair" not in st.session_state:
            emoji, word = random.choice(list(emoji_dict.items()))
            st.session_state.emoji_pair = (emoji, word)
        emoji, correct = st.session_state.emoji_pair
        st.write(f"What do these emojis mean? {emoji}")
        user_ans = st.text_input("Your Answer")
        if st.button("Check"):
            if user_ans.lower().strip() == correct:
                st.success("You're right! +1 point")
                st.session_state.score += 1
            else:
                st.error(f"Oops, it was: `{correct}`")
            del st.session_state.emoji_pair

    # --- Math Quiz ---
    elif selected_game == "Math Quiz":
        st.subheader("โž• Math Quiz")
        if "math_pair" not in st.session_state:
            a, b = random.randint(1, 10), random.randint(1, 10)
            st.session_state.math_pair = (a, b)
        a, b = st.session_state.math_pair
        st.write(f"What is {a} + {b}?")
        user_ans = st.number_input("Your Answer", 0)
        if st.button("Submit"):
            if user_ans == a + b:
                st.success("Correct! +1 point")
                st.session_state.score += 1
            else:
                st.error(f"Wrong! Answer: {a + b}")
            del st.session_state.math_pair

    # --- Coin Toss ---
    elif selected_game == "Coin Toss":
        st.subheader("๐Ÿช™ Coin Toss")
        user_call = st.radio("Call it:", ["Heads", "Tails"])
        if st.button("Flip"):
            result = random.choice(["Heads", "Tails"])
            st.write(f"๐Ÿช™ It's {result}!")
            if user_call == result:
                st.success("You guessed it! +1 point")
                st.session_state.score += 1
            else:
                st.error("Try again!")

    # --- Color Guess ---
    elif selected_game == "Color Guess":
        st.subheader("๐ŸŽจ Color Guess")
        colors = ["Red", "Blue", "Green", "Yellow", "Purple"]
        if "color_ans" not in st.session_state:
            st.session_state.color_ans = random.choice(colors)
        guess = st.selectbox("Guess the color", colors)
        if st.button("Check Color"):
            if guess == st.session_state.color_ans:
                st.success("Correct! +1 point")
                st.session_state.score += 1
            else:
                st.warning(f"Nope! It was {st.session_state.color_ans}")
            del st.session_state.color_ans

    # --- Yes or No ---
    elif selected_game == "Yes or No":
        st.subheader("โ“ Yes or No")
        question = st.text_input("Ask any yes/no question")
        if st.button("Answer"):
            response = random.choice(["Yes", "No", "Maybe", "Definitely not", "Probably yes"])
            st.write(f"๐Ÿง  Answer: {response}")
            st.info("This game doesn't affect your score.")

    # --- Hangman ---
    elif selected_game == "Hangman (Short Word)":
        st.subheader("๐ŸŽฏ Hangman")
        if 'hangman_word' not in st.session_state:
            word = random.choice([
                "fish", "milk", "tree", "door", "cake", "book", "frog", "rain",
                "bike", "jump", "lamp", "home", "ring", "desk", "lion", "wolf"
            ])
            st.session_state.hangman_word = word
            st.session_state.hangman_display = ["_"] * len(word)
            st.session_state.hangman_tries = 6
            st.session_state.hangman_guessed = []

        st.write(" ".join(st.session_state.hangman_display))
        st.write(f"๐Ÿ•น๏ธ Tries Left: `{st.session_state.hangman_tries}`")
        st.write(f"๐Ÿ”ค Letters guessed: `{', '.join(st.session_state.hangman_guessed)}`")
        letter = st.text_input("Guess a letter", max_chars=1)

        if st.button("Submit Letter"):
            if not letter or not letter.isalpha():
                st.warning("Enter a valid letter.")
            elif letter in st.session_state.hangman_guessed:
                st.info("Already guessed.")
            else:
                st.session_state.hangman_guessed.append(letter)
                if letter in st.session_state.hangman_word:
                    for i, l in enumerate(st.session_state.hangman_word):
                        if l == letter:
                            st.session_state.hangman_display[i] = letter
                    st.success("Correct letter!")
                else:
                    st.session_state.hangman_tries -= 1
                    st.error("Wrong letter!")

        if "_" not in st.session_state.hangman_display:
            st.success(f"You guessed it! Word: `{st.session_state.hangman_word}`")
            st.session_state.score += 1
            if st.button("Play Again"):
                for key in ["hangman_word", "hangman_display", "hangman_tries", "hangman_guessed"]:
                    del st.session_state[key]

        elif st.session_state.hangman_tries == 0:
            st.error(f"Game Over! Word was: `{st.session_state.hangman_word}`")
            if st.button("Try Again"):
                for key in ["hangman_word", "hangman_display", "hangman_tries", "hangman_guessed"]:
                    del st.session_state[key]

    # --- Odd or Even ---
    elif selected_game == "Odd or Even":
        st.subheader("๐Ÿ”ข Odd or Even")
        if "odd_even_number" not in st.session_state:
            st.session_state.odd_even_number = random.randint(1, 100)
        num = st.session_state.odd_even_number
        guess = st.radio(f"Is {num} odd or even?", ["Odd", "Even"])
        if st.button("Check"):
            correct = "Even" if num % 2 == 0 else "Odd"
            if guess == correct:
                st.success("Correct! +1 point")
                st.session_state.score += 1
            else:
                st.error(f"Nope! It's {correct}")
            del st.session_state.odd_even_number

    # --- Fast Tap Challenge ---
    elif selected_game == "Fast Tap Challenge":
        st.subheader("โฑ๏ธ Fast Tap Challenge")
        if st.button("Start Timer"):
            st.session_state.tap_start = time.time()
        if st.button("Stop Timer"):
            if "tap_start" in st.session_state:
                elapsed = time.time() - st.session_state.tap_start
                if elapsed < 1.5:
                    st.success(f"Great! You tapped in {elapsed:.2f}s. +1 point")
                    st.session_state.score += 1
                else:
                    st.warning(f"Too slow! You took {elapsed:.2f}s.")
                del st.session_state.tap_start