From ff2cde4f32de791c737d7b0a5598a5cdd42a1c8c Mon Sep 17 00:00:00 2001
From: Hong-Phuc Bui <hong-phuc.bui@htwsaar.de>
Date: Tue, 13 May 2025 16:08:17 +0200
Subject: [PATCH] ue 4

---
 ub-3/tictactoe.test.py |    1 
 /dev/null              |   80 --------------------
 ub-3/tictaktoe.py      |  120 ++++++++++++++++++++++++++++++
 3 files changed, 121 insertions(+), 80 deletions(-)

diff --git a/ub-3/tictactoe.test.py b/ub-3/tictactoe.test.py
new file mode 100644
index 0000000..9c37cf9
--- /dev/null
+++ b/ub-3/tictactoe.test.py
@@ -0,0 +1 @@
+import 
diff --git a/ub-3/tictaktoe.py b/ub-3/tictaktoe.py
new file mode 100644
index 0000000..c809e3b
--- /dev/null
+++ b/ub-3/tictaktoe.py
@@ -0,0 +1,120 @@
+EMPTY = 0
+PL1 = 1
+PL2 = 2
+
+tafel = [
+   [EMPTY, EMPTY, EMPTY],
+   [EMPTY, EMPTY, EMPTY],
+   [EMPTY, EMPTY, EMPTY],
+]
+
+COLUMNS = 3
+ROWS = 3
+
+def print_tafel(board):
+    symbols = ("*", "X", "O")
+    for zeile in board:
+        for c in zeile:
+            print(f"{symbols[c]} ",end="")
+        print()
+
+def input_ok(tafel, r, c):
+    is_in_tafel = (ROWS > r >=0) and (COLUMNS > c >= 0)
+    if is_in_tafel:
+        beleg = tafel[r][c]    
+        return beleg == EMPTY
+    else:
+        return False
+   
+   
+def user_input(user,tafel):
+    print(f"Spieler {user} ist dran")
+    print("Geben Sie die Zeile und Spalten ein")
+    user_input_ok = False
+    while not user_input_ok:
+        r = int(input("Zeile:  ")) - 1
+        c = int(input("Spalte: ")) - 1
+        user_input_ok = input_ok(tafel, r, c)
+        if user_input_ok:
+            tafel[r][c] = user
+        else:
+            print("Eingabe nicht in Ordnung")
+
+
+def pruefe_comination(p, board):
+    r = p[0]
+    c = p[1]
+    combination = p[2]
+    player = board[r][c]
+    if combination == "hvd":
+        h = (board[r][0] == player) and (board[r][1] == player) and (board[r][2] == player)
+        v = (board[0][c] == player) and (board[1][c] == player) and (board[2][c] == player)
+        d = (board[0][0] == player) and (board[1][1] == player) and (board[2][2] == player)
+        return h or v or d
+    elif combination == "v":
+        return (board[0][c] == player) and (board[1][c] == player) and (board[2][c] == player)        
+    elif combination == "vd":
+        v = (board[0][c] == player) and (board[1][c] == player) and (board[2][c] == player)
+        d = (board[0][0] == player) and (board[1][1] == player) and (board[2][2] == player)
+        return v or d
+    elif combination == "h":
+        return (board[r][0] == player) and (board[r][1] == player) and (board[r][2] == player)
+    else:
+        raise Error(f"combination {combination} ungültig" )
+
+
+def has_spieler_gewonnen(player, board):
+    position = [
+        (0,0, "hvd"), (0,1, "v"), (0,2,"vd"), (1,0, "h"), (2,0,"h")
+    ]
+    for p in position:
+        r = p[0]
+        c = p[1]
+        if board[r][c] == player:
+            return pruefe_comination(p, board)
+        else:
+            return False
+    
+    
+    
+def spiel_bewerten(tafel):
+    """
+    return: Ein Tupel 
+    1. Element: True = Spiel beendet
+                False = Spiel geht weiter
+    2. Element: 0 = unentschieden
+                1 = 1. Spieler gewonnen
+                2 = 2. Spieler gewonnen
+    """    
+    if has_spieler_gewonnen(PL1, tafel):
+        return (True, PL1)
+    elif has_spieler_gewonnen(PL2, tafel):
+        return (True, PL2)
+    
+    empty_cells = ROWS * COLUMNS
+    for row in tafel:
+        for colum in row:
+            if colum != EMPTY:
+                empty_cells = empty_cells - 1
+    return (empty_cells == 0, 0)
+                
+                
+print_tafel(tafel)
+aktuelle_spieler = 1
+
+(spiel_ende, gewinner) = (False, 0)
+
+while not spiel_ende :
+    (spiel_ende, gewinner) = spiel_bewerten(tafel)
+    user_input(aktuelle_spieler, tafel)
+    print_tafel(tafel)
+    if aktuelle_spieler == 1:
+        aktuelle_spieler = 2
+    else:
+        aktuelle_spieler = 1
+
+print("Spiel beendet!")    
+    
+
+
+
diff --git a/ub-3/tik-tak-toe.py b/ub-3/tik-tak-toe.py
deleted file mode 100644
index ec019f5..0000000
--- a/ub-3/tik-tak-toe.py
+++ /dev/null
@@ -1,80 +0,0 @@
-EMPTY = 0
-PL1 = 1
-PL2 = 2
-
-tafel = [
-   [EMPTY, EMPTY, EMPTY],
-   [EMPTY, EMPTY, EMPTY],
-   [EMPTY, EMPTY, EMPTY],
-]
-
-COLUMNS = 3
-ROWS = 3
-
-def print_tafel(board):
-    symbols = ("*", "X", "O")
-    for zeile in board:
-        for c in zeile:
-            print(f"{symbols[c]} ",end="")
-        print()
-
-def input_ok(tafel, r, c):
-    is_in_tafel = (ROWS > r >=0) and (COLUMNS > c >= 0)
-    if is_in_tafel:
-        beleg = tafel[r][c]    
-        return beleg == EMPTY
-    else:
-        return False
-   
-   
-def user_input(user,tafel):
-    print(f"Spieler {user} ist dran")
-    print("Geben Sie die Zeile und Spalten ein")
-    user_input_ok = False
-    while not user_input_ok:
-        r = int(input("Zeile:  ")) - 1
-        c = int(input("Spalte: ")) - 1
-        user_input_ok = input_ok(tafel, r, c)
-        if user_input_ok:
-            tafel[r][c] = user
-        else:
-            print("Eingabe nicht in Ordnung")
-    
-    
-def spiel_bewerten(tafel):
-    """
-    return: Ein Tupel 
-    1. Element: True = Spiel beendet
-                False = Spiel geht weiter
-    2. Element: 0 = unentschieden
-                1 = 1. Spieler gewonnen
-                2 = 2. Spieler gewonnen
-    """
-    
-    empty_cells = ROWS * COLUMNS
-    for row in tafel:
-        for colum in row:
-            if colum != EMPTY:
-                empty_cells = empty_cells - 1
-    return (empty_cells == 0, 0)
-                
-                
-print_tafel(tafel)
-aktuelle_spieler = 1
-
-(spiel_ende, gewinner) = (False, 0)
-
-while not spiel_ende :
-    (spiel_ende, gewinner) = spiel_bewerten(tafel)
-    user_input(aktuelle_spieler, tafel)
-    print_tafel(tafel)
-    if aktuelle_spieler == 1:
-        aktuelle_spieler = 2
-    else:
-        aktuelle_spieler = 1
-
-print("Spiel beendet!")    
-    
-
-
-

--
Gitblit v1.10.0-SNAPSHOT