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