Juego de dominó en Python: clases Ficha, Pila, Jugador y Mesa

Informática y TelecomunicacionesActualizado el 2,97 KB

Resumen

El documento describe la implementación en Python de un juego de dominó con lógica de juego, interacción con el usuario y una IA simple para las CPU. Explica las clases Ficha, Pila, Jugador y Mesa, sus métodos principales y la función juego(), que controla los turnos y determina el ganador. Sirve para entender cómo se estructura un programa orientado a objetos aplicado a un juego de cartas.

Puntos clave

  • La clase Ficha representa una ficha con dos valores, calcula su suma y permite rotarla.
  • La clase Pila crea todas las fichas del dominó, las mezcla aleatoriamente y reparte 7 fichas a un jugador.
  • La clase Jugador distingue entre humano y CPU: la CPU elige la ficha de mayor valor y el humano elige manualmente.
  • La clase Mesa representa el tablero, coloca fichas al principio (0) o al final (1) y lo muestra.
  • La función juego() reúne 1 jugador humano y 3 CPU, y termina cuando alguien se queda sin fichas o todos pasan.
  • El puntaje se calcula por equipos: jugador humano y CPU2 contra CPU1 y CPU3.

Ponte a prueba

Desarrollo de un Juego de Dominó en Python

Este documento presenta el código en Python para un juego de dominó, incluyendo la lógica del juego, la interacción con el usuario y una IA simple para los jugadores controlados por la computadora (CPU).

Clases del Juego

Clase Ficha

Representa una ficha individual del dominó con dos valores.

  • __init__(self, valor1, valor2): Inicializa la ficha con sus valores y calcula la suma de estos.
  • valor(self): Retorna la suma de los valores de la ficha.
  • __str__(self): Retorna una representación en string de la ficha (ej. "1,2").
  • rotar(self): Intercambia los valores de la ficha.

Clase Pila

Representa el conjunto de fichas disponibles al inicio del juego.

  • __init__(self): Crea todas las fichas del dominó y las mezcla aleatoriamente.
  • __str__(self): Retorna una representación en string de todas las fichas en la pila.
  • sacar_fichas(self): Reparte 7 fichas a un jugador.

Clase Jugador

Representa a un jugador, ya sea humano o CPU.

  • __init__(self, nombre, apellido, mano): Inicializa el jugador con su nombre, apellido y mano de fichas.
  • buscar(self, tablero): Busca una ficha válida para jugar en su mano. Si es CPU, elige la ficha de mayor valor. Si es humano, permite al usuario elegir.
  • jugar(self, tablero): Realiza una jugada, colocando una ficha en el tablero.
  • valor_mano(self): Calcula el valor total de las fichas en su mano.
  • __str__(self): Retorna el nombre y apellido del jugador.
  • mostrar_mano(self): Muestra las fichas en la mano del jugador.

Clase Mesa

Representa el tablero de juego.

  • __init__(self): Inicializa el tablero vacío.
  • poner(self, ficha, posicion): Coloca una ficha en la posición especificada (0 para el principio, 1 para el final).
  • imprimir(self): Muestra el estado actual del tablero.

Función juego()

Función principal que ejecuta la lógica del juego.

  1. Inicializa el tablero, la pila de fichas y los jugadores (1 humano y 3 CPU).
  2. El jugador humano realiza la primera jugada.
  3. Entra en un bucle hasta que termine el juego.
  4. En cada turno, un jugador intenta jugar una ficha.
  5. Si un jugador no puede jugar, pasa el turno.
  6. El juego termina cuando un jugador se queda sin fichas o cuando todos los jugadores pasan en la misma ronda.
  7. Se calcula el puntaje de cada equipo (jugador humano + CPU2 vs CPU1 + CPU3).
  8. Se determina el ganador o si hay empate.

Ejecución del Juego

Para iniciar el juego, simplemente se llama a la función juego().

juego()

Descargar

PDF Word HTML

Preguntas frecuentes

¿Cómo se inicia el juego de dominó en este código?

Para iniciar el juego basta con llamar a la función juego(). Esta función inicializa el tablero, la pila de fichas y los jugadores.

¿Cómo elige ficha la CPU?

Según el documento, la CPU elige la ficha válida de mayor valor de su mano, mientras que el jugador humano puede elegir libremente.

¿Cuándo termina la partida?

El juego termina cuando un jugador se queda sin fichas o cuando todos los jugadores pasan en la misma ronda.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Qué método de la clase Ficha intercambia los valores de la ficha?
2. ¿Cuántas fichas reparte el método sacar_fichas() de la clase Pila a un jugador?
3. ¿Qué significa el parámetro posicion 1 en el método poner() de la clase Mesa?
4. ¿Cuántos jugadores participan en el juego según la función juego()?
5. ¿Cómo se forman los equipos para calcular el puntaje?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.