Programming Craps Stage 2 - Making the Point

NEEDS SHORTER LINES
  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
 61 
 62 
 63 
 64 
 65 
 66 
 67 
 68 
 69 
 70 
 71 
 72 
 73 
 74 
 75 
 76 
 77 
 78 
 79 
 80 
 81 
// File   :flow-switch/craps/CrapsDialog.java
// Purpose: A simple Craps program to show use of switch and loops.
// Author : Fred Swartz, April 2007, Placed in the public domain.

import javax.swing.*;

public class CrapsDialog {
    public static void main(String[] args) {
        //... Variables to hold the results of rolling the dice.
        int die1;
        int die2;
        int total;
        
        //... Counters for total number of wins and loses.
        int won = 0;
        int lost = 0;
        
        //... Keep track of the user response.
        int response;
        
        JOptionPane.showMessageDialog(null, "Are you ready to start?");
        
        do {
            //... Roll the dice.
            die1 = (int) (Math.random() * 6) + 1;
            die2 = (int) (Math.random() * 6) + 1;
            total = die1 + die2;
            
            JOptionPane.showMessageDialog(null, "You rolled a " + die1 +
                                          " and a " + die2 +
                                          " for a total of " + total);
            
            //... Decide what the result is: win, lose, play for point.
            switch (total) {
                case 7:
                case 11:
                    //... WIN
                    won++;
                    JOptionPane.showMessageDialog(null, "Congratulations, you win!");
                    break;
                    
                case 2:
                case 3:
                case 12:
                    //... LOSE
                    lost++;
                    JOptionPane.showMessageDialog(null, "Sorry, you lose.");
                    break;
                    
                default:
                    //... PLAY FOR POINT
                    int point = total;
                    JOptionPane.showMessageDialog(null, "You must now roll for your point: " + point);
                    
                    do {
                        //... Roll the dice.
                        die1 = (int) (Math.random() * 6) + 1;
                        die2 = (int) (Math.random() * 6) + 1;
                        total = die1 + die2; 
                        
                        String comment = "";
                        if (total == point) {    
                            won++;
                            comment = "You win.";
                        } else if (total == 7) {
                            lost++;
                            comment = "You lose";
                            
                        } else {
                            comment = "You need to roll again to try to make your point.";
                        }
                        JOptionPane.showMessageDialog(null, "Your point is " + point +
                                                      "\nYou rolled a " + die1 + " and a " + die2 +
                                                      " for a total of " + total + "\n" + comment);
                    } while (total != point && total != 7);
                    
            }
            response = JOptionPane.showConfirmDialog(null, "Wins = " + won + ", lost = " + lost + "  Play again?");
        } while (response == JOptionPane.YES_OPTION);
    }
}