Tuesday, September 14, 2010

HW 2 Solution

Here is my solution to HW 2.


import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class Dice extends JPanel{

 
/** The number the dice is showing. 0 for nothing */
 
public int number;

 
/** The radius of the dots in the dice. */
 
public static final int RADIUS = 10;

 
/** Draw the dice.
  *  50,50       */

 
public void paintComponent(Graphics g) {
 
int height = getHeight();
  g
.setColor(Color.black);
  g
.drawRect(50, 50, 200, 200); //A 200x200 square offset by 50,50.
 
switch (number) {
 
case 0:
   
break;
 
case 5: //compiler will optimize these
   g
.drawOval(100-RADIUS, 100-RADIUS, RADIUS*2, RADIUS*2); //top left
   g
.drawOval(200-RADIUS, 200-RADIUS, RADIUS*2, RADIUS*2); //bottom right
 
case 3:
   g
.drawOval(200-RADIUS, 100-RADIUS, RADIUS*2, RADIUS*2); //top right
   g
.drawOval(100-RADIUS, 200-RADIUS, RADIUS*2, RADIUS*2); //bottom left
 
case 1:
   g
.drawOval(150-RADIUS, 150-RADIUS, RADIUS*2, RADIUS*2); //center
   
break;
 
case 6:
   g
.drawOval(100-RADIUS, 150-RADIUS, RADIUS*2, RADIUS*2); //center left
   g
.drawOval(200-RADIUS, 150-RADIUS, RADIUS*2, RADIUS*2); //center right
 
case 4:
   g
.drawOval(100-RADIUS, 100-RADIUS, RADIUS*2, RADIUS*2); //top left
   g
.drawOval(200-RADIUS, 200-RADIUS, RADIUS*2, RADIUS*2); //bottom right
 
case 2:
   g
.drawOval(200-RADIUS, 100-RADIUS, RADIUS*2, RADIUS*2); //top right
   g
.drawOval(100-RADIUS, 200-RADIUS, RADIUS*2, RADIUS*2); //bottom left
   
break;
 
}
 
}


 
/**
  * @param args are ignored
  */

 
public static void main(String[] args) {
 
JFrame frame = new JFrame("Roll Them Bones");
  frame
.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
Dice panel = new Dice();
  frame
.add(panel);
  frame
.setSize(300, 300); //create a window that is 300px horizontally by 200px vertically.
  frame
.setVisible(true);
 
do {
   
try {
    panel
.number = Integer.parseInt(JOptionPane.showInputDialog("Enter number for the dice, or 0 to quit:"));
    frame
.repaint(); //don't forget to re-paint it!
   
} catch (NumberFormatException e) { //if the user types in something other than an integer, or clicks "cancel"
   
System.exit(0);

   
}
 
}
 
while (panel.number != 0);
 
System.exit(0); //without this the program won't end, cse its a GUI program.
 
}
}

No comments: