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