Skip to main content

Fork of the AICA gamelib with Tic-Tac-Toe support only

Project description

AICA Game Library Fork

This package is a fork of the AICA Game Library for the Game AI Competition Platform of the AI Club Aachen. It contains the shared base interfaces and the Tic-Tac-Toe implementation only. It is designed to be easy to use. Simply instantiate the Agent class and begin!

Installation

You can install the package via pip:

pip install aica-gamelib-fork

Creating an Agent

To create a game AI agent, you need to create a class that inherits from gamelib.GAME.agent.Agent. GAME is replaced by the relevant game. In this fork, the available game is tictactoe. You must implement two methods:

  1. initialize(self, agent_init_data): Setup your agent (e.g., store your player ID).
  2. get_move(self, game_state): Analyze the game state and return a Move object.

Game Concepts

GameState

The GameState object passed to get_move is defined in gamelib.GAME.gamestate.

Move

The Move object returned by get_move is defined in gamelib.GAME.move.

Example in TicTacToe

Here is a simple example of a tictactoe agent that selects the first available cell on the board.

from typing import override

from gamelib.tictactoe import Agent, GameState, Move

class MyTicTacToeAgent(Agent):
    @override
    def initialize(self, agent_init_data: dict) -> None:
        """
        Called once at the start of the game.
        agent_init_data contains 'player_id' (0 or 1).
        """
        self.player_id = agent_init_data["player_id"]

    @override
    def get_move(self, game_state: GameState) -> Move:
        """
        Called every turn. Returns the move you want to make.
        """
        # The board is a flat list of 9 integers
        # -1: Empty, 0: Player 0, 1: Player 1
        for position in range(9):
            if game_state.board[position] == -1:
                return Move(player=self.player_id, position=position)
        
        raise ValueError("No valid moves available.")

if __name__ == "__main__":
    # Instantiate and start the agent (run by the platform)
    agent = MyTicTacToeAgent()
    agent.start()

You can import this example agent right away with:

from gamelib.tictactoe.examples import TicTacToeAgent

Running Your Agent

The agent uses standard input/output (stdin/stdout) to communicate with the game engine, when running on the platform. This is handled automatically as long as your agent is a subclass of gamelib.GAME.agent.Agentand properly started in the __main__ block.

To test locally, you can use the DevRunner provided in the gamelib.GAME.dev_runner module:

from gamelib.tictactoe import DevRunner

runner = DevRunner()
agent1 = TicTacToeAgent()
agent2 = TicTacToeAgent()
runner.add_agent(agent1)
runner.add_agent(agent2)
runner.start()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aica_gamelib_fork-0.1.0.tar.gz (68.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aica_gamelib_fork-0.1.0-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file aica_gamelib_fork-0.1.0.tar.gz.

File metadata

  • Download URL: aica_gamelib_fork-0.1.0.tar.gz
  • Upload date:
  • Size: 68.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aica_gamelib_fork-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2853043c898aaed37d566d874aa9ad788dae122462c86e45ae1ad4daa35f1262
MD5 9de1afab71d27c1db8d0d2c65c2e4c73
BLAKE2b-256 9f16d49fd7d678ede1bd633681b5fd6efc4e185c163e8e62a42b2c7a7850117a

See more details on using hashes here.

File details

Details for the file aica_gamelib_fork-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: aica_gamelib_fork-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 20.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aica_gamelib_fork-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b0eb954dcba9b5cd9e5166f35004c95ecbb26f444a1bf8817729022adcfa577
MD5 84fb64bed3f4bd0434f655d4dad8b42c
BLAKE2b-256 6b3452330a85108fcdb2976b89f898b6e78ca87646bd880cc677e8a4294418b9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page