import requests from dotenv import load_dotenv from flask import Flask, request from flask_sqlalchemy import SQLAlchemy from gradio import Button, Interface, Textbox # Initialize Flask app app = Flask(__name__) # Load environment variables load_dotenv() # Initialize SQLAlchemy app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///game.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) # Define your SQLAlchemy model class Character(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100)) level = db.Column(db.Integer) class_ = db.Column(db.String(50)) health = db.Column(db.Integer) strength = db.Column(db.Integer) agility = db.Column(db.Integer) # Define your Flask routes @app.route('/') def index(): return "Welcome to the RPG Game!" @app.route('/create_character', methods=['POST']) def create_character(): # Parse input data from request data = request.json name = data['name'] level = data['level'] class_ = data['class'] health = data['health'] strength = data['strength'] agility = data['agility'] # Create a new character instance character = Character(name=name, level=level, class_=class_, health=health, strength=strength, agility=agility) db.session.add(character) db.session.commit() return f"Character {name} created successfully!" # Define Gradio interface components textbox = Textbox(placeholder="Character name") button = Button("Create Character") # Define function to be called when button is clicked def create_character_callback(name): # Send request to Flask route to create character response = requests.post("http://localhost:5000/create_character", json={"name": name, "level": 1, "class": "Warrior", "health": 100, "strength": 10, "agility": 5}) return f"Character {name} created successfully!" # Create Gradio interface iface = Interface(inputs=textbox, outputs=create_character_callback, title="RPG Character Creator", theme="compact", layout="vertical", server_name="localhost", server_port=8080) if __name__ == '__main__': # Run Flask app app.run(port=5000, debug=True)