Skip to main content

A simple tic tac toe game implementation

Project description

TTT-game

codecov Test and Publish

A simple tic tac toe game implementation

Usage

Installation

Testing builds:

python -m pip install -i https://test.pypi.org/simple/ ttt-game

Production builds:

python -m pip install ttt-game

ttt-game module exports main game class Game and Pl and Tr enums to simplify typing.

from ttt_game import Game, Tr, Pl

Game class

class Game:
  """
  Board indexes preview:

  [[0, 1, 2],

   [3, 4, 5],

   [6, 7, 8]]

  Board array itself:

  [Tr.E, Tr.E, Tr.E, Tr.E, Tr.E, Tr.E, Tr.E, Tr.E, Tr.E]
  """
  _board: List[Tr]

  def get_board(self) -> List[Tr]:
    """
    Returns copy of game board. Use it to display board in UI.
    """

  def check_move(self, pos: int) -> bool:
    """
    Checks if board cell empty
    """

  def check_filled(self) -> bool:
    """
    Checks if game board is filled
    """

  def check_win(self, pos: int) -> bool:
    """
    Checks if this move will make player a winner.
    """

  def insert(self, pos: int, who: Tr) -> None:
    """
    Sets game board's cell to specified value. Better use `move` method when possible
    """

  def move(self, pos: int, who: Pl) -> bool:
    """
    Sets game board cell to specified value when possible. It also returns true if player has won.
    """

  def get_free(self) -> Tuple[int]:
    """
    Returns indexes of free game board cells
    """

To use it you should initialize it like below:

game = Game()

To make move, below code is listed. result variable will contain True if Pl.X player won the game.

result = game.move(1, Tr.X)
if result:
  print("Congrats, X player won!")

You also can get game board array with get_board method. To visualize it you can customize code listed below.

board = game.get_board()

for i in range(9):
  print(board[i], end=" ")
  if i % 3 == 2:
    print("\n", end="")

"""
output: Tr.E Tr.X Tr.E
        Tr.E Tr.E Tr.E
        Tr.E Tr.E Tr.E
"""

Pl and Tr Enums

Pl has two members: X and O meaning X and O players.

class Pl(Enum):
  X = 1
  O = 2

Tr enum has all members of Pl plus E entry meaning empty cell.

class Tr(Enum):
  E = 0
  X = Pl.X
  O = Pl.O

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

ttt_game-0.1.0.tar.gz (3.6 kB view hashes)

Uploaded Source

Built Distribution

ttt_game-0.1.0-py3-none-any.whl (4.2 kB view hashes)

Uploaded Python 3

Supported by

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