Triki es una implementación en Python del clásico juego Tres en Línea (Tic-Tac-Toe) utilizando la biblioteca Tkinter para la interfaz gráfica. El juego está desarrollado siguiendo los principios de la Programación Orientada a Objetos (POO) y ofrece dos modos de juego: contra otro jugador o contra la computadora.
- Interfaz gráfica intuitiva
- Dos modos de juego:
- Jugador vs Jugador
- Jugador vs Computadora
- Sistema de puntuación
- Temporizador de juego
- Detección automática de victoria y empate
- Python 3.x
- Tkinter (incluido en la instalación estándar de Python)
- Ejecuta el script Python:
python triki_game.py
- Selecciona el modo de juego:
- "2 Players" para jugar contra otro jugador
- "Against Computer" para jugar contra la computadora
- El jugador X siempre comienza
- Haz clic en cualquier celda vacía para realizar tu movimiento
- En modo computadora, la máquina jugará automáticamente después de tu turno
El juego está construido utilizando principios de POO:
- La clase
TrikiGame
encapsula toda la lógica y datos del juego - Atributos privados:
buttons
: Matriz de botones del tableroscore_x
,score_o
: Puntuacionesplayer_turn
: Turno actualgame_over
: Estado del juegomode
: Modo de juego actual
Métodos principales:
check_win()
: Verifica condiciones de victoriacomputer_move()
: Lógica de la computadoraupdate_score()
: Gestión de puntuaciónclick()
: Manejo de interacciones del usuario
El método __init__
:
- Inicializa el estado del juego
- Configura la interfaz gráfica
- Establece valores predeterminados
- Crea componentes visuales
Gestión de estado a través de:
self.player_turn
: Control de turnosself.game_over
: Estado de finalizaciónself.buttons
: Estado del tableroself.mode
: Modo de juego actual
def click(self, row, column):
# Maneja las jugadas de los usuarios
# Verifica validez del movimiento
# Actualiza el estado del juego
def check_win(self):
# Verifica filas, columnas y diagonales
# Retorna True si hay un ganador
def computer_move(self):
# Selecciona una celda vacía aleatoriamente
# Realiza el movimiento
# Verifica victoria o empate
- Sistema de puntuación persistente durante la sesión
- Temporizador de juego activo
- Detección automática de fin de juego
- Cambio dinámico entre modos de juego
- Inicialización del tablero
- Selección de modo
- Turnos alternados entre jugadores
- Verificación de victoria/empate
- Actualización de puntuación
- Opción de reinicio
Las contribuciones son bienvenidas. Para contribuir:
- Haz fork del repositorio
- Crea una rama para tu feature
- Realiza tus cambios
- Envía un pull request
Este proyecto está bajo la Licencia MIT.