//Aplicativo que utiliza o jogo de Craps da figura 6.9
import java.util.Random;
public class Exerc7_18_JCP {
//variável para lançamento dos dados
private Random randomNumbers = new Random();
//enum para mostra o status do jogo
private enum Status {CONTINUE, WON, LOST};
//constante que representam lançamentos comuns dos dados
private final static int SNAKE_EYES = 2;
private final static int TRAY = 3;
private final static int SEVEN = 7;
private final static int YO_ELEVEN = 11;
private final static int BOX_CARS = 12;
int cont[] = new int[3];
int frequenci[] = new int[5];
int frequenci1[] = new int[5];
//joga uma partida de Craps
public void play(){
cont[1] = 0; cont[2] = 0; cont[0] = 0;
for(int i=0; i < frequenci.length; i++)
frequenci[i] = 0;
for(int j=0; j < frequenci1.length; j++)
frequenci1[j] = 0;
int myPoint = 0; //contagem dos pontos
Status gameStatus; //pode conter CONTINUE, LOST ou WON
int sumOfDice = rollDice(); //primeira rolagem dos dados
switch (sumOfDice){
case SEVEN:
case YO_ELEVEN:
gameStatus = Status.WON; break;
case SNAKE_EYES:
case TRAY:
case BOX_CARS:
gameStatus = Status.LOST; break;
default:
gameStatus = Status.CONTINUE;
myPoint = sumOfDice;
System.out.println("minha pontuação é: "+myPoint);
break; //não é necessário no último case
}
contagem(gameStatus);
contagem2();
//enquanto o jogo continuar, ou seja, não estiver completo
while (gameStatus == Status.CONTINUE){
sumOfDice = rollDice(); //lança os dados novamente
if(sumOfDice == myPoint)
gameStatus = Status.WON;
else if(sumOfDice == SEVEN)
gameStatus = Status.LOST;
contagem(gameStatus);
contagem2();
}
//exibe uma mensagem se perdeu ou ganhou
if(gameStatus == Status.WON)
System.out.println("Players wins");
else
System.out.println("Players loses");
contagemDosJogos();
}//fim do método play
public int rollDice(){
int die1 = 1 + randomNumbers.nextInt(6);
int die2 = 1 + randomNumbers.nextInt(6);
int sum = die1 + die2;
System.out.printf("Player rolled: %d + %d = %d\n",die1,die2,sum);
return sum;
}//fim do método roolDice
public void contagem(Status status){
if(status == Status.CONTINUE){
++cont[0];
}
else if(status == Status.LOST){
++cont[1];
}
else if(status == Status.WON)
{
++cont[2];
}
}//fim do metodo contagem
public void contagem2(){
int total1 = 0, total2 = 0;
total1 = cont[2];
total2 = cont[1];
switch(total1){
case 1:
++frequenci[0]; break;
case 2:
++frequenci[1]; break;
case 3:
++frequenci[2]; break;
case 4:
++frequenci[3]; break;
case 5:
++frequenci[4]; break;
}
switch(total2){
case 1:
++frequenci1[0]; break;
case 2:
++frequenci1[1]; break;
case 3:
++frequenci1[2]; break;
case 4:
++frequenci1[3]; break;
case 5:
++frequenci1[4]; break;
}
}
int todosJogos[] = new int[5];
int todosJogos1[] = new int[5];
public void contagemDosJogos(){
for(int i=0; i<todosJogos.length; i++)
todosJogos[i] += frequenci[i];
for(int i=0; i<todosJogos1.length; i++)
todosJogos1[i] += frequenci1[i];
}
}//fim da classe Craps
public class Testa_Exerc7_18_JCP {
public static void main(String args[]){
Exerc7_18_JCP game = new Exerc7_18_JCP();
int jogo[] = new int[5];
for(int i = 0; i < jogo.length; i++){
System.out.printf("\nJOGO %d:\n",i+1);
game.play();
}
System.out.printf("O número de jogos ganhos com uma rolagem é: %d\n",game.todosJogos[0]);
System.out.printf("O número de jogos perdidos com uma rolagem é: %d\n",game.todosJogos1[0]);
}
}
Peço desculpas se o codigo estiver um pouco confuso de entender.