FPY-1101 · Fundamentos de Programación

Tarea Programada:
Juego del Gato

Tic-Tac-Toe · Python · Consola · 2 Jugadores → CPU

X
O
X
O
X

Descripción del problema

Deberás implementar el clásico juego del Gato (Tic-Tac-Toe / 3 en raya) en Python puro, ejecutándose completamente en consola. El programa debe permitir que dos jugadores se alternen para marcar casillas en un tablero 3×3, mostrando el estado del tablero tras cada movimiento y detectando automáticamente si hay ganador o empate.

⚠ Esta tarea tiene 4 niveles de dificultad. Resolver todos los niveles te sube la nota del curso. Cada nivel adicional otorga décimas para tu próxima prueba.

Lee cada nivel cuidadosamente — están pensados para que construyas sobre lo anterior. Guarda una copia funcional de cada nivel antes de avanzar al siguiente.

Datos de entrega

  • Archivo(s) .py por nivel
  • Nombrar: gato_n1.py gato_n2.py gato_n3.py ...
  • Comentario al inicio con nombre y sección
  • Subir al aula virtual antes del plazo

Herramientas permitidas en Python

✓ PUEDES usar únicamente:

input() print() int() float() str() abs() if else elif while for try / except def
* def es opcional — no es requisito, pero puedes usarlo si lo consideras conveniente.
Para el nivel 3 y 4 también se permite: random.random() y random.randint() del módulo random (visto en prueba anterior).

✗ NO puedes usar:

listas / listas 2D diccionarios tuplas def (opcional) clases import os import sys numpy / pandas
Usar colecciones (listas, dicts, etc.) o definir funciones anulará el puntaje del nivel correspondiente.

Pista de implementación — tablero sin listas:

# Puedes representar el tablero con 9 variables independientes:
c11 = "X"    c12 = " "    c13 = "O"
c21 = " "    c22 = "X"    c23 = " "
c31 = "O"    c32 = " "    c33 = "X"

# O con una sola cadena de 9 caracteres que representa el estado:
tablero = "X" + " " + "O" + " " + "X" + "...."  # posición por índice

Comportamiento esperado — todos los niveles

  • El tablero muestra las casillas numeradas del 1 al 9 (o fila/columna) antes de la primera jugada
  • Se muestra el tablero actualizado después de cada jugada
  • Las fichas X y O se asignan automáticamente (no el jugador las elige en niveles 1 y 2)
  • El Jugador 1 siempre parte primero en el nivel base
  • Se debe validar que la casilla ingresada sea válida y no esté ocupada
  • Tras cada jugada indicar si hay ganador, y en qué fila, columna o diagonal
  • Si no hay ganador después de 9 jugadas → indicar empate
  • El programa debe permitir jugar varias partidas (preguntar al final si se desea continuar)

Ejemplo de ejecución esperada:

===== JUEGO DEL GATO =====
Jugador 1: X | Jugador 2: O

1 | 2 | 3
---+---+---
4 | 5 | 6
---+---+---
7 | 8 | 9

Jugador 1 (X), ingresa casilla (1-9): 5

1 | 2 | 3
---+---+---
4 | X | 6
---+---+---
7 | 8 | 9

Sin ganador aún.

Jugador 2 (O), ingresa casilla (1-9): 1
...

¡Jugador 1 (X) gana! — Diagonal principal (↘)

Niveles de dificultad

Nivel 1 +0.5 pts prueba

Juego completo

Implementa el juego completo: tablero, turnos alternados, detección de ganador (fila, columna, diagonal) y empate. Fichas asignadas automáticamente. Parte siempre el Jugador 1.

1
Nivel 2 +0.8 pts prueba

Estadísticas de sesión

Mantén durante toda la ejecución el conteo de: partidas jugadas, victorias del Jugador 1, victorias del Jugador 2 y empates. Muéstralas al final de cada partida y al salir.

2
Nivel 3 +1.0 pto prueba

Configuración de partida

Al inicio de cada partida: permite elegir qué ficha quiere cada jugador (o asignar al azar), y quién parte primero (o elegirlo aleatoriamente). Usa random.

3
Nivel 4 Reemplaza nota más baja

Jugar vs CPU

Permite elegir modo: Jugador vs Jugador o Jugador vs CPU. La CPU elige su casilla automáticamente. Puede ser aleatoria o con algo de estrategia (bloquear al rival). Tú decides.

4
💡 Cada nivel incluye las funcionalidades del anterior. Los beneficios son acumulativos: completar el nivel 3 otorga los puntos de los niveles 1, 2 y 3 (hasta 2.3 pts sobre la próxima prueba). El nivel 4 reemplaza la nota más baja del curso además de los beneficios anteriores.

Tabla de evaluación

Nivel Contenido Beneficio
Nivel 1 Juego funcional básico 2 jugadores +0.5 pts próx. prueba
Nivel 2 Incluye nivel 1 + estadísticas de sesión +0.8 pts próx. prueba
Nivel 3 Incluye niveles anteriores + configuración / random +1.0 pto próx. prueba
Nivel 4 Incluye niveles anteriores + modo Jugador vs CPU Reemplaza la nota
más baja del curso

* Los puntos/décimas de los niveles 1–3 se suman a la nota de la próxima prueba escrita, con tope según reglamento. El nivel 4 reemplaza la nota más baja registrada en el libro de clases, sin importar cuál sea.

Recomendaciones de desarrollo

  • Empieza por dibujar el tablero en consola y verificar que se ve bien antes de agregar lógica
  • Piensa en cómo numerarás las 9 casillas para que el usuario las identifique fácilmente
  • Las 8 combinaciones ganadoras (3 filas + 3 columnas + 2 diagonales) se pueden verificar con if encadenados
  • Valida siempre: ¿es un número? ¿está en rango 1-9? ¿está libre?
  • Para el Nivel 2, inicializa los contadores antes del bucle principal de partidas
  • Para el Nivel 3, decide los turnos y fichas al inicio de cada partida, no durante
  • Para la CPU (Nivel 4), una estrategia simple: primero intenta ganar, luego bloquear, si no elige al azar
  • Prueba con casos borde: empate exacto, ganar en la última casilla, entradas inválidas repetidas