puntos negros en las dos caras superiores. Si la suma es 7 u 11 en el primer tiro, el jugador gana. Si la
suma es 2, 3 o 12 en el primer tiro (llamado “craps”), el jugador pierde (es decir, la “casa” gana). Si
la suma es 4, 5, 6, 8, 9 o 10 en el primer tiro, esta suma se convierte en el “punto” del jugador. Para
ganar, el jugador debe seguir tirando los dados hasta que salga otra vez “su punto” (es decir, que tire ese
mismo valor de punto). El jugador pierde si tira un 7 antes de llegar a su punto.
La aplicación en las fi guras 6.9 y 6.10 simula el juego de craps, utilizando varios métodos para defi nir la lógica del
juego. En el método
main
de la clase
PruebaCraps
(fi gura 6.10), la línea 8 crea un objeto de la clase
Craps
(fi gura
6.9) y la línea 9 llama a su método
jugar
para iniciar el juego. El método
jugar
(fi gura 6.9, líneas 21 a 65) llama
al método
tirarDado
(fi gura 6.9, líneas 68 a 81) según sea necesario para tirar los dos dados y calcular su suma.
Los cuatro resultados de ejemplo en la fi gura 6.10 muestran que se ganó en el primer tiro, se perdió en el primer
tiro, se ganó en un tiro subsiguiente y se perdió en un tiro subsiguiente, en forma respectiva.
1
// Fig. 6.9: Craps.java
2
// La clase Craps simula el juego de dados "craps".
3
import
java.util.Random;
4
5
public class
Craps
6
{
7
// crea un generador de números aleatorios para usarlo en el método tirarDado
8
private
Random numerosAleatorios = new Random();
9
10
// enumeración con constantes que representan el estado del juego
11
private enum
Estado {
CONTINUA
,
GANO
,
PERDIO
};
12
13
// constantes que representan tiros comunes del dado
14
private final static int
DOS_UNOS
=
2
;
15
private final static int
TRES
=
3
;
16
private final static int
SIETE
=
7
;
17
private final static int
ONCE
=
11
;
18
private final static int
DOCE
=
12
;
19
20
// ejecuta un juego de craps
21
public void
jugar()
22
{
23
int
miPunto =
0
;
// punto si no gana o pierde en el primer tiro
24
Estado estadoJuego;
// puede contener CONTINUA, GANO o PERDIO
25
26
int
sumaDeDados = tirarDados();
// primer tiro de los dados
27
28
// determina el estado del juego y el punto con base en el primer tiro
29
switch
( sumaDeDados )
30
{
31
case
SIETE
:
// gana con 7 en el primer tiro
32
case
ONCE
:
// gana con 11 en el primer tiro
33
estadoJuego =
Estado.GANO
;
34
break
;
35
case
DOS_UNOS
:
// pierde con 2 en el primer tiro
36
case
TRES
:
// pierde con 3 en el primer tiro
37
case
DOCE
:
// pierde con 12 en el primer tiro
38
estadoJuego =
Estado.PERDIO
;
39
break
;
40
default
:
// no ganó ni perdió, por lo que guarda el punto
41
estadoJuego =
Estado.CONTINUA
;
// no ha terminado el juego
42
miPunto = sumaDeDados;
// guarda el punto
43
System.out.printf(
"El punto es %d\n"
, miPunto );
Figura 6.9
| La clase
Craps
simula el juego de dados “craps”. (Parte 1 de 2).
6.10 Ejemplo práctico: un juego de probabilidad (introducción a las enumeraciones)
229
06_MAQ_CAP_06.indd229
4/19/081:22:18AM