From aea5d3c3f189ccf0868f85bfec8c6011bb8ee717 Mon Sep 17 00:00:00 2001 From: Lukas Hoffleit <lukas.hoffleit03@gmail.com> Date: Fri, 11 Apr 2025 09:53:19 +0200 Subject: [PATCH] Player darf auch int sein --- TicTacToe.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 TicTacToe.py diff --git a/TicTacToe.py b/TicTacToe.py new file mode 100644 index 0000000..89254e2 --- /dev/null +++ b/TicTacToe.py @@ -0,0 +1,58 @@ +from enum import Enum + +class Player(Enum): + one = 1 + two = 2 + undefined = 3 + +class TicTacToe(): + def __init__(self) -> None: + self.grid = [] + for i in range(3): + self.grid.append([Player.undefined, Player.undefined, Player.undefined]) + + def add(self, row, col, player) -> 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 + or the player number is invalid. + """ + if isinstance(player, int): + try: player = Player(player) + except ValueError: return False # invalid player number + + if self.check_field(row, col): + self.grid[row][col] = player + return True + return False + + def check_field(self, row, col) -> bool: + """Checks, if a field is occupied""" + 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="") + for field in row: + print(f" {symbols[field]} │", end="") + if i < len(self.grid) - 1: + print("\n├───┼───┼───┤") + print("\n└───┴───┴───┘\n") + + +if __name__ == "__main__": + ttt = TicTacToe() + ttt.add(1, 1, 1) + ttt.print_grid() + ttt.add(1, 2, Player.two) + ttt.print_grid() -- GitLab