Ti c Ta c Toe project_ Я застрял - PullRequest
       15

Ti c Ta c Toe project_ Я застрял

0 голосов
/ 05 августа 2020

Я сейчас занимаюсь этим проектом 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()

1 Ответ

0 голосов
/ 20 августа 2020

Неверный отступ.

Вот обновленный код:

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" ,"9"]:
            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 posicion ya esta ocupada, elegir otra: ")

    
    board[posicion] = jugador
    
    display_board()
...