haive.games.dominoes.models =========================== .. py:module:: haive.games.dominoes.models .. autoapi-nested-parse:: 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 .. rubric:: 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 ------- .. autoapisummary:: haive.games.dominoes.models.DominoMove haive.games.dominoes.models.DominoTile haive.games.dominoes.models.DominoesAnalysis haive.games.dominoes.models.DominoesPlayerDecision Module Contents --------------- .. py:class:: DominoMove(/, **data) Bases: :py:obj:`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. .. py:class:: DominoTile(/, **data) Bases: :py:obj:`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. .. py:method:: is_double() Check if this is a double (same value on both sides). .. py:method:: reversed() Get a new tile with left and right values swapped. .. py:method:: sum() Get the sum of both values. .. py:class:: DominoesAnalysis(/, **data) Bases: :py:obj:`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. .. py:class:: DominoesPlayerDecision(/, **data) Bases: :py:obj:`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.