AI-RPG-Adventure / game_logic.py
PierreBrunelle's picture
Create game_logic.py
f4db97a verified
raw
history blame
2.41 kB
from datetime import datetime
from src.database import interactions
class RPGGame:
def __init__(self):
self.current_session_id = None
self.turn_number = 0
def start_game(self, player_name: str, genre: str, scenario: str) -> str:
session_id = f"session_{datetime.now().strftime('%Y%m%d%H%M%S')}_{player_name}"
self.current_session_id = session_id
self.turn_number = 0
# Create initial interaction with all session data
interactions.insert([{
'session_id': session_id,
'player_name': player_name,
'genre': genre,
'initial_scenario': scenario,
'turn_number': 0,
'player_input': "Game starts",
'timestamp': datetime.now()
}])
# Get initial story and options
initial_response = interactions.select(interactions.story_text).where(
(interactions.session_id == session_id) &
(interactions.turn_number == 0)
).collect()['story_text'][0]
return session_id, initial_response
def process_action(self, action: str) -> str:
if not self.current_session_id:
return "No active game session. Please start a new game."
self.turn_number += 1
# Get session info from previous turn
prev_turn = interactions.select(
interactions.player_name,
interactions.genre,
interactions.initial_scenario
).where(
(interactions.session_id == self.current_session_id) &
(interactions.turn_number == 0)
).collect()
# Record player action with session data
interactions.insert([{
'session_id': self.current_session_id,
'player_name': prev_turn['player_name'][0],
'genre': prev_turn['genre'][0],
'initial_scenario': prev_turn['initial_scenario'][0],
'turn_number': self.turn_number,
'player_input': action,
'timestamp': datetime.now()
}])
# Get AI response
response = interactions.select(interactions.story_text).where(
(interactions.session_id == self.current_session_id) &
(interactions.turn_number == self.turn_number)
).collect()['story_text'][0]
return response