connect4_env-v2-1-0 / models.py
burtenshaw's picture
burtenshaw HF Staff
Upload folder using huggingface_hub
b87781c verified
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
"""
Data models for Connect4 Environment.
This module defines the Action, Observation, and State types for Connect4 games
via the OpenEnv interface.
"""
from __future__ import annotations
from typing import List, Dict, Any
from pydantic import Field
from openenv.core.env_server import Action, Observation, State
class Connect4Action(Action):
"""
Action for Connect4 environment.
Attributes:
column: The column index (0 to 6) where the piece will be placed.
"""
column: int
class Connect4Observation(Observation):
"""
Observation for Connect4 environment.
Attributes:
board: The current board as a 2D list (6 rows x 7 columns).
1 = current player, -1 = opponent, 0 = empty.
legal_actions: List of column indices that are valid moves.
done: Whether the game is over.
reward: Reward for the last action.
"""
board: List[List[int]] = Field(default_factory=list)
legal_actions: List[int] = Field(default_factory=list)
class Connect4State(State):
"""
State for Connect4 environment.
Attributes:
episode_id: Unique ID for the current game.
board: Current board state (rows x columns), 0 = empty, 1 = player, -1 = opponent.
next_player: Whose turn it is (1 or -1).
step_count: Number of steps taken in the game.
"""
board: List[List[int]] = Field(default_factory=lambda: [[0]*7 for _ in range(6)])
next_player: int = 1