board = [[" ", " ", " "], [" ", " ", " "], [" ", " ", " "]] player_marks = ["x", "y"] def print_board(): # Funkce vytiskne pole v momentálním stavu hry print(f""" 1 2 3 1 |{board[0][0]}|{board[0][1]}|{board[0][2]}| 2 |{board[1][0]}|{board[1][1]}|{board[1][2]}| 3 |{board[2][0]}|{board[2][1]}|{board[2][2]}| """) def player(x_or_y): # Input hráče, ve stylu X_Y souřadnice, mělo by mít 3 charaktery a to čísla od 1 do 3 player_move = input("Zvol si řadu a sloupec ") while 3 != len(player_move): # Zda-li má hráč 3 charaktery print("špatný počet znaků") player_move = input("Zvol si řadu a sloupec ") else: try: if board[int(player_move[0]) - 1][int(player_move[2]) - 1] == " ": # Funguje jen pokud je pole prázdné board[int(player_move[0]) - 1][int(player_move[2]) - 1] = x_or_y else: print("Možnost nelze vybrat") player_move = input("Zvol si řadu a sloupec ") except: print("Možnost nelze vybrat") player_move = input("Zvol si řadu a sloupec ") def check_win(): # Kontrola, jestli některý z hráčů nevyhrál kolo for i in range(3): # Kontrola sloupcu if board[i][0] in player_marks and board[i][1] in player_marks and board[i][2] in player_marks: print(f"Vyhrál hráč {board[i][0]}") return True for i in range(3): # Kontrola rad if board[0][i] in player_marks and board[1][i] in player_marks and board[2][i] in player_marks: print(f"Vyhrál hráč {board[0][i]}") return True if board[0][0] in player_marks and board[1][1] in player_marks and board[2][ 2] in player_marks: # Kontrola diagonaly print(f"Vyhrál hráč {board[0][i]}") # z prava do leva return True elif board[0][2] in player_marks and board[1][1] in player_marks and board[2][ 0] in player_marks: # Kontrola diagonaly print(f"Vyhrál hráč {board[0][i]}") # z leva do prava return True return False x_or_y = "x" rounds = 0 def main(rounds): # Funkce, která skládá celý kód dohromady print_board() while rounds < 9: # Pokud bude mít hra víc jak 9 kol, vše bude zaplněné, remíza if rounds % 2 == 0: # Změní se buď na "x" nebo "o" podle momentálního kola x_or_y = "x" else: x_or_y = "o" player(x_or_y) print_board() rounds += 1 if check_win(): break else: print("Je to remíza") main(rounds)