Roll Your Own
<< War Game | OtherProjectsTrailIndex | Practice ProblemWord Morph >>
...Die, that is! Click Here to see it in action
Die.java
import java.awt.*;
/**
* A six sided Die.
*
* @author Chris Thiel, OFMCap
* @version 21 Aug 2010
*/
public class Die
{
// instance variables -
private int size;
private int x; //top left corner
private int y;
private int pips;
private Graphics g;
private Color color;
/**
* Constructor for objects of class Die
*/
public Die(Graphics g, int x, int y, int size)
{
this.g=g;
this.size=size;
this.x=x;
this.y=y;
this.pips=(int)(Math.random()*6.0)+1;
this.color=Color.WHITE;
}
public void setColor(Color c)
{
this.color=c;
}
public void draw()
{
g.setColor(color);
g.fillRect(x,y,size,size);
g.setColor(Color.BLACK);
g.drawRect(x,y,size,size);
g.setColor(Color.BLACK);
int dotSize=size/7;
if (pips%2==1){
g.fillOval(x+3*dotSize, y+3*dotSize, dotSize,dotSize);
}
if (pips>1){
g.fillOval(x+dotSize, y+dotSize, dotSize,dotSize);
g.fillOval(x+5*dotSize, y+5*dotSize, dotSize,dotSize);
}
if (pips>3){
g.fillOval(x+dotSize, y+5*dotSize, dotSize,dotSize);
g.fillOval(x+5*dotSize, y+dotSize, dotSize,dotSize);
}
if (pips==6){
g.fillOval(x+dotSize, y+3*dotSize, dotSize,dotSize);
g.fillOval(x+5*dotSize, y+3*dotSize, dotSize,dotSize);
}
}
}
Roll.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;
/**
* Class Roll - click to roll a single 6-sided die
*
* @author Chris Thiel, OFMCap
* @version 21 Aug 2010 Applet Version
* @version 25 Sep 2024 Application Version
*/
public class Roll extends Frame implements MouseListener, ActionListener
{
// instance variables - replace the example below with your own
private Die d;
private Button rollButton;
private int count;
private Timer timer;
public Roll()
{
super("Roll version 1.0");
this.setSize(500,500);
this.addMouseListener(this);
count = -1;
timer = new Timer(800,this);
timer.start();
this.addWindowListener(new WindowListener() {
public void windowClosing(WindowEvent e) {System.exit(0);}
public void windowClosed(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
});
}
/**
* Paint method
*
* @param g the Graphics object for this applet
*/
public void paint(Graphics g)
{
// simple text displayed on applet
g.setColor(new Color(150, 75, 25));
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.ORANGE);
g.drawString("Click to", 20, 40);
g.setColor(Color.YELLOW);
g.drawString("Roll Dice", 20, 60);
if (count > 0)
{
count--;
d = new Die (g, 100,50, 150 );
d.setColor(Color.ORANGE);
d.draw();
g.drawString("pips = "+ d.getPips(), 20, 80);
g.setColor(Color.YELLOW);
repaint();
}else{
d = new Die (g, 100,50,150);
d.draw();
g.setColor(Color.CYAN);
g.drawString("pips = "+ d.getPips(), 20, 80);
}
}
// 5 MouseListener methods that NEED to be implemented since our Applet implements the MouseListener interface
public void mouseReleased(MouseEvent e)
{
count = (int)(Math.random()*3500.0)+1500;
repaint();
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
// Method required to implement the Action Listener
// for the timer
public void actionPerformed(ActionEvent e) {
if (count > 0){
repaint();
timer.start();
} else
timer.stop();
}
public static void main(String[] args)
{
Roll app= new Roll();
app.setVisible(true);
}
}
now you try!
- Change Roll.java so the die is smaller
- Change Roll.java so the die is off to the left
- Make another instance of die (maybe call it d2), and draw it to the right of d
