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