Я сейчас занимаюсь этим проектом ti c ta c toe, но я застрял, потому что он не работает, поэтому мне нужна помощь в определении, какие ошибки я сделал. Кроме того, мне нужно разрешить пользователю выбирать одну букву («X» o «O»), и «X» идет первой. Я не знаю, как это кодировать. Я надеюсь, что кто-нибудь мне поможет, пожалуйста.
Это код, который я разработал:
# Variables globales
# Tablero vacio
board = ["_", "_", "_",
"_", "_", "_",
"_", "_", "_",]
# Si juego continua
juego_continua = True # El juego continua desde el inicio.
# Quien gana o empata
ganador = None
# Turno asignado
actual_jugador = "X"
# Funcion que defin juego tic tac toe.
def jugar_juego (): #
display_board() # Se va a representar el tablero inicial en pantalla.
# Mientras el juego continua.
while juego_continua: # Booleano
# Definir un solo turno para un jugador arbitrario
handle_turn (actual_jugador)
# Verificar si se acabo el juego
verificar_si_termino_juego()
# Cambiar al otro jugador
cambio_jugador()
# El juego ha terminado
if ganador == "Jugador - X" or ganador == "Jugador - O":
print(ganador + "Ganaste.")
elif ganador == None:
print ("Hay empate.")
def display_board():
print ("\n")
print (board[0] + " | " + board[1] + " | " + board[2] + " 1 | 2 | 3")
print (board[3] + " | " + board[4] + " | " + board[5] + " 4 | 5 | 6")
print (board[6] + " | " + board[7] + " | " + board[8] + " 7 | 8 | 9")
print ("\n")
# Define un turno para el jugador arbitrariamente.
def handle_turn(jugador):
print(jugador + "turno.")
posicion = input("Elegir una posicion desde 1 hasta 9 para comenzar: ")
valid = False
while not valid:
while posicion not in ["1", "2", "3", "4", "5", "6", "7", "8" ]:
posicion = input("Por favor elegir una posicion desde 1 hasta 9 para jugar: ")
posicion = int(posicion) - 1
if board (posicion) == "_":
valid = True
else:
print ("Esta posición ya esta ocupada, elegir otra: ")
board[posicion] = jugador
display_board()
def verificar_si_termino_juego():
verificar_si_gano()
verificar_si_empate()
def verificar_si_gano():
# Establecer variable global
global ganador
# verificar filas
ganador_filas = check_filas()
# verificar columnas
ganador_columnas = check_columnas()
# verificar diagonales
ganador_diagonales = check_diagonales()
if ganador_filas:
ganador = ganador_filas
elif ganador_columnas:
ganador = ganador_columnas
elif ganador_diagonales:
ganador = ganador_diagonales
else:
#No hay ganador
ganador = None
def check_filas():
# Establecer variable global
global juego_continua
# Revisa si las filas son iguales, exceptuando "_"
fila_1 = board[0] == board[1] == board[2] != "_"
fila_2 = board[3] == board[4] == board[5] != "_"
fila_3 = board[6] == board[7] == board[8] != "_"
# Si alguna fila es igual, indica que hay un ganador
if fila_1 or fila_2 or fila_3:
juego_continua = False
# Devuelve el ganador (X o O)
if fila_1:
return board[0]
elif fila_2:
return board[3]
elif fila_3:
return board[6]
# Retorna ninguna si no hay ganador
else:
return None
def check_columnas():
# Establecer variable global
global juego_continua
# Revisa si las columnas son iguales, exceptuando "_"
columnas_1 = board[0] == board[3] == board[6] != "_"
columnas_2 = board[1] == board[4] == board[7] != "_"
columnas_3 = board[2] == board[5] == board[8] != "_"
# Si alguna columna es igual, indica que hay un ganador
if columnas_1 or columnas_2 or columnas_3:
juego_continua = False
# Devuelve el ganador (X o O)
if columnas_1:
return board[0]
elif columnas_2:
return board[1]
elif columnas_3:
return board[2]
else:
return None
def check_diagonales():
# Establecer variable global
global juego_continua
# Revisa si las diagonales son iguales, exceptuando "_"
diagonal_1 = board[0] == board[4] == board[8] != "_"
diagonal_2 = board[2] == board[4] == board[6] != "_"
# Si alguna diagonal es igual, indica que hay un ganador
if diagonal_1 or diagonal_2:
juego_continua = False
# Devuelve el ganador (X o O)
if diagonal_1:
return board[0]
elif diagonal_2:
return board[2]
else:
return None
def verificar_si_empate():
global juego_continua
if "_" not in board:
juego_continua = False
return True
else:
return False
def cambio_jugador():
global actual_jugador
# Si actual jugador fue X, luego cambia a O
if actual_jugador == "X":
actual_jugador = "O"
# Si actual jugador fue O, luego cambia a X
elif actual_jugador == "O":
actual_jugador = "X"
jugar_juego()