import gradio as gr import random def start_game(): secret_number = random.randint(1, 100) attempts = 0 message = "🎮 New Game Started! Guess a number between 1 and 100." return message, secret_number, attempts def check_guess(user_guess, secret_number, attempts): if user_guess is None: return "⚠️ Please enter a number!", secret_number, attempts attempts += 1 if user_guess < secret_number: message = f"🔻 Too low! Attempts: {attempts}" elif user_guess > secret_number: message = f"🔺 Too high! Attempts: {attempts}" else: message = ( f"🎉 Correct! The number was {secret_number}. You guessed it in {attempts} tries.\n" f"🔄 Starting a new game..." ) # Reset game secret_number = random.randint(1, 100) attempts = 0 return message, secret_number, attempts with gr.Blocks() as demo: gr.Markdown("## 🎯 Guess the Number Game\nTry to guess the secret number between 1 and 100.") with gr.Row(): guess_input = gr.Number(label="Your Guess", precision=0) guess_button = gr.Button("Submit Guess") new_game_button = gr.Button("🔄 New Game") result_output = gr.Textbox(label="Result", interactive=False) # Session state variables secret_state = gr.State() attempts_state = gr.State() # Button click logic guess_button.click( check_guess, inputs=[guess_input, secret_state, attempts_state], outputs=[result_output, secret_state, attempts_state] ) new_game_button.click( start_game, inputs=[], outputs=[result_output, secret_state, attempts_state] ) # Auto-start game when app loads demo.load(start_game, inputs=[], outputs=[result_output, secret_state, attempts_state]) demo.launch()