Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from streamlit_lottie import st_lottie | |
| import random | |
| import requests | |
| import time | |
| from datetime import datetime | |
| st.set_page_config(page_title="๐ฎ Ultimate Mini Game Arcade", layout="centered") | |
| # Load Lottie animation | |
| def load_lottieurl(url): | |
| r = requests.get(url) | |
| if r.status_code == 200: | |
| return r.json() | |
| return None | |
| lottie_gamepad = load_lottieurl("https://lottie.host/02f43b1d-15c7-4055-a02d-bbfb25d9b5f6/KUzEMZuOE4.json") | |
| if lottie_gamepad: | |
| st_lottie(lottie_gamepad, height=200) | |
| st.title("๐ฎ Ultimate Mini Game Arcade") | |
| st.caption("Fun games in a beautiful interface โจ") | |
| st.markdown("---") | |
| games = [ | |
| "Rock Paper Scissors", | |
| "Guess the Number", | |
| "Word Scramble", | |
| "Emoji Quiz", | |
| "Hangman", | |
| "Math Quiz", | |
| "Quick Typing", | |
| "Emoji Memory Match", | |
| "Tic Tac Toe" | |
| ] | |
| selected_game = st.selectbox("๐น๏ธ Choose a game:", games) | |
| st.markdown("---") | |
| # Games | |
| def rock_paper_scissors(): | |
| st.subheader("๐ชจ Rock Paper Scissors") | |
| player = st.radio("Your move:", ["Rock", "Paper", "Scissors"], horizontal=True) | |
| if st.button("Play!"): | |
| computer = random.choice(["Rock", "Paper", "Scissors"]) | |
| st.write(f"Computer chose: **{computer}**") | |
| if player == computer: | |
| st.info("It's a draw!") | |
| elif (player == "Rock" and computer == "Scissors") or \ | |
| (player == "Paper" and computer == "Rock") or \ | |
| (player == "Scissors" and computer == "Paper"): | |
| st.success("You win!") | |
| else: | |
| st.error("You lose!") | |
| def guess_the_number(): | |
| st.subheader("๐ข Guess the Number") | |
| if "target_number" not in st.session_state: | |
| st.session_state.target_number = random.randint(1, 20) | |
| st.session_state.attempts_left = 5 | |
| guess = st.number_input("Enter a guess (1-20):", min_value=1, max_value=20, step=1) | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| if st.button("Guess"): | |
| st.session_state.attempts_left -= 1 | |
| if guess == st.session_state.target_number: | |
| st.success("๐ Correct!") | |
| del st.session_state.target_number | |
| elif st.session_state.attempts_left == 0: | |
| st.error(f"๐ข Out of attempts! The number was {st.session_state.target_number}") | |
| del st.session_state.target_number | |
| elif guess < st.session_state.target_number: | |
| st.warning("Too low!") | |
| else: | |
| st.warning("Too high!") | |
| with col2: | |
| st.info(f"๐ฏ Attempts left: {st.session_state.attempts_left}") | |
| def word_scramble(): | |
| st.subheader("๐ก Word Scramble") | |
| words = ["streamlit", "developer", "python", "banana"] | |
| if "scramble_word" not in st.session_state: | |
| st.session_state.scramble_word = random.choice(words) | |
| st.session_state.scramble_attempts = 3 | |
| scrambled = ''.join(random.sample(st.session_state.scramble_word, len(st.session_state.scramble_word))) | |
| st.write(f"Unscramble this: **{scrambled}**") | |
| answer = st.text_input("Your guess:") | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| if st.button("Check"): | |
| if answer.lower() == st.session_state.scramble_word: | |
| st.success("Correct!") | |
| del st.session_state.scramble_word | |
| else: | |
| st.session_state.scramble_attempts -= 1 | |
| if st.session_state.scramble_attempts <= 0: | |
| st.error(f"Out of tries! Word was **{st.session_state.scramble_word}**") | |
| del st.session_state.scramble_word | |
| else: | |
| st.warning("Try again!") | |
| with col2: | |
| st.info(f"๐ Tries left: {st.session_state.scramble_attempts}") | |
| def emoji_quiz(): | |
| st.subheader("๐ Emoji Quiz") | |
| quiz = { | |
| "๐๐๐ฅค": "Fast Food", | |
| "๐ถ๐ฑ": "Pets", | |
| "๐โ๏ธ": "Travel", | |
| "โฝ๐": "Sports" | |
| } | |
| if "emoji_question" not in st.session_state: | |
| st.session_state.emoji_question, st.session_state.emoji_answer = random.choice(list(quiz.items())) | |
| st.write(f"What does this mean? {st.session_state.emoji_question}") | |
| guess = st.text_input("Your answer:") | |
| if st.button("Check Answer"): | |
| if guess.strip().lower() == st.session_state.emoji_answer.lower(): | |
| st.success("Correct!") | |
| del st.session_state.emoji_question | |
| del st.session_state.emoji_answer | |
| else: | |
| st.error("Nope!") | |
| def hangman(): | |
| st.subheader("๐ป Hangman") | |
| words = ["pen", "sun", "dog", "python"] | |
| if "hangman_word" not in st.session_state: | |
| st.session_state.hangman_word = random.choice(words) | |
| st.session_state.hangman_tries = 5 | |
| guess = st.text_input("Guess the word:") | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| if st.button("Submit"): | |
| st.session_state.hangman_tries -= 1 | |
| if guess.lower() == st.session_state.hangman_word: | |
| st.success("Correct!") | |
| del st.session_state.hangman_word | |
| elif st.session_state.hangman_tries <= 0: | |
| st.error(f"Game over! Word was {st.session_state.hangman_word}") | |
| del st.session_state.hangman_word | |
| else: | |
| st.warning(f"Incorrect!") | |
| with col2: | |
| st.info(f"Tries left: {st.session_state.hangman_tries}") | |
| def math_quiz(): | |
| st.subheader("โ Math Quiz") | |
| if "a" not in st.session_state: | |
| st.session_state.a = random.randint(1, 15) | |
| st.session_state.b = random.randint(1, 15) | |
| st.write(f"What is {st.session_state.a} + {st.session_state.b}?") | |
| ans = st.number_input("Your answer:", step=1) | |
| if st.button("Submit"): | |
| if ans == st.session_state.a + st.session_state.b: | |
| st.success("Correct!") | |
| else: | |
| st.error(f"Wrong! Answer is {st.session_state.a + st.session_state.b}") | |
| del st.session_state.a | |
| del st.session_state.b | |
| def quick_typing(): | |
| st.subheader("โจ๏ธ Quick Typing") | |
| words = ["keyboard", "streamlit", "python", "arcade"] | |
| if "typing_word" not in st.session_state: | |
| st.session_state.typing_word = random.choice(words) | |
| st.session_state.start_time = time.time() | |
| st.info(f"Type this: **{st.session_state.typing_word}**") | |
| user = st.text_input("Start typing:") | |
| time_passed = time.time() - st.session_state.start_time | |
| duration = len(st.session_state.typing_word) * 0.7 | |
| st.write(f"โณ Time used: {int(time_passed)}s / {int(duration)}s") | |
| if st.button("Check"): | |
| if time_passed > duration: | |
| st.error("โฐ Time exceeded!") | |
| elif user == st.session_state.typing_word: | |
| st.success("Perfect!") | |
| else: | |
| st.error("Incorrect!") | |
| del st.session_state.typing_word | |
| def emoji_memory(): | |
| st.subheader("๐ง Emoji Memory Match") | |
| emojis = random.sample(["๐", "๐", "๐ถ", "๐", "๐", "๐"], 4) | |
| if "emoji_mem" not in st.session_state: | |
| st.session_state.emoji_mem = emojis | |
| st.session_state.mem_start = datetime.now() | |
| if (datetime.now() - st.session_state.mem_start).seconds < 5: | |
| st.info("Memorize these:") | |
| st.code(" ".join(st.session_state.emoji_mem)) | |
| else: | |
| guess = st.text_input("Enter one emoji you remember:") | |
| if st.button("Check"): | |
| if guess.strip() in st.session_state.emoji_mem: | |
| st.success("Correct!") | |
| else: | |
| st.error(f"Oops! Emojis were: {' '.join(st.session_state.emoji_mem)}") | |
| del st.session_state.emoji_mem | |
| def tic_tac_toe(): | |
| st.subheader("โ Tic Tac Toe") | |
| st.write("โ Coming soon! Placeholder for a playable board.") | |
| # Dispatcher | |
| if selected_game == "Rock Paper Scissors": | |
| rock_paper_scissors() | |
| elif selected_game == "Guess the Number": | |
| guess_the_number() | |
| elif selected_game == "Word Scramble": | |
| word_scramble() | |
| elif selected_game == "Emoji Quiz": | |
| emoji_quiz() | |
| elif selected_game == "Hangman": | |
| hangman() | |
| elif selected_game == "Math Quiz": | |
| math_quiz() | |
| elif selected_game == "Quick Typing": | |
| quick_typing() | |
| elif selected_game == "Emoji Memory Match": | |
| emoji_memory() | |
| elif selected_game == "Tic Tac Toe": | |
| tic_tac_toe() | |
| st.markdown("---") | |
| st.markdown("<center>๐ Built with โค๏ธ for fun and feedback on LinkedIn!</center>", unsafe_allow_html=True) | |