''' Juego TA-TE-TI Profesora = ANA LAURA ALMADA Alumnos de UNL Virtual - Grupo Venus Federico Alejandro Mazzei: Estructura inicial del programa (tablero inicial del juego, ingreso de posiciones validas y contador de jugadas) datos_jugadores() Solicito nombre de los jugadores y lo guardo en un archivo .TXT (jugadores.txt) Agrego la función jugar_tateti(opcion) que según la opcion elegida juega vs humano o PC. Fernando Zaldívar Posse: Validación de ganador de la partida. Empate si se completan las 9 posiciones sin un ganador. Matías Mauricio Machado Pérez: Menú principal con opciones antes de que muestre el tablero de juego. Sara Somaré: Incorporación del segundo jugador y turnos de juego integrándolo al código de Ingrid. Ingrid Celia Spessotti: Representación del tablero con una lista, actualización del tablero y control de casillas ocupadas ''' import random def tatetivsPC(tablero): casillas = [] for casilla in range(9): if not (tablero[casilla] == "X" or tablero[casilla] == "O"): casillas.append(tablero[casilla]) print(casillas) return random.choice(casillas) def comprueba_ganador(): """ Comprueba si hay un ganador """ return (tablero[0] == tablero[1] == tablero[2] or tablero[3] == tablero[4] == tablero[5] or tablero[6] == tablero[7] == tablero[8] or tablero[0] == tablero[3] == tablero[6] or tablero[1] == tablero[4] == tablero[7] or tablero[2] == tablero[5] == tablero[8] or tablero[0] == tablero[4] == tablero[8] or tablero[2] == tablero[4] == tablero[6]) def imprime_tablero(): print(f"\n {tablero[0]} | {tablero[1]} | {tablero[2]} \n---+---+---\n {tablero[3]} | {tablero[4]} | {tablero[5]} \n---+---+---\n {tablero[6]} | {tablero[7]} | {tablero[8]} ") def datos_jugadores(modalidad): """Esta función permite cargar los datos de los jugadores""" #Grabo los datos de los jugadores en un archivo TXT archivo = open('./juego_tateti/jugadores.txt', 'w') #El jugadorX puede jugar solo o contra otro humano por eso se define afuera nombre_jugadorX = input('\nIngrese el nombre del jugador X: ') archivo.write('JugadorX = ' + nombre_jugadorX + '\n') if modalidad == str(1): nombre_jugadorO = input('\nIngrese el nombre del jugador O: ') print("\n¡Buenisimo! " + nombre_jugadorX + " vs " + nombre_jugadorO + "\nArranca el juego.") archivo.write('JugadorO = ' + nombre_jugadorO + '\n') else: print("\n¡Buenisimo! " + nombre_jugadorX + " vs PC " + "\nArranca el juego.") archivo.close() def jugar_tateti(opcion): datos_jugadores(opcion) imprime_tablero() jugadas = 0 jugadorX = True jugadorO = False while jugadas < 9: if jugadorX: print("\nTurno del jugador X") numeroElegido = int(input("Elegir un número del 1 al 9: ")) else: if opcion == str(1): print("\nTurno del jugador O") numeroElegido = int(input("Elegir un número del 1 al 9: ")) else: print("\nTurno PC") numeroElegido = int(tatetivsPC(tablero)) if 1 <= numeroElegido <= 9: if tablero[numeroElegido - 1] not in ['X', 'O']: if jugadorX: tablero[numeroElegido - 1] = 'X' jugadorX = False jugadorO = True else: tablero[numeroElegido - 1] = 'O' jugadorX = True jugadorO = False jugadas += 1 imprime_tablero() else: print("Ubicación no disponible.") else: print("Ingrese un número válido del 1 al 9.") if comprueba_ganador(): print("¡GANASTE!") break elif jugadas==9: print("La partida terminó empatada") print("=== BIENVENIDO AL TA-TE-TI ===") print("1. Humano vs Humano (2 jugadores)") print("2. Humano vs PC") opcion = "" opcion = input("Elegí una opción (1 para jugar): ") # Declaro las variables para luego validarlas p1, p2, p3 = "1", "2", "3" p4, p5, p6 = "4", "5", "6" p7, p8, p9 = "7", "8", "9" # Defino matriz para poder almacenar las X y O para luego poder controlar las ubicaciones y lineas tablero = [p1, p2, p3, p4, p5, p6, p7, p8, p9] if opcion == "1": jugar_tateti(opcion) elif opcion == "2": jugar_tateti(opcion) else: print("Opción no válida. Poné 1 o 2.")