juego de Perudo
Transcription
juego de Perudo
JUEGO DEL PERUDO MIGUEL PÉREZ MAESTRO JAVIER VAÍLLO MARTÍN Ingeniería de telecomunicación Ingeniería de telecomunicación Universidad Carlos III Universidad Carlos III [email protected] [email protected] ABSTRACTO En este documento se va a hablar de las reglas, la implementación y los algoritmos del juego de mesa conocido como Perudo. Dudo, nombre con que todavía se le conoce en muchos países de Sudamérica como el Perú, Bolivia, Chile entre otros. Categorías y Descripción de Temas [Inteligencia Artificial]: Resolución de Problemas, Métodos de Control y búsqueda, backtracking. Es creencia popular, que el Perudo está conectado a un antiguo juego Sudamericano llamado ―Liari‖—un juego de dados en el cual los jugadores estaban requeridos a mentirse recíprocamente y exagerar los datos del puntuaje del juego. Santaba por su parte, es una versión más compleja del Dudo, en la cual se introduce el concepto de ―sin verdad en los bolsillos‖- Y no ha cambiado de reglas con los años, sino por el contrario, se continúa jugando con las mismas reglas originales del Perudo español. Sin embargo, el juego de Perudo es, más popular que el Santaba, porque es más fácil de jugar y además, goza de virtual y total acogida mundial y no sólo en Latinoamérica. Términos Generales Experimentación, Algoritmos Palabras Clave Perudo, Jugada, Rondas, Jugador Automático, Jugador Humano. 1. INTRODUCCIÓN El juego conocido como Perudo fue llevado a España por el Conquistador Español, Francisco Pizarro a mediados del siglo XVI. Pizarro fue el precursor de la conquista del Imperio Incaico en Sudamérica y fue el fundador de la ciudad de Lima, quienes los Conquistadores declararon la capital del Perú. De hecho, el corazón del Imperio Incaico radicaba en el Perú y los historiadores de este juego, opinan que era, efectivamente, jugado desde el Imperio Incaico y sin diferencia de clases sociales, cientos de cientos de años atrás entre los Andes y las Costas del océano Pacífico. Años más tarde los conquistadores Españoles se enamoraron del juego y lo aprendieron durante los años de la Conquista de América del Sur. Por cierto que los españoles eran tremendamente hábiles en este juego (para ganar hay que saber mentir) y contribuyeron a difundir su popularidad alrededor de toda Europa. Entre los diversos nombres con que se le conoce lo conocemos como Santaba, Cachito, Cacho, Dados mentirosos, y por supuesto, Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Conference’04, Month 1–2, 2004, City, State, Country. Copyright 2004 ACM 1-58113-000-0/00/0004…$5.00. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. El dado mentiroso, así como todas sus versiones, se encuentran hoy en día disponibles en todos los almacenes de juegos de mesa y es aún más fácil ordenarlo en línea. En efecto, no hay duda que la tecnología actual permite que en cualquier rincón del mundo, los aficionados del Perudo puedan descargar el software gratis de simulación y disfrutar del Perudo En-Línea en la carretera de la red mundial de la Internet, entablando contacto con jugadores de todo el mundo. Sea contra un oponente real, sentado en su computadora o, contra un simulador creado por el programa de la computadora, lo que hace que este juego se convierta en una experiencia tan divertida, es la posibilidad de jugarlo con más de seis jugadores en una mesa, haciendo que con cada vuelta y cada tirada de dados, se vayan revelando aspectos personales del grupo. Por eso, es que es ideal jugarlo entre un grupo de buenos amigos ya que estas revelaciones van detallando aspectos de las personalidades de los jugadores, entretejiendo con cada mentira una serie de técnicas, trucos y estrategias para exagerar o despistar las sospechas y ocultar la verdad de forma tal, que se pueda llegar a convencer y engañar a los oponentes de la mesa. 2. REGLAS DEL JUEGO El ―Perudo‖, es un juego de dados. El objetivo principal del juego es ser el último jugador con uno ó más dados en su cubilete. Es un juego que se juega por turnos. Y a cada jugador se le entrega un cubilete con cinco dados. Y cada turno comienza cuando todos los jugadores hacen una tirada de los dados dentro de sus cubiletes. Después de tirar los dados dentro del vaso, cada jugador bate bien y voltea al cubilete sobre la mesa (siempre sobre una superficie plana) y cada jugador se asoma a mirar que dados le ha tocado, pero haciéndolo con mucho cuidado para que sus jugadores vecinos no espíen sus números. Los jugadores entonces ofrecen sus estimaciones tratando de adivinar el número que oculta el jugador. Cuando un jugador cree que el otro simplemente ha sobrestimado el número cantado, afirman el ―Yo Dudo‖. Entonces, el primer jugador canta un número y los demás jugadores o le creen o no, y cuando piensan que no es verdad, lo ―dudan‖ y se hace la comprobación del número total de dados. Cuando sí lo creen, cantan algo más alto sea por el número de dados, o por el número de valor. Si por ejemplo el jugador canta tener, Tres ―doses‖, el segundo jugador puede negar, o cantar por su cuenta algo superior como tres treses o cuatro del número que quiera. Después de que el segundo jugador pone la apuesta, el juego continúa hacia la izquierda. Si el jugador canta el ―Dudo‖ y acierta, entonces el jugador inicial tiene que destapar su juego y enseñar sus dados. Además luego todos los jugadores enseñan también sus dados para verificar si es que efectivamente, el número cantado era demasiado alto. Si existen suficientes o más dados de ese número, entonces, el jugador que cantó el ―Dudo‖ debe sacar uno de sus dados de su cubilete. Si no hay suficientes, entonces el jugador que cantó por última vez debe colocar un dado en el medio. De cualquier modo una nueva ronda comienza con un dado menos en juego. El jugador que perdió el dado en la ronda es el primero en la nueva que comienza. Si éste perdió su último dado, entonces el turno le toca al vecino del lado izquierdo. El último jugador con al menos un dado es el que gana. El diagrama de flujo de la partida es el siguiente: Figura 1: Diagrama de flujo de una partida de Perudo 3. ESTRATEGIAS En el juego de Perudo terminar siendo llamado mentiroso lo convierte en ganador y no en un perdedor. Uno de los factores que hacen del juego Perudo tan interesante, es que aunque parezca una broma, promueve e incita a la mentira. En efecto, en orden de poder engañar a todos los jugadores de la mesa y, con los dados ocultos bajo sus cubiletes, el jugar debe convencer a sus oponentes a que crean que lo que está diciendo es la pura verdad. De allí, que la acción de dudar sea el mero propósito del juego. Es fácil por eso, ser tildado de mentiroso en el juego de Perudo y justamente, ser descubierto en la farsa es lo que hace que el jugador pierda dados y eventualmente salga de la mesa. Aquí algunos prácticos consejos para aprender a mentir y saber cómo ocultar la verdad, aspectos que de hecho, podrán ayudarlos a ganar en Perudo. Similar al juego de Póker, en el cual hace falta el engaño y la frialdad necesaria para disuadir a los oponentes, una de las mejores estrategias en este tipo de juegos es estudiar las caras de sus oponentes. Los gestos nerviosos, las muecas, y hasta la risa son rasgos de expresión corporal que pueden develar mucho cuando se está, conscientemente, tratando de engañar a un grupo de personas. De hecho, este método los ayudará a ganarle varias rondas de ventajas a sus rivales. Jugada del jugador 1: Figura 2: Tirada del Jugador 1 Jugada del jugador 2: Por otro lado, si ustedes son todavía jugadores novatos en Perudo, es aconsejable que no canten a sus oponentes decisivamente al comienzo del juego y además, traten de no ser cantados especialmente, al principio del juego. Traten de tantear el tipo de jugadores de Perudo que están sentados en su mesa. Sólo analizando los movimientos corporales, las caras, las miradas, las reacciones pueden aprender y descubrir cuál es el más mentiroso de la mesa tan sólo observando el progreso del juego. Otro buen Consejo: Al jugar Perudo, ciertos jugadores tienden a cantar el engaño del jugador que, recientemente perdió un dado, es decir, que fue descubierto en la mentira y por lo tanto, pierde total credibilidad en las subsiguientes rondas. Sin embargo, no siempre es garantía, por eso los expertos aconsejan que en este juego, es importante mantener las apuestas a un nivel razonable y permanecer un perfil bajo, después de perder uno ó dos dados, ya que la tendencia será que todos sus oponentes duden de primera instancia cualquier cosa que el jugador diga. En juegos de mesas llenas, donde participan hasta 6 jugadores, si sus oponentes los están poniendo en una situación, por no decirlo, difícil colocando altas apuestas, una y otra vez, deberán estar preparados para ir, paso por paso, cantando las mentiras de sus oponentes, antes que las apuestas vayan subiendo y así, uno a uno ir descubriendo el engaño y deshaciéndose de dados mentirosos. Y pierda cuidado, que el precio por pagar para efectuar esta estrategia con éxito será tener que sacrificarse y perder algunos dados, pero como dice el refrán, el que no arriesga no gana, y a largo plazo verá qué fácil le resulta disuadir a sus oponentes a no ser tan agresivos en sus futuros juegos. Escojan de inmediato unos consejos y ¡desarrollen su propia estrategia ganadora! Ahora les proponemos un ejemplo de tres jugadores en su primera tirada: Figura 3: Tirada del Jugador 2 Jugada del jugador 3: Figura 4: Tirada del Jugador 3 En este caso empezaría a jugar el jugador uno, la apuesta más grande que este podría realizar con un 100% de probabilidad de que sea cierta sería 3 cuatros, ya que ese mismo jugador los posee (2 cuatros y un comodín) A partir de aquí entra en juego la estrategia de cada jugador, es decir, el jugador 1 puede decantarse por varias opciones para realizar la primera apuesta: 1º- Ir a algo seguro y pasarle la bola al siguiente jugador, como por ejemplo decir: Hay 3 cuatros. Esta opción es buena como todas las demás, aunque no conviene usarla siempre ya que si los rivales se dan cuenta de que siempre dices la verdad no te levantarán en la primera mano, pero quedas expuesto a que ya sepan tus dados para la siguiente vez que te toque hablar. El jugador 2 se equivoca porque al levantar todos sus cubiletes se cuentan ¡ 7 cuatros ! por lo que el jugador 2 pierde un dado y empieza la siguiente ronda: Tiradas de la segunda ronda: Jugada del jugador 1: 2º- Podría arriesgar e intentar que no volviera a llegarle el turno, por ejemplo diciendo 6 o 7 cuatros (es arriesgado porqué el solo tiene 3 pero esta confiando en que sus rivales también sumen cuatros o comodines), para este ejemplo resultaría muy bien empezar así ya que en total existen 7 cuatros en la mesa (contando con los comodines). 3º- Empezar con un número del que no tienes ninguno para tratar de engañar a un posible jugador arriesgado, por ejemplo diciendo 4 cincos, en este caso la cantidad no es un número muy grande en relación con el número total de dados, por lo que aceptarán seguramente los jugadores, además, en este caso, el jugador 2 al oír 4 cincos y él tener 3, podría cometer el error de subir mucho la apuesta, ya que inicialmente el jugador uno había seguido una estrategia de engaño, diciendo: Hay 7 cincos, que normalmente en un juego de 3 jugadores habiendo engañado el primer jugador no tendría éxito para el segundo jugador, pero en este ejemplo, el jugador 3 tiene 3 comodines, por lo que él suma 3 a cualquiera de los números que hayan dicho sus oponentes, además sumará mas si dicen alguno de los números que posea el jugador 3 de los que no son comodines, por lo que podría llegar a engaño si cree que tienen 3 cincos cada uno de sus adversarios, al igual que él. Existen infinitas formas y estrategias de jugar al Perudo en cada una de sus rondas, unas más eficaces que otras pero todas válidas al fin y al cabo, por lo que el jugador que quiera ganar tendrá que estar muy atento a todos los factores. Vamos a simular como avanzría la partida anterior: Jugador 1 Hay 4 cuatros. Figura 5: Tirada del Jugador 1 Jugada del jugador 2: Figura 6: Tirada del Jugador 2 Jugada del jugador 3: Jugador 2 Hay 4 cincos. Jugador 3 Hay 5 seises. (Vemos en este caso que ha subido más la apuesta, ya que este jugador tiene 4 seises en su cubilete y espera que de los 10 dados de sus rivales exista algun 6 o comodín) Jugador 1 Hay 6 cuatros. (Solo tiene un seis,el comodín, pero es probable que existan otros 4 seises de los 10 dados restantes, aquí el jugador uno decide incrementar la apuesta) Jugador 2 ¡¡ LO DUDO !! (No se cree que haya 6 cuatros ya que él solo tiene uno y además el jugador 3 ha dicho que iva a seises). Figura 7: Tirada del Jugador 3 Como se puede observar el jugador 2 ha perdido un dado, esto se debe a que perdio la ronda anterior, por ese motivo es el que comenzará esta segunda ronda: Jugada del jugador 3: Jugador 2 Hay 4 cincos (Esta siguiendo el método del engaño, aunque no es del todo cierto ya que como tiene 2 comodines sus dados contarán 2 para cualquier número y 3 en el caso de que sean cuatros o doses. Jugador 3 Hay 5 treses (Jugada lógica, ya que tiene que superar la apuesta anterior si decide creersela, por lo que incrementa en uno la cantidad dicha anteriormente y se decide por los treses ya que él suma 4 en sus dados) Jugador 1 ¡¡ LO DUDO !! (El jugador 1 no se lo cree, ya que duda que de los 9 dados restantes 5 sean treses, ya que él no tiene ninguno. Fallo del jugador 1 ya que en la mesa existían 6 treses de los 14 dados) En este caso la elección del jugador 2 ha sido buena, ya que ha realizado una primera apuesta elevada, consiguiendo que no le vuelva a llegar la ronda, quitándose así de problemas. El jugador 1 pierde un dado y empieza la siguiente ronda. Figura 10: Tirada del Jugador 3 Y así sucesivamente hasta que se elimine algún jugador: … Tiradas de la tercera ronda: Jugada del jugador 1: El jugador 2 ha sido eliminado, por lo que empieza el siguiente jugador, el jugador 3. Al jugador 1 le queda un dado y al jugador 3 le quedan 2 dados. Tiradas de la ronda 13: Jugada del jugador 1: Figura 8: Tirada del Jugador 1 Figura 11: Tirada del Jugador 1 Jugada del jugador 3: Jugada del jugador 2: Figura 12: Tirada del Jugador 3 Figura 9: Tirada del Jugador 2 El jugador 3 empieza, ahora tiene que pensarse bien como empezar: Jugador 3 1 seis. Se la ha jugado bastante, pero ahora el Jugador 1 está contra las cuerdas ya que él tiene un comodín y no puede levantar porque sabe que perdería, su única opción es decir que hay 2 de algún número que tenga el otro jugador, como el otro jugador ha dicho 1 seis: Jugador 1 dice 2 seises (Y se acabó la partida, ya que el jugador 3 sabe con certeza que no hay 2 seises en la mesa, puesto que él no tiene ninguno y a su rival solo le queda 1 dado jugador 1 eliminado ¡¡¡ GANA EL JUGADOR 3 !!! 4. IMPLEMENTACION DE LOS JUGADORES AUTOMÁTICOS DEL PERUDO Este juego como tantos otros juegos de cartas/dados está basado en probabilidades y en engaños. Los jugadores automáticos de Perudo son buenos estadísticos y saben pensar bien las probabilidades, por lo que el jugador además de conocer las probabilidades existentes en el tablero, tendrá que tener astucia para poder ganar a sus rivales. 4.1 ALGORITMOS DE LOS JUGADORES AUTOMÁTICOS El algoritmo principal consiste en calcular probabilidades, para saber si debemos levantar el cubilete si creemos que nos están mintiendo e incluso para saber que jugada elegir si pensamos que lo que ha dicho el jugador anterior va a ser correcto. De esta forma, si somos 3 jugadores en la mesa todos con 4 dados por ejemplo, si el anterior a mí dice que hay 4 treses y yo solo tengo un tres (incluidos comodines), tendrán que tener entre los otros dos jugadores 3 o más treses para que sea verdad, por tanto, de 8 dados que tienen entre los 2 jugadores, 3 deben ser treses o comodines. Figura 2: Diagrama de flujo de la decisión del jugador automático Las probabilidades van a seguir una distribución binomial: es decir, la probabilidad de que al tirar un dado salga un 3 es 1/3 (contando con el comodín, es decir da lo mismo que tenga un tres o un comodín porque va a contar como 3 igualmente), por lo tanto la probabilidad de que de esos 4 dados que tiene cada jugador salga un 3 será: La de que un jugador tenga 2 treses de sus cuatro dados será: y así sucesivamente, e igual para el otro jugador, por tanto la probabilidad total de que exista el número de treses indicado en la apuesta será la suma de las probabilidades anteriormente que satisfagan la condición (que sean treses o comodines). El algoritmo que sigue el jugador automático es calcular la probabilidad de que entre los jugadores restantes sumen al menos 3 dados para el ejemplo anterior, si esta probabilidad supera el 0.5 aceptará el resultado y elegirá entre sus posibilidades la jugada con más probabilidad de existir. En realidad no es el 0.5 puesto que se ha introducido en el algoritmo del jugador automático cierta aleatoriedad con la que se aceptarán los retos, estas probabilidades estarán comprendidas entre 0.42 y 0.57, es decir puede que acepte una jugada que tenga probabilidad de 0.43 de ser cierta y puede que decline una con probabilidad de ser cierta del 0.56. Además, para los jugadores automáticos se irá añadiendo una pequeña probabilidad ( 1/20*numRondas) a los números sobre los que se esté apostando, por ejemplo si los jugadores van a cuatros: 3 cuatros 4 cuatros 5 cuatros etc… Se sumará un pequeño porcentaje relacionado con el número de apuestas que se hayan hecho sobre ese numero, en el ejemplo numRondas=3. 5. DESARROLLO Y PRUEBA DEL MODELO La implementación del proyecto se ha realizado en el lenguaje JAVA. Se han codificado las siguientes clases: -Jugador.java: Utilizamos esta clase para caracterizar al jugador, tanto al jugador automático controlado por el ordenador como al jugador humano que será controlado por el usuario. En esta clase implementamos los métodos necesarios para emular la inteligencia del jugador automático y poder emitir un juicio sobre las jugadas que se realizan. Estas jugadas pueden ser de dos tipos: - Negación de la jugada que emitió el anterior jugador: Es lo primero que comprobamos, primero hemos de evaluar la probabilidad que tiene la jugada de ser cierta. Si después de esta evaluación creemos que dicha jugada puede ser verdadera pasaríamos a analizar al siguiente tipo de jugada. Si por el contrario se determina que la jugada es falsa, se termina la ronda y se comprueba qué jugador tiene razón y quién es el que estaba equivocado, dicho de otra forma, comprobamos quién es el ganador y quién el perdedor y con ello quién es el jugador que pierde uno de sus dados - Afirmación de la jugada que emitió el anterior jugador: Es la otra opción que tenemos frente a una jugada emitida por el jugador que nos precedía en el turno. Si hemos evaluado la jugada anterior y hemos decidido que su probabilidad es lo suficientemente alta como para considerarla correcta, ahora es el turno de emitir una nueva jugada. Para ello hemos de contar con el valor de nuestros dados y con las jugadas que han emitido los jugadores contrarios (que nos pueden dar una muestra de los dados que tienen) para decidir una nueva jugada. En el jugador automático decidiremos la jugada que creamos más probable de entre las jugadas posibles, pero un jugador humano puede optar por otra opción para despistar a los demás jugadores sobre el valor de sus dados. Para caracterizar debidamente a un jugador, hemos incluido en esta clase una serie de atributos. Estos son: - Nombre del Jugador: Este atributo lo utilizamos para identificar al jugador y para poder hacer referencia hacia él distinguiéndole del resto. - Número de dados del jugador: Este atributo muestra los dados que tiene cada jugador. En un principio cada jugador cuenta con cinco dados, cada vez que un jugador tilda una jugada de mentira, se comprueba la veracidad de esta y uno de los jugadores implicados pierde un dado. Si este dado era el único que le quedaba, el jugador es expulsado de la partida. - Array con el número de dados de cada clase en la jugada: Tenemos un array de cinco enteros que muestran la cantidad de dados de cada clase. Este array lo utilizamos para comprobar rápidamente el número de dados de cada clase que hay en la mano de un jugador. Aquí hay que fijarse en que no es lo mismo que mostrar los dados. Si en uno de nuestros dados ha salido un uno, al ser un comodín, puede contar como cualquier otro valor, por lo que en nuestro array cada dado en el que tengamos un uno va a sumar uno a cada posición de dicho array. El array es de cinco elementos para almacenar los valores de 2 al 6 que son lo valores válidos que podemos dar en una jugada, ya que el uno es comodín y no se puede utilizar. En cada posición tendremos el número de dados con ese valor. Utilizamos un array ya que el número de elementos es fijo. - Vector Valor de los Dados: En este vector almacenamos el valor real de los dados que tenemos en nuestra mano. Este vector lo utilizamos para imprimir los dados que tiene cada jugador. Utilizamos un vector porque el número de dados que tiene un jugador puede variar de una ronda a otra. - Vector jugadas: Este atributo almacena en un vector el número de jugadas que realiza cada jugador en una ronda. Este dato no es para uso del propio jugador, si no que es para uso del resto de jugadores y sirve para que puedan estimar el valor de los dados que posee el jugador a través de sus jugadas. Las jugadas se reinician cada ronda al cambiar el valor de los dados de los jugadores. Por último podemos decir de esta clase distingue entre el jugador automático y el jugador humano para el cálculo de decisiones, teniendo dos métodos distintos. De esta manera el jugador humano no puede tener acceso al cálculo de probabilidades. - Jugada.java: Esta clase la utilizamos para modelar cada una de las apuestas que realizan los jugadores alas que denominamos jugadas. Esta clase no tiene ningún método que merezca una mención especial, sólo la utilizamos para agrupar las propiedades que posteriormente necesitamos en el programa para tratar estas jugadas. Los atributos que tiene esta clase son: - Valor del dado: En este atributo almacenamos el valor que tiene el dado del que estamos estimando el número en la apuesta. - Número dados: En este atributo almacenamos el número de dados que hemos estimado en la apuesta. - Verdad: Este es un atributo booleano que indica si la jugada en cuestión ha sido aceptada o rechazada. Cuando un jugador decide una jugada pone este atributo a true y cuando un jugador decide que la jugada no es cierta, devuelve la misma jugada que le llegó pero con este atributo puesto a false. Con esta acción el programa ya sabe que tiene que procesar dicha jugada para comprobar cuál de los jugadores (el que emitió la jugada en primer momento o el que la tildó de mentira) tiene razón y cuál perderá un dado. - Probabilidad: En este atributo guardamos la probabilidad que ha calculado un jugador de que esa jugada sea cierta. Este atributo sólo estará presente en las jugadas que el jugador automático está evaluando para decidir cuál utiliza. De ninguna manera se pasarán estas probabilidades de un jugador a otro, ya que esto daría pistas sobre los dados que puede tener el jugador anterior. - Perudo.java: Esta es la clase principal, la que contiene el main. En esta clase tenemos el juego en sí con el método ejecutable. Aquí nos encargaremos de gestionar todo el juego, de comprobar las jugadas que se han tildado de falsas y de generar la tirada de los dados. Para caracterizar el juego necesitamos ciertos atributos que hemos incluido en esta clase. Estos atributos son: - Número total de jugadores en la partida: En este atributo almacenamos el número total de jugadores que están en la partida. Este atributo nos permite saber cuándo podemos dar por terminada la partida, ya que esto ocurre cuando sólo queda un jugador en ella. Por razones obvias de privacidad, sólo podremos tener un jugador humano por ordenador, ya que si hubiera varios uno podría ver las jugadas del resto y el juego perdería su sentido. El jugador que se quede sin dados será expulsado de la partida y eliminado del vector de jugadores. Dentro de los métodos de esta clase hay que mencionar el método nuevaTirada() que se encarga de emular las tiradas de los dados de cada jugador. Al inicio de la partida o después de que se haya decidido alguna jugada se ha de pasar a otra ronda. El primer paso de una nueva ronda es tirar los dados, almacenarlos en cada jugador y reiniciar la variable en la que almacenamos sus jugadas. Para emular la tirada de los dados hemos utilizado la clase Random de Java que genera números pseudoaleatorios. Con esta clase generamos números entre uno y seis con igual probabilidad. Con este valor llenamos los atributos de la clase Jugador referentes al valor de los dados. Para llenar el vector sólo hemos de añadir el elemento. Para crear el array con los valores de los dados miramos el valor equivalente de cada dado e incrementamos en uno el valor que teníamos almacenado en esa posición. Si el valor del dado es un uno incrementamos todas las posiciones. Otro método importante es el que se utiliza para comprobar las jugadas. Recorre los jugadores presentes en la partida y acceden a la posición del array que corresponde con el valor de los dados a comparar y suma los dados que tienen todos los jugadores. Este valor se compara con el número de dados que marca la jugada a comprobar. Si el número es mayor o igual la jugada es cierta y si es menor la jugada es falsa. Por último vamos a hacer mención a la ejecución del programa. Primero el jugador humano elige el número de jugadores contra el que quiere jugar, después se inicializan todas las variables y se comienza la partida. El programa se ejecuta hasta que queda un único jugador y sigue un sistema de turnos secuencial. Siempre el jugador que ha perdido un dado es el primero en salir en la siguiente ronda. Finalmente queremos señalar en este método que, al utilizar datos que se introducen desde teclado tenemos que verificar que los datos tengan el formato requerido y hay que hacerse cargo de las diferentes excepciones que pueden aparecer. - Número de dados totales en la partida: En este atributo guardamos el número de dados que aún quedan en el juego que es la suma de los dados de cada jugador. Este número es necesario para el cálculo de las probabilidades de las jugadas. 6. REFERENCIAS - Vector jugadores: Este atributo almacena elementos de la clase Jugador que representan a los jugadores de la partida. El usuario puede elegir el número de jugadores automáticos contra los que jugar entre un número de uno a cinco (el total de jugadores será entonces de dos a seis). [1] www.Perudo.com [2] http://es.wikipedia.org/ [3] http://java.sun.com