Está en la página 1de 3

I Proyecto Programado EasyPoker

I Semestre 2011

Algoritmos y Estructuras de Datos Administración de Tecnologías de Información Tecnológico de Costa Rica

EasyPoker

Usted ha sido contratado por una empresa que desarrolla juegos en línea y se le pide que desarrolle una aplicación que le permita a un usuario inexperto entrenarse en el juego del poker.

Su aplicación solo contará con un usuario real (quien se estará entrenando) y entre 1 y 5 jugadores virtuales. El jugador 1 es el primer dealer, y en cada turno el dealer rotará hacia la derecha. El usuario real es el último de la ronda.

Mecánica del Juego.

El Poker es un juego que funciona con un mínimo 2 jugadores. En cada ronda uno de los jugadores será el dealer (el que reparte), este rol se va turnando. Para iniciar el juego los 2 siguientes jugadores (a la derecha del dealer) deben apostar, el primero apuesta, antes de repartir las manos, una ficha de valor mínimo, y el segundo jugador debe poner en la mesa una ficha del valor que le sigue, en caso de que solo sean 2 jugadores el dealer será el segundo apostador, después de repartir las manos se da una ronda de apuestas, en la que cada jugador hace sus apuestas; para poder seguir el juego todos los jugadores que deseen continuar deben haber apostado la misma cantidad de fichas. En cada turno un jugador debe decidir si iguala la apuesta o bien, se retiran de la mano y vuelven a jugar en la siguiente, al terminar esta fase se descarta 1 cartas del mazo y se ponen 3 en el centro de la mesa (flop), se hace otra ronda de apuestas, y se descarta 1 cartas del mazo y se pone otra carta en el centro de la mesa(turn), se realiza de nuevo un turno de apuestas y finalmente se quema otra carta y se pone la última carta(river) en la mesa. Se realiza la última ronda de apuestas y al terminarla se evalúa que jugador gana la mano, (solo con los jugadores que llegaron hasta esta última ronda de apuestas), en caso de que todos los jugadores se hayan retirado antes de que salgan las 5 manos, el ultimo que se retiró es el ganador del pot (fichas apostadas), y se empieza otra mano. El juego finaliza por completo cuando uno de los jugadores llega a obtener la totalidad de fichas de todo el resto de sus oponentes, aunque se puede terminar en el momento que uno quiera.

Los ganadores del juego se evalúan, jugando sólo 5 cartas, distribuidas entre la 2 de mano del jugador y las 5 cartas desplegadas en la mesa (flop, turn y river). El orden de prioridad de las manos, de menor a mayor, es la siguiente:

1. Carta alta: El jugador no tiene parejas, color, ni nada que le forme el juego de 5 cartas, solo cuenta su carta más alta.

2. Pareja de cartas

3. 2 Parejas de cartas

4. 1 Trío de cartas

5. Escalera (Straigh): Cinco cartas siguiendo el orden pero de diferentes palos.

6. Color (Flush): Cinco cartas del mismo palo pero sin que formen una escalera.

7. Full (Full house): Un trío y una pareja.

8. Escalera de color (Straight flush): Igual que el anterior, cinco cartas del mismo palo, pero que no terminan en el valor más alto (el As).

9. Poker (Four of a kind): Cuarto cartas del mismo valor.

10. Escalera Real (Royal Flush): Cinco cartas seguidas del mismo palo que terminan en el valor más alto, del diez al As.

I Proyecto Programado EasyPoker

I Semestre 2011

Algoritmos y Estructuras de Datos Administración de Tecnologías de Información Tecnológico de Costa Rica

En caso que 2 jugadores o más tengan juego para ganar, se escoge el que tenga más prioridad (más cerca del 10), y si 2 jugadores o mas tienen la misma prioridad, se escoge el que tenga cartas más altas; y por ultimo en caso de empate se reparte el pot entre esos jugadores (no existe prioridad entre los palos de las cartas).

Aspectos de Implementación.

Sobre la implementación de la aplicación, usted debe desarrollar juego tomando en cuenta los siguientes requisitos de implementación:

1. La mesa de juego se implementará utilizando una lista doblemente enlazada circular

2. Cada jugador virtual será implementado bajo estas reglas:

3. esta puede ser por medio de randoms).

4. El mazo de cartas se implementará mediante el uso de una pila que en cada turno se inicializa depositando de forma aleatoria (con un random) las 52 cartas del mazo. Esta pila debe implementarse mediante una lista enlazada.

5. Las cartas de la mesa (flop, turn y el river) serán almacenadas en un arreglo de 5 posiciones. Las 3 cartas del mazo que son quemadas solo se pierden.

6. El precio de la mesa lo pone el usuario al inicio del juego, y la apuesta menor y la apuesta mayor será un 5% y 10% respectivamente.

7. Las apuestas de la primer ronda solo igualarán la apuesta mayor. A partir de la segunda ronda de apuestas, se debe correr para cada jugador virtual un random para definir el monto de la apuesta inicial (un valor entre la apuesta mínima y el “all in”) y a partir de ese momento se define para cada jugador si iguala la apuesta (65% del tiempo) o si aumenta la apuesta (35% del tiempo), las apuestas se definen en múltiplos del 10% del precio de la mesa (el programador define los valores).

8. En caso de que uno de los jugadores virtuales no pueda igualar el monto de la apuesta actual, se retirará (40% probabilidad) o pondrá su “all in” (60% probabilidad) en juego.

9. La evaluación de las manos de los jugadores será un proceso automatizado que siempre escogerá la mejor combinación de cartas para cada uno de los jugadores virtuales. En el caso del jugador la aplicación le muestra cuál es su opción de juego, finalmente la aplicación indica quien es el ganador.

10. El usuario ganador gana el pot en términos de su apuesta y si el total del pot es mayor a eso, la diferencia se le devuelve a cada jugador o se le evalúa el segundo lugar de la mesa (queda a elección del programador).

11. Cada argumento que no se especifique en esta explicación del proyecto deberá ser definido por el programador.

Recuerde que todo su código debe ser orientado a objetos, ir bajo estándar CamelCase y estar bien documentado.

I Proyecto Programado EasyPoker

I Semestre 2011

Algoritmos y Estructuras de Datos Administración de Tecnologías de Información Tecnológico de Costa Rica

Aspectos administrativos:

La tarea debe ser desarrollada en JAVA, debe tener interfaz gráfica, debe ser entregada mediante el TEC Digital en el tiempo destinado para ello. Debe subir un archivo compreso registrado bajo su nombre y carné. La fecha de entrega es el 28 de abril de 2011 a la 01.00.05

La documentación se presenta en formato html y debe incluir:

Una explicación del problema a desarrollar,

Un análisis de resultados (una tabla la cual trae el desglose de las principales funciones y estructuras creadas, y en las columnas irá una calificación de 0 a 10(grado de completitud) que define el propio programador, y si se presenta errores, se debe incluir una explicación de la situación; esto se tomará en cuenta para la revisión, si algún error no es reportado se pondrá cero en dicha funcionalidad.

Un manual de usuario que contengan pantallazos significativos y una explicación de cómo ejecutar el programa y como utilizarlo

Un diccionario de métodos lo cual corresponde a una explicación de cada método del programa (que recibe, que devuelve, etc.) puede utilizar un javadoc.

Notas bibliográficas y referencias de programación.