Spaces:
Running
Running
from game.dungeon import Dungeon | |
from game.player import Player | |
from game.npc import NPC | |
from game.combat import combat, adjust_difficulty | |
from game.items import Item, use_item | |
from assets.ascii_art import display_dungeon | |
from helper import ( | |
get_game_state, | |
run_action, | |
start_game, | |
is_safe, | |
) | |
import pdb | |
import logging | |
logging.basicConfig(level=logging.INFO) | |
logger = logging.getLogger(__name__) | |
def main_loop(message, history, game_state): | |
"""Main game loop that processes commands and returns responses""" | |
try: | |
print(f"\nProcessing command: {message}") # Debug print | |
# Get AI response | |
output = run_action(message, history, game_state) | |
logger.info(f"Generated response: {output}") | |
print(f"\nGenerated output: {output}") # Debug print | |
# Safety check | |
safe = is_safe(output) | |
print(f"\nSafety Check Result: {'SAFE' if safe else 'UNSAFE'}") | |
logger.info(f"Safety check result: {'SAFE' if safe else 'UNSAFE'}") | |
if not safe: | |
logging.warning("Unsafe output detected") | |
logger.warning("Unsafe content detected - blocking response") | |
print("Unsafe content detected - Response blocked") | |
return "This response was blocked for safety reasons.", history | |
# Update history with safe response | |
if not history: | |
history = [] | |
history.append((message, output)) | |
return output, history | |
except Exception as e: | |
logger.error(f"Error in main_loop: {str(e)}") | |
return "Error processing command", history | |
def main(): | |
"""Initialize game and start interface""" | |
try: | |
logger.info("Starting main function") | |
print("\nInitializing game...") | |
game_state = get_game_state( | |
inventory={ | |
"cloth pants": 1, | |
"cloth shirt": 1, | |
"goggles": 1, | |
"leather bound journal": 1, | |
"gold": 5, | |
} | |
) | |
logger.debug(f"Initialized game state: {game_state}") | |
# Create and add game objects | |
dungeon = Dungeon(10, 10) | |
player = Player("Hero") | |
# Update game state with objects | |
game_state["dungeon"] = dungeon | |
game_state["player"] = player | |
# logger.info(f"Game state in main(): {game_state}") | |
# Start game interface | |
print("Starting game interface...") | |
start_game(main_loop, game_state, True) | |
except Exception as e: | |
logger.error(f"Error in main: {str(e)}") | |
raise | |
if __name__ == "__main__": | |
main() | |