From cb8e7cc9ec4e15859fa59460af3115621f667f6d Mon Sep 17 00:00:00 2001 From: Lukas Hoffleit <lukas.hoffleit03@gmail.com> Date: Sat, 12 Apr 2025 10:28:49 +0200 Subject: [PATCH] Error-Handling und Player-Conversion --- tictactoe.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/tictactoe.py b/tictactoe.py index ea276da..60d82b3 100644 --- a/tictactoe.py +++ b/tictactoe.py @@ -1,9 +1,12 @@ from enum import Enum class Player(Enum): + undefined = 0 one = 1 two = 2 - undefined = 3 + +class TicTacToeError(Exception): + """TicTacToe Error""" class TicTacToe(): def __init__(self) -> None: @@ -11,17 +14,22 @@ class TicTacToe(): for i in range(3): self.grid.append([Player.undefined, Player.undefined, Player.undefined]) + def _get_player_from_int(self, player:Player|int) -> Player: + if isinstance(player, int): + try: + return Player(player) + except ValueError: + raise TicTacToeError("The player number is invalid. Only '1' and '2' are accepted") + return player + def add(self, row:int, col:int, player:Player|int) -> bool: """ Change the value of a undefined field. The player can be passed as Player Object or plain Int. Returns True, if executed correctly. - Returns False, if the field is already occupied + Returns False, if the field is already occupied or the player number is invalid. """ - if isinstance(player, int): - try: player = Player(player) - except ValueError: return False # invalid player number - + player = self._get_player_from_int(player) if self.check_field(row, col): self.grid[row][col] = player return True @@ -32,14 +40,14 @@ class TicTacToe(): if self.grid[row][col] != Player.undefined: return False return True - + def print_grid(self) -> None: symbols = { Player.one: "X", Player.two: "O", Player.undefined: " " } - + print("┌───┬───┬───┐") for i, row in enumerate(self.grid): print("│", end="") @@ -49,6 +57,11 @@ class TicTacToe(): print("\n├───┼───┼───┤") print("\n└───┴───┴───┘\n") + def get_best_move(self, player:Player|int) -> tuple[int, int]: + return (0, 0) + + + if __name__ == "__main__": ttt = TicTacToe() -- GitLab