games.dominoes.models¶

Comprehensive data models for the Dominoes tile game.

This module defines the complete set of data structures for traditional Dominoes gameplay, providing models for tile representation, game moves, strategic analysis, and game state management. The implementation supports standard double-six dominoes with traditional matching rules.

Dominoes is a classic tile-matching game involving: - 28 tiles in a double-six set (0-0 through 6-6) - Line-building with matching endpoints - Strategic tile placement and blocking - Point-based scoring systems

Key Models:

DominoTile: Individual domino tile with two values DominoMove: Player’s tile placement action DominoLinePosition: Position tracking on the domino line DominoAnalysis: Strategic evaluation for AI decision-making

Examples

Working with tiles:

from haive.games.dominoes.models import DominoTile

# Create standard tiles
double_six = DominoTile(left=6, right=6)
mixed_tile = DominoTile(left=3, right=5)

# Check tile properties
assert double_six.is_double() == True
assert mixed_tile.sum() == 8
print(double_six)  # "[6|6]"

Making moves:

from haive.games.dominoes.models import DominoMove

move = DominoMove(
    tile=DominoTile(left=4, right=2),
    position="left",
    player="player1"
)

Strategic analysis:

analysis = DominoAnalysis(
    available_moves=5,
    blocking_potential=3,
    point_value=12,
    strategy="Control high-value tiles"
)

The models provide comprehensive tile management and strategic gameplay support for AI-driven dominoes implementation.

Classes¶

DominoMove

A move in dominoes.

DominoTile

A domino tile with two values.

DominoesAnalysis

Analysis of a dominoes position.

DominoesPlayerDecision

A player's decision in dominoes.

Module Contents¶

class games.dominoes.models.DominoMove(/, **data)¶

Bases: pydantic.BaseModel

A move in dominoes.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Parameters:

data (Any)

class games.dominoes.models.DominoTile(/, **data)¶

Bases: pydantic.BaseModel

A domino tile with two values.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Parameters:

data (Any)

is_double()¶

Check if this is a double (same value on both sides).

Return type:

bool

reversed()¶

Get a new tile with left and right values swapped.

Return type:

DominoTile

sum()¶

Get the sum of both values.

Return type:

int

class games.dominoes.models.DominoesAnalysis(/, **data)¶

Bases: pydantic.BaseModel

Analysis of a dominoes position.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Parameters:

data (Any)

class games.dominoes.models.DominoesPlayerDecision(/, **data)¶

Bases: pydantic.BaseModel

A player’s decision in dominoes.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Parameters:

data (Any)