Fixed badges

This commit is contained in:
Dmitriy Shishkov 2021-08-10 15:17:21 +03:00
parent 461a73852b
commit 89112a9dc0
No known key found for this signature in database
GPG Key ID: 14358F96FCDD8060
3 changed files with 125 additions and 6 deletions

121
README.md
View File

@ -7,12 +7,127 @@ A simple tic tac toe game implementation
## Usage
tic_tac_toe module exports main game class `Game` and `Pl` and `Tr` enums to simplify typing.
### Installation
Testing builds:
```bash
python -m pip install -i https://test.pypi.org/simple/ ttt-game
```
Production builds:
```bash
python -m pip install ttt-game
```
ttt-game module exports main game class `Game` and `Pl` and `Tr` enums to simplify typing.
```python
from ttt_game import Game, Tr, Pl
```
### `Game` class
TODO: Add Game class description
```python
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:
```python
game = Game()
```
To make move, below code is listed. `result` variable will contain `True` if `Pl.X` player won the game.
```python
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.
```python
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. `Tr` enum has all members of `Pl` plus `E` entry meaning empty cell.
`Pl` has two members: `X` and `O` meaning X and O players.
```python
class Pl(Enum):
X = 1
O = 2
```
`Tr` enum has all members of `Pl` plus `E` entry meaning empty cell.
```python
class Tr(Enum):
E = 0
X = Pl.X
O = Pl.O
```

View File

@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
setuptools.setup(
name="ttt_game",
version="0.0.1",
version="0.1.0",
author="dm1sh",
author_email="me@dmitriy.icu",
description="A simple tic tac toe game implementation",

View File

@ -3,7 +3,7 @@ from enum import Enum
class Pl(Enum):
X = 3
X = 1
O = 2
@ -22,6 +22,10 @@ class Game:
[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]
@ -86,7 +90,7 @@ class Game:
def get_free(self) -> Tuple[int]:
"""
Returns
Returns indexes of free game board cells
"""
return tuple(filter(lambda i: self._board[i] == Tr.E, range(9)))