import streamlit as st import random import time # Function to generate math questions def generate_questions(level, num_questions=5): questions = [] for _ in range(num_questions): num1 = random.randint(1, level * 10) num2 = random.randint(1, level * 10) operator = random.choice(['+', '-', '*', '//']) # Integer division if operator == '//': num1 = num1 * num2 # Ensure whole-number division question = f"What is {num1} {operator} {num2}?" answer = eval(f"{num1} {operator} {num2}") questions.append((question, answer)) return questions # Function to get background image def get_background(level): backgrounds = [ "https://example.com/background1.jpg", "https://example.com/background2.jpg", "https://example.com/background3.jpg", ] return backgrounds[level % len(backgrounds)] # Initialize session state if 'level' not in st.session_state: st.session_state.level = 1 if 'questions' not in st.session_state: st.session_state.questions = generate_questions(st.session_state.level) if 'score' not in st.session_state: st.session_state.score = 0 if 'start_time' not in st.session_state: st.session_state.start_time = time.time() st.set_page_config(page_title="Math Quiz Game", layout="centered") # Mobile-friendly layout st.title("🧮 Math Quiz Game") st.markdown(f"### Level {st.session_state.level}") # Display background st.markdown( f""" """, unsafe_allow_html=True ) # Retrieve stored questions questions = st.session_state.questions user_answers = [] for i, (question, answer) in enumerate(questions): user_answer = st.text_input(question, key=f"q_{st.session_state.level}_{i}") user_answers.append((user_answer, answer)) if st.button("✅ Submit Answers"): error_messages = [] level_score = 0 for i, (user_answer, answer) in enumerate(user_answers): if not user_answer.strip(): error_messages.append(f"❌ Question {i + 1}: Please enter an answer.") else: try: if float(user_answer) == answer: level_score += 1 else: error_messages.append(f"❌ Question {i + 1}: Incorrect! Correct answer is {answer}.") except ValueError: error_messages.append(f"⚠️ Question {i + 1}: Invalid input. Please enter a number.") if error_messages: for msg in error_messages: st.error(msg) else: elapsed_time = round(time.time() - st.session_state.start_time, 2) st.success(f"🎉 You scored {level_score} out of 5 in {elapsed_time} seconds!") st.session_state.score += level_score st.session_state.level += 1 st.session_state.questions = generate_questions(st.session_state.level) st.session_state.start_time = time.time() # Reset timer st.experimental_rerun() # Show total score st.sidebar.markdown(f"## Total Score: {st.session_state.score}")