Skip to content
Snippets Groups Projects
Commit cb98afa3 authored by Dominik Battefeld's avatar Dominik Battefeld
Browse files

Add logging

parent b2047f75
No related branches found
No related tags found
1 merge request!5Add logging
from __future__ import annotations from __future__ import annotations
import logging
from typing import TYPE_CHECKING, Optional from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING: if TYPE_CHECKING:
...@@ -15,6 +16,8 @@ from overcooked_simulator.game_items import ( ...@@ -15,6 +16,8 @@ from overcooked_simulator.game_items import (
Meal, Meal,
) )
log = logging.getLogger(__name__)
class Counter: class Counter:
"""Simple class for a counter at a specified position (center of counter). Can hold things on top.""" """Simple class for a counter at a specified position (center of counter). Can hold things on top."""
...@@ -118,7 +121,7 @@ class ServingWindow(Counter): ...@@ -118,7 +121,7 @@ class ServingWindow(Counter):
def drop_off(self, item) -> Item | None: def drop_off(self, item) -> Item | None:
reward = 5 reward = 5
print(item) log.debug(f"Drop off {item}")
# TODO define rewards # TODO define rewards
self.game_score.increment_score(reward) self.game_score.increment_score(reward)
return None return None
......
import logging
import os
import sys import sys
import threading
from datetime import datetime
import pygame import pygame
...@@ -6,6 +10,24 @@ from overcooked_simulator import ROOT_DIR ...@@ -6,6 +10,24 @@ from overcooked_simulator import ROOT_DIR
from overcooked_simulator.pygame_gui.pygame_gui import PyGameGUI from overcooked_simulator.pygame_gui.pygame_gui import PyGameGUI
from overcooked_simulator.simulation_runner import Simulator from overcooked_simulator.simulation_runner import Simulator
log = logging.getLogger(__name__)
def setup_logging():
path_logs = ROOT_DIR.parent / "logs"
os.makedirs(path_logs, exist_ok=True)
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s %(levelname)-8s %(name)-50s %(message)s",
handlers=[
logging.FileHandler(
path_logs / f"{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}_debug.log",
encoding="utf-8",
),
logging.StreamHandler(sys.stdout),
],
)
def main(): def main():
simulator = Simulator( simulator = Simulator(
...@@ -38,4 +60,13 @@ def main(): ...@@ -38,4 +60,13 @@ def main():
if __name__ == "__main__": if __name__ == "__main__":
main() setup_logging()
try:
main()
except Exception as e:
log.exception(e)
for thread in threading.enumerate():
if isinstance(thread, Simulator):
thread.stop()
thread.join()
sys.exit(1)
from __future__ import annotations from __future__ import annotations
import logging
import random import random
from pathlib import Path from pathlib import Path
...@@ -20,6 +21,8 @@ from overcooked_simulator.game_items import ItemInfo ...@@ -20,6 +21,8 @@ from overcooked_simulator.game_items import ItemInfo
# if TYPE_CHECKING: # if TYPE_CHECKING:
from overcooked_simulator.player import Player from overcooked_simulator.player import Player
log = logging.getLogger(__name__)
class GameScore: class GameScore:
def __init__(self): def __init__(self):
...@@ -27,7 +30,7 @@ class GameScore: ...@@ -27,7 +30,7 @@ class GameScore:
def increment_score(self, score: int): def increment_score(self, score: int):
self.score += score self.score += score
print(self.score) log.debug(f"Score: {self.score}")
def read_score(self): def read_score(self):
return self.score return self.score
...@@ -356,7 +359,7 @@ class Environment: ...@@ -356,7 +359,7 @@ class Environment:
return distance < (player.radius * self.counter_side_length) return distance < (player.radius * self.counter_side_length)
def add_player(self, player_name: str, pos: npt.NDArray = None): def add_player(self, player_name: str, pos: npt.NDArray = None):
# print(f"Added player {player.name} to the game.") log.debug(f"Add player {player_name} to the game")
player = Player(player_name, self.counter_side_length, pos) player = Player(player_name, self.counter_side_length, pos)
self.players[player.name] = player self.players[player.name] = player
if player.pos is None: if player.pos is None:
...@@ -369,7 +372,7 @@ class Environment: ...@@ -369,7 +372,7 @@ class Environment:
player.move_abs(self.free_positions[free_idx]) player.move_abs(self.free_positions[free_idx])
del self.free_positions[free_idx] del self.free_positions[free_idx]
else: else:
print("No free positions left in kitchens.") log.debug("No free positions left in kitchens")
def detect_collision_world_bounds(self, player: Player): def detect_collision_world_bounds(self, player: Player):
"""Checks for detections of the player and the world bounds. """Checks for detections of the player and the world bounds.
......
import logging
from pathlib import Path from pathlib import Path
from typing import Optional from typing import Optional
...@@ -9,6 +10,8 @@ from overcooked_simulator import ROOT_DIR ...@@ -9,6 +10,8 @@ from overcooked_simulator import ROOT_DIR
from overcooked_simulator.counters import Counter from overcooked_simulator.counters import Counter
from overcooked_simulator.game_items import Item from overcooked_simulator.game_items import Item
log = logging.getLogger(__name__)
class Player: class Player:
"""Class representing a player in the game environment. A player consists of a name, their position and what """Class representing a player in the game environment. A player consists of a name, their position and what
...@@ -108,7 +111,9 @@ class Player: ...@@ -108,7 +111,9 @@ class Player:
returned_by_counter = counter.pick_up(on_hands=False) returned_by_counter = counter.pick_up(on_hands=False)
self.holding.combine(returned_by_counter) self.holding.combine(returned_by_counter)
print("Self:", self.holding, "Counter:", counter.occupied_by) log.debug(
f"Self: {self.holding}, {counter.__class__.__name__}: {counter.occupied_by}"
)
def perform_interact_hold_start(self, counter: Counter): def perform_interact_hold_start(self, counter: Counter):
"""Starts an interaction with the counter. Should be called for a """Starts an interaction with the counter. Should be called for a
......
import colorsys import colorsys
import logging
import math import math
import sys import sys
...@@ -43,6 +44,9 @@ def create_polygon(n, length): ...@@ -43,6 +44,9 @@ def create_polygon(n, length):
return vecs return vecs
log = logging.getLogger(__name__)
class PlayerKeySet: class PlayerKeySet:
"""Set of keyboard keys for controlling a player. """Set of keyboard keys for controlling a player.
First four keys are for movement. Order: Down, Up, Left, Right. First four keys are for movement. Order: Down, Up, Left, Right.
...@@ -406,6 +410,7 @@ class PyGameGUI: ...@@ -406,6 +410,7 @@ class PyGameGUI:
def start_pygame(self): def start_pygame(self):
"""Starts pygame and the gui loop. Each frame the game state is visualized and keyboard inputs are read.""" """Starts pygame and the gui loop. Each frame the game state is visualized and keyboard inputs are read."""
log.debug(f"Starting pygame gui at {self.FPS} fps")
pygame.init() pygame.init()
pygame.font.init() pygame.font.init()
......
import logging
import time import time
from threading import Thread from threading import Thread
from overcooked_simulator import ROOT_DIR from overcooked_simulator import ROOT_DIR
from overcooked_simulator.overcooked_environment import Environment, Action from overcooked_simulator.overcooked_environment import Environment, Action
log = logging.getLogger(__name__)
class Simulator(Thread): class Simulator(Thread):
"""Simulator main class which runs manages the environment and player inputs and game state outputs. """Simulator main class which runs manages the environment and player inputs and game state outputs.
...@@ -103,5 +106,5 @@ class Simulator(Thread): ...@@ -103,5 +106,5 @@ class Simulator(Thread):
def stop(self): def stop(self):
"""Stops the simulator""" """Stops the simulator"""
print("Stopping the simulation.") log.debug("Stopping the simulation")
self.finished = True self.finished = True
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment