Mahrukhh's picture
Update app.py
eda6548 verified
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)