Migrate babysnake to retro_gamer's observation_function
BabySnake's tabular Q-learning exercise needs a small discrete state, not the flattened board encoding retro_gamer normally produces. Define get_state(game) in babysnake_env.py, returning a plain (agent_x, agent_y, food_x, food_y) tuple, and point babysnake's observation_function at it instead of declaring a character_set. Disable the on-screen state overlay so it doesn't clutter the terminal watch view.
This commit is contained in:
13
babysnake_env.py
Normal file
13
babysnake_env.py
Normal file
@@ -0,0 +1,13 @@
|
||||
"""BabySnake's observation_function: maps a game to its tabular Q-learning state.
|
||||
|
||||
Referenced from babysnake/pyproject.toml's [tool.retro-gamer] section, and
|
||||
used directly by train_babysnake.py via GameEnvironment.
|
||||
"""
|
||||
|
||||
ACTIONS = ["KEY_RIGHT", "KEY_DOWN", "KEY_LEFT", "KEY_UP"]
|
||||
|
||||
|
||||
def get_state(game):
|
||||
"""Return BabySnake's state as a hashable (agent_x, agent_y, food_x, food_y) tuple."""
|
||||
s = game.state
|
||||
return (int(s['agent_x']), int(s['agent_y']), int(s['food_x']), int(s['food_y']))
|
||||
Reference in New Issue
Block a user