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:



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