diff --git a/Sara/__pycache__/funciones.cpython-314.pyc b/Sara/__pycache__/funciones.cpython-314.pyc new file mode 100644 index 0000000..fa3388e Binary files /dev/null and b/Sara/__pycache__/funciones.cpython-314.pyc differ diff --git a/Sara/__pycache__/motor.cpython-314.pyc b/Sara/__pycache__/motor.cpython-314.pyc new file mode 100644 index 0000000..f7bcf4c Binary files /dev/null and b/Sara/__pycache__/motor.cpython-314.pyc differ diff --git a/Sara/funciones.py b/Sara/funciones.py new file mode 100644 index 0000000..019049b --- /dev/null +++ b/Sara/funciones.py @@ -0,0 +1,75 @@ +# Archivo Funciones.py + +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(tablero): + """ 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(tablero): + + tablero_colores = [] + + for casilla in tablero: + if casilla == "X": + tablero_colores.append("\033[91mX\033[0m") + elif casilla == "O": + tablero_colores.append("\033[94mO\033[0m") + else: + tablero_colores.append(casilla) + + + print(f"\n {tablero_colores[0]} | {tablero_colores[1]} | {tablero_colores[2]} \n---+---+---\n {tablero_colores[3]} | {tablero_colores[4]} | {tablero_colores[5]} \n---+---+---\n {tablero_colores[6]} | {tablero_colores[7]} | {tablero_colores[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: + nombre_jugadorO = "a la PC" + print("\n¡Buenisimo! " + nombre_jugadorX + " vs PC " + "\nArranca el juego.") + archivo.close() + return nombre_jugadorX, nombre_jugadorO + +def pedir_numero(): + while True: + pos = input("Elegir un número del 1 al 9: ") + if pos in ["1", "2", "3", "4", "5", "6", "7", "8", "9"]: + return int(pos) + print("Opción no válida. Ingresá un número del 1 al 9.") + +def informa_ganador(jugadorX, nombre_jugadorO, nombre_jugadorX): + if jugadorX: + print("¡Ganó \033[94mO\033[0m! Felicitaciones " + nombre_jugadorO) + else: + print("¡Ganó \033[91mX\033[0m! Felicitaciones " + nombre_jugadorX) \ No newline at end of file diff --git a/Sara/motor.py b/Sara/motor.py new file mode 100644 index 0000000..a542097 --- /dev/null +++ b/Sara/motor.py @@ -0,0 +1,63 @@ +# archivo motor.py + +from funciones import comprueba_ganador, datos_jugadores, imprime_tablero, tatetivsPC, pedir_numero, informa_ganador + +# Creo una función que inicializa el tablero del juego con las casillas numeradas. + +def crear_tablero(): + return ["1", "2", "3", + "4", "5", "6", + "7", "8", "9"] + +# Defino una función para crear y devolver el tablero inicial con las posiciones disponibles, +# permitiendo luego almacenar las X y O según los movimientos de los jugadores. + +tablero = crear_tablero() + +def jugar_tateti(opcion): + nombre_jugadorX, nombre_jugadorO = datos_jugadores(opcion) + imprime_tablero(tablero) + jugadas = 0 + jugadorX = True + jugadorO = False + + while jugadas < 9: + if jugadorX: + print("\nTurno del jugador X") + numeroElegido = pedir_numero() + else: + if opcion == str(1): + print("\nTurno del jugador O") + numeroElegido = pedir_numero() + 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(tablero) + + else: + print("Ubicación no disponible.") + + else: + print("Ingrese un número válido del 1 al 9.") + + if comprueba_ganador(tablero): + informa_ganador(jugadorX, nombre_jugadorO, nombre_jugadorX) + break + elif jugadas==9: + print("La partida terminó empatada") \ No newline at end of file diff --git a/Sara/tateti.py b/Sara/tateti.py new file mode 100644 index 0000000..af6e05d --- /dev/null +++ b/Sara/tateti.py @@ -0,0 +1,36 @@ +''' +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 +''' + +# Archivo TaTeTi.py + +from motor import jugar_tateti + +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): ") + +if opcion == "1": + jugar_tateti(opcion) + +elif opcion == "2": + jugar_tateti(opcion) +else: + print("Opción no válida. Poné 1 o 2.") \ No newline at end of file diff --git a/jugadores.txt b/jugadores.txt index 1cdcd06..b009db7 100644 --- a/jugadores.txt +++ b/jugadores.txt @@ -1,2 +1,2 @@ JugadorX = Fede -JugadorO = Lore +JugadorO = Sara