Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



Mostrando entradas con la etiqueta domino. Mostrar todas las entradas
Mostrando entradas con la etiqueta domino. Mostrar todas las entradas

martes, 11 de junio de 2013

Juego De Dominó hecho con Python (II): Esquema General

Juego De Dominó hecho con Python (II)
 Esquema General

A continuación os comento el esquema de como podía  funcionar el programa a vista del usuario:

1) Solicitar al usuario que tipo de torneo quiere jugar, dando 3 opciones: 2 partidas, 4 partidas o llegar a 100 puntos.

2) Elegir tipo de los dos  jugadores: Humano o CPU (máquina)
2.1) Si es CPU, pide que tipo de inteligencia tiene.

3) Dependiendo del tipo de torneo, jugar las partidas.
3.1) Si el jugador es Humano, mostraría las jugadas disponibles, el estado del tablero, y pediría al usuario que eligiese la ficha a colocar.

4) Cada resultado de la partida, la va almacenando en el marcador general de cada jugador.

5) Cuando termina el torneo, muestra el resultado del torneo, indicando quién ha ganado.


Identificando las clases:
Después de leer el problema, podemos identificar las siguiente clases:
Ficha: tenemos 28 fichas con dos valores cada una de ella, esos valores van desde el 0 al 6. Estos valores son propiedades de esta clase. Además como mínimo tendremos dos métodos: 
  •    ver: para mostrar la ficha y su valor 
  • contar: suma los valores de la ficha. Por ejemplo la ficha 6:6, vale 12 puntos. La 3:2, será de 5 puntos.

Jugador: es el "ente" que juega, habiendo en cada partida dos. Al principio de la partida tienen el mismo número de fichas, que van colocando según el turno del juego. Si alguno se queda sin poder poner la ficha, "pasa", y corre el turno. Si los dos "pasan", hay que contar el valor de la fichas que tienen, para ver el ganador. Si uno coloca su ultima la pieza hace "dominó" y gana.


Serpiente (tablero): En el tablero se van colocando las fichas de los jugadores, formando una "serpiente", que solo permite colocar las fichas al principio (cabeza) o final (cola) de ella, según los valores que tenga.
En el siguiente turno podemos poner fichas que contengan 0 o 1

Partida: Enfrentamiento entre los dos jugadores. En el torneo se juegan varias partidas (2,4, o el número necesarias para llegar a la puntuación de 100). Al inicio de la partida se reparten las 28 fichas, el jugador con el 6:6, empieza el turno.
Van colocando la fichas, hasta que:

  •  los dos pasen (no puedan colocar ninguna ficha, gana quien tenga menos puntos en sus fichas) 
  • o haga alguno "domino" (coloque la última pieza que tenga, conviertiéndose en ganador), 
Entonces se da por terminada la partida y se contabilizan los puntos que ha obtenido el jugador ganador.


La función Main la podemos asimilar a lo que es el Torneo: elegir el tipo nº de partidas , tipos de jugadores y proceder a realizar las partidas, obteniendo un resultado final con la suma de todos los puntos obtenidos en las anteriores partidas.

Os dejo aquí dos "esquemas" que me he hecho ver que se hace en la "partida" y para analizar la colocación de fichas.
Esquema de como se juega una partida


Esquema del método colocar Ficha de la clase jugador


En la próxima entrada veremos y comentaremos el código completo.

Nota:
Aprovechando que Python es un lenguaje de programación multiparadigma, ya que soporta orientación a objetosprogramación imperativa y, en menor medida,programación funcional, el análisis de clases no es exhaustivo, y se puede añadir más clases para orientar el programa más a objetos, pero esto lo "mínimo" y "suficiente" para ver claro y entender como se puede hacer el programa.


Entradas relacionadas:
http://jsbsan.blogspot.com.es/2013/06/juego-de-domino-hecho-con-python-i.html
http://jsbsan.blogspot.com.es/2013/06/juego-de-domino-hecho-con-python-iii-el.html


lunes, 10 de junio de 2013

Juego De Dominó hecho con Python (I)


Juego De Dominó hecho con Python (I)

A lo largo de una serie de artículos iré desarrollando un pequeño juego de domino realizado en Python, el objetivo es usar este lenguaje de programación para hacer  un ejemplo completo, manejando listas y  clases.

Debido al gran número de variantes que existen de este juego, me voy a basar en estas reglas:
- Número de piezas: 28

- Número de jugadores: 2 (que pueden ser Humano vs Humano,  Humano vs Cpu, o CPU vs CPY)

- Modo de juego:Torneo de:
  • 2 partidas
  • 4 partidas
  • el primero que consiga 100 puntos gana

- Inicio del turno del juego: el que tenga el 6 dobles

 -El tipo de juego va a ser de "Conocimiento Perfecto": conocemos las piezas de nuestro adversarios, para ello al inicio de la cada partida todas las fichas se reparten entre los dos jugadores (14 para cada uno).

-Condiciones para ganar:

  • Cuando un jugador se quede sin ninguna pieza, gana, sumando los puntos del adversario a su marcador
  • Cuando los dos jugadores pasen, osea, no puedan colocar ninguna pieza, se sumará los puntos de las fichas que tengan, y el que tenga menos ganará. Añadiéndose al marcador del ganador todos los puntos (tanto los suyos como los del adversario)

-La inteligencia artificial del la CPU tendrá varios niveles:

  • juego aleatorio: pondrá una ficha aleatoria.
  • juego "más pesado": coloca la pieza que mayor puntos tenga
  • juego "doble": si existe posibilidad de poner un doble, lo pone.

Nota:
Mejoras futuras: En principio lo desarrollaré en modo consola, no descarto la idea de hacerlo en entorno gráfico. Pienso también en mejorar la inteligencia artificial, usando el algoritmo minimax.


Mañana más.... :)

Saludos


Entradas relacionadas:
http://jsbsan.blogspot.com.es/2013/06/juego-de-domino-hecho-con-python-ii.html
http://jsbsan.blogspot.com.es/2013/06/juego-de-domino-hecho-con-python-iii-el.html