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