Rida-Zehra's picture
Update app.py
a84332e verified
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