Skip to main content

Engine adapter for wiring automation strategies to the Hundred and Ten game engine

Project description

hundredandten-automation-engineadapter

Bridge between the Hundred and Ten game engine and automation strategies.

This is the only package that depends on both hundredandten-engine and hundredandten-state. It translates engine Game objects into player-agnostic GameState observations that strategies can act on, and converts strategy-layer AvailableAction results back into engine Action objects.

Usage

The most common usage is action_for, which handles the full loop: build state, call a strategy, validate the result, return an engine action.

from hundredandten.automation.engineadapter import EngineAdapter
from hundredandten.automation import naive
from hundredandten.engine import Game, Player

game = Game(players=[Player('player_1'), Player('player_2')])
engine_action = EngineAdapter.action_for(game, 'player_2', naive.action_for)
game.act(engine_action)

Exports

EngineAdapter

All methods are static.

Method Signature Description
action_for (game, identifier, decision_fn) -> Action Full-loop helper. Builds a GameState for the identified player, calls decision_fn(state), validates that the result is a legal action, and returns the corresponding engine Action. Raises UnavailableActionError if the decision function returns an illegal action.
state_from_engine (game, identifier) -> GameState Builds a player-agnostic GameState observation for the identified player. All seats are rotated so the requesting player is seat 0. Cards the player cannot see are marked Unknown.
available_action_for_player (action, identifier) -> Action Converts a player-agnostic AvailableAction into a player-aware engine Action by attaching the player identifier.
available_action_from_engine (action) -> AvailableAction Converts a player-aware engine Action into a player-agnostic AvailableAction.

UnavailableActionError

Raised by action_for when the decision function returns an action not present in state.available_actions.

Building state without a strategy

from hundredandten.automation.engineadapter import EngineAdapter

state = EngineAdapter.state_from_engine(game, 'player_1')
print(state.available_actions)

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

File details

Details for the file hundredandten_automation_engineadapter-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: hundredandten_automation_engineadapter-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for hundredandten_automation_engineadapter-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 cebf369bdea63e3cf4c049fcf9b4ee0f824d29a2a830e4a27d5a2fddefa14953
MD5 56c46f11f2d2d848f1804586ee96a317
BLAKE2b-256 4d71f9d36be62cfc2ffa83cea9684fc2db3c6ba9be2f00ab89d022f8be4b0957

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