myGame / app.py
AamirMalik's picture
Create app.py
9237610 verified
import gradio as gr
import random
# Game State
players = {}
treasures = [{"x": random.uniform(-10, 10), "y": random.uniform(-10, 10), "z": random.uniform(-10, 10)} for _ in range(5)]
def start_game(player_name):
if not player_name:
return "Error: Player name is required."
players[player_name] = {"score": 0, "found": []}
return f"Welcome, {player_name}! The game has started."
def get_treasures():
return treasures
def find_treasure(player_name, treasure_index):
if player_name not in players:
return "Error: Player not found."
if 0 <= treasure_index < len(treasures):
found_treasure = treasures.pop(treasure_index)
players[player_name]["score"] += 10
players[player_name]["found"].append(found_treasure)
return f"Treasure found! Your score: {players[player_name]['score']}"
return "Error: Invalid treasure index."
def leaderboard():
sorted_leaderboard = sorted(players.items(), key=lambda x: x[1]["score"], reverse=True)
return sorted_leaderboard
# Gradio Interface
with gr.Blocks() as demo:
gr.Markdown("# 🏴‍☠️ Treasure Hunt Game")
with gr.Row():
player_input = gr.Textbox(label="Enter Player Name")
start_button = gr.Button("Start Game")
start_output = gr.Textbox(label="Game Status")
start_button.click(start_game, inputs=player_input, outputs=start_output)
treasure_list = gr.Dataframe(label="Available Treasures")
fetch_button = gr.Button("Get Treasures")
fetch_button.click(get_treasures, outputs=treasure_list)
with gr.Row():
treasure_index = gr.Number(label="Treasure Index")
player_name_find = gr.Textbox(label="Player Name")
find_button = gr.Button("Find Treasure")
find_output = gr.Textbox(label="Find Status")
find_button.click(find_treasure, inputs=[player_name_find, treasure_index], outputs=find_output)
leaderboard_button = gr.Button("Show Leaderboard")
leaderboard_output = gr.JSON(label="Leaderboard")
leaderboard_button.click(leaderboard, outputs=leaderboard_output)
demo.launch(server_name="0.0.0.0", server_port=7860)