El trabajo practico de este cuatrimestre se basa en el famoso juego de la Ruleta.Lo que vamos a modelar es una mesa de juego, los jugadores y las distintas apuestas que se hacen con su correspondiente pago.Para jugar a la ruleta un jugador se une a la mesa, cuando lo hace cambia dinero por fichas, esas fichas las apuesta colocandolas sobre el paño. Despues de cierto tiempo se hace jirar la ruleta hasta que sale el número ganador.
La banca paga a los ganadores y se queda con las fichas de los perdedores.
Y asi continúa el juego hasta que el jugador se retira de la mesa.
Vamos a simplificar algunas reglas del juego y a acotar algunas acciones, porque lo que nos importa es practicar interfaces gráficas y no hacer un juego 100% real.
Acuerdense que siempre vamos a preferir que haya mejores ideas de diseño a una interfaz mas estética con colores mas lindos y fondos mas vistosos.
Vamos a tener una unica mesa de juego, en esa mesa es donde está la ruleta y a la que se incorporan los jugadores que quieren participar.
Para la mesa hay una cantidad maxima de jugadores, cuando un jugador se une a la mesa cambia una cantidad de dinero por fichas, tambien cada mesa cuenta con un pozo que es una cantidad de dinero con la cual paga. Vamos a considerar que cada ficha equivale a una unidad de su dinero y que todas las fichas se pueden usar para hacer cualquier apuesta.
Del jugador nos va a interesar la cantidad de dinero que tiene y la cantidad de fichas que tiene para apostar.
Las posibles apuestas que se pueden hacer son:
Pleno se apuesta una cantidad de fichas a un único número, en caso de resultar ganador la banca paga 36 fichas por cada una que se haya apostado.Par Impar se apuesta a alguna de las opciones posibles: par o impar. En caso de resultar ganador la banca paga 2 fichas por cada una apostada.Fila cada fila contiene 3 números consecutivos, el apostador 12 fichas por cada una apostada si sale cualquiera de los 3 numeros.Columna en cada columna hay 12 números, el apostador recibe 3 fichas por cada ficha apostada.
En todos los casos la ficha ganadora se devuelve al jugador. Por ejemplo si el jugador con el color rojo apuesta al numero 10 de forma plena una sola ficha y sale cuando paguen sus apuestas tendra 36 fichas nuevas + la que apostó.
Si la apuesta no resulta ganadora es la banca la que se queda con las fichas sobre la mesa.
Codificar las clases Java necearias (con sus correspondientes tests) de forma que se pueda:
Se pide implementar una interfaz gráfica usando como framework de presentación Arena, de forma tal que permita:
NOTA: Las pantallas que se muestran a continuación son solo una forma de presentar la información. Sugerimos que empiecen con estos prototipos de pantalla y a partir de ellos los modifiquen a gusto
1. Unir a un jugador a una mesa con una determinada cantidad de dinero para gastar. Es obligatorio ingresar ambos datos y se debe tener en cuenta que el dinero debe de ser un numero mayor a cero. Ejemplo:
2. Visualizar el estado del tablero (las apuestas realizadas en cada casillero), asi como como el estado del jugador (cantidad de fichas que posee) y las acciones que se pueden realizar (Girar la ruleta, retirarse, apostar o cambiar fichas). Por ejemplo:
Viendo, notamos que esta pantalla propuesta quizas sea mas complicada de representar distintos tipos de apuestas, entonces les dejamos otra pantalla posible a modo de guia (recuerden que son solo sugerencias)
En el caso de que quieran que sea posible tener mas de un usario, una opcion podria ser:
3. Implementar las acciones que se pueden realizar.
3.1. Girar la ruleta (en el ejemplo No va mas!). Al hacer click se obtiene el numero ganador, luego de informado se debe permitir pargar las apuestas, una vez hecho esto se debe mostrar el nuevo estado del tablero y del jugador
3.2. Retirarse: permite a un jugador retirarse de la mesa y nos informa con cuanto dinero se retiró de la mesa.
3.3. Cambiar Fichas: permite ingresar un numero (entero positivo y menor o igual a la cantidad total de dinero que tiene el jugador) que sera la cantidad de fichas que cambiara para adicionar a las fichas que posee el jugador
3.4. Apostar: Permite crear las distintas apuestas y elegir la cantidad de fichas que se apostaran. En todos los casos la cantidad de fichas apostadas tiene que ser menor o igual a la cantidad de fichas que posee el jugador. Al momento de crear la apuesta se debe elegir que tipo de apuesta se va a crear.
Sugerencia: Para resolver el tp les sugerimos que el orden sea: 1 - 3.4 - 2 (solo con los datos y acciones de un jugador) - 3.2 - 3.3 - 2 (completo) - 3.1
Usando las tecnologías web vistas durante la cursada (html, jsp, css, etc)
Se pide:
Mostrar una pantalla que permita:
Aclaraciones:
Para esta entrega solo nos importan las apuestas plenas y la parte numerica del paño (sin paridad, ni filas, ni columnas ,...). Tambien seguimos con nuestra idea de que hay un unico jugador.
Los puntos que se mencionan al principio son obligatorios para aprobar, los puntos que siguen es para pensar en una nota mas alta.
Utilizando el framework Wicket visto en la materia, se pide implementar el juego de la ruleta considerando un esquema multiusuario, es decir, varios usuarios que ingresan al juego y todos apuestan sobre la misma mesa.
La solucion debe cumplir con los siguientes requerimientos:
Cualquier jugador puede girar la ruleta, haciendo click en el boton de "Girar la ruleta". Luego de haceerlo, el jugador ve el resultado de la jugada, y el resto de los jugadores quedan imposibilitados de seguir apostando: sólo pueden ver los resultados de la jugada. Si cualquier otro usuario hace click en "Apostar" o en "Girar la ruleta" recibirá un mensaje indicando que esa jugada de la ruleta ya terminó y sólo puede ver los resultados.
Desde la pantalla de Resultados el jugador tiene la posibilidad de "Seguir Apostando". Al hacerlo el jugador se une a la jugada actual de ruleta, en la que todavía no se giro la ruleta.
Aclaraciones:
En esta pantall el jugador podrá seleccionar el tipo de apuesta, a qué se apuesta y la cantidad de fichas.
Toda esa información se debe mostrar en una única pantalla similar a la siguiente:
Como se ve tenemos una dependencia entre los dos combos. En el primero se elije el tipo de apuesta y en el segundo a qué es lo que se apuesta; los valores de este segundo combo dependerán de lo que se haya seleccionado en el primero.
El detalle de las opciones es el siguiente:
Cada vez que se cambie el tipo de apuesta, el segundo combo deberá quedar en blanco.
Usar un Timer para refrescar el estado de la jugada (apuestas, numero resultado, etc), de forma que no sea necesario hacer click explícitamente para actualizar el estado. Para ello conviene mirar los Timers de Wicket. Aca hay un ejemplo de uso de los timers.