Spaces:
Paused
Paused
| # Initialize Groq client | |
| client = Groq() | |
| # Function to read the prompt from a file | |
| def read_prompt(game_name): | |
| file_path = os.path.join('prompts', f'{game_name}_prompt.txt') | |
| if not os.path.exists(file_path): | |
| raise FileNotFoundError(f"{file_path} does not exist.") | |
| with open(file_path, 'r') as file: | |
| return file.read().strip() | |
| # Function to create the players table | |
| def create_players_table(): | |
| conn = sqlite3.connect('game.db') | |
| cursor = conn.cursor() | |
| cursor.execute(''' | |
| CREATE TABLE IF NOT EXISTS players ( | |
| username TEXT PRIMARY KEY, | |
| location TEXT | |
| ) | |
| ''') | |
| conn.commit() | |
| conn.close() | |
| # Function to get player's location from the database | |
| def get_player_location(username): | |
| conn = sqlite3.connect('game.db') | |
| cursor = conn.cursor() | |
| cursor.execute('SELECT location FROM players WHERE username = ?', (username,)) | |
| location = cursor.fetchone() | |
| conn.close() | |
| return location[0] if location else None | |
| # Function to update player's location in the database | |
| def update_player_location(username, new_location): | |
| conn = sqlite3.connect('game.db') | |
| cursor = conn.cursor() | |
| cursor.execute('INSERT OR REPLACE INTO players (username, location) VALUES (?, ?)', (username, new_location)) | |
| conn.commit() | |
| conn.close() | |
| # Function to handle sending messages to the Gemini model | |
| def handle_message(message): | |
| return client.chat.completions.create( | |
| model="llama3-8b-8192", | |
| messages=[{"role": "user", "content": message}], | |
| temperature=0.2, | |
| max_tokens=250 | |
| ).choices[0].message.content | |
| # Game logic | |
| def process_command(username, game_name, command): | |
| create_players_table() # Ensure the players table exists | |
| location = get_player_location(username) | |
| if not location: | |
| return "Player not found." | |
| prompt = read_prompt(game_name) | |
| full_command = f"{prompt} {command}" | |
| response = handle_message(full_command) | |
| # Update player location if needed | |
| new_location = command.strip().lower() # Assuming command contains the new location | |
| update_player_location(username, new_location) | |
| return response | |
| # Example usage | |
| username = "player1" | |
| game_name = "game1" | |
| command = "go north" | |
| response = process_command(username, game_name, command) | |
| print(response) | |
| # Function to check if a user exists in the database | |
| def user_exists(username): | |
| conn = sqlite3.connect('game.db') | |
| cursor = conn.cursor() | |
| cursor.execute('SELECT * FROM players WHERE username = ?', (username,)) | |
| user = cursor.fetchone() | |
| conn.close() | |
| return user is not None | |
| # Function to log in the user | |
| def login(username): | |
| if user_exists(username): | |
| print(f"Welcome back, {username}!") | |
| # Set session variable or authentication token | |
| else: | |
| print("User does not exist. Please create a new account.") | |
| # Function to create a new account | |
| def create_account(username, password): | |
| if not user_exists(username): | |
| conn = sqlite3.connect('game.db') | |
| cursor = conn.cursor() | |
| cursor.execute('INSERT INTO players (username, password) VALUES (?, ?)', (username, password)) | |
| conn.commit() | |
| conn.close() | |
| print(f"Account created successfully for {username}!") | |
| # Set session variable or authentication token | |
| else: | |
| print("Username already exists. Please choose another username.") | |
| # Example usage | |
| username = input("Enter your username: ") | |
| if user_exists(username): | |
| login(username) | |
| else: | |
| create_account(username, input("Enter your password: ")) | |