Roll Dice
Download
.jar filesource code
Java Code
Main.java
package dice; /** * Main.java * Created by Stijn Strickx on Feb. 16 2008 * Copyright 2008 Stijn Strickx, All rights reserved */ public class Main { public static void main(String[] args) { Dice dice = new Dice(); dice.start(); } }
ThrowDice.java
package dice; import java.util.Random; import java.util.TimerTask; import javax.swing.Icon; import javax.swing.JLabel; /** * ThrowDice.java * Created by Stijn Strickx on Feb. 16 2008 * Copyright 2008 Stijn Strickx, All rights reserved */ class ThrowDice extends TimerTask { private JLabel dice1; private JLabel dice2; private JLabel text; private Random rg = new Random(); private IconGetter getter; private int count; public ThrowDice(JLabel dice1, JLabel dice2, JLabel text) { this.dice1 = dice1; this.dice2 = dice2; this.text = text; count = 25; getter = new IconGetter(); } public void run(){ if(count > 0){ count --; int num1 = rg.nextInt(6); int num2 = rg.nextInt(6); Icon icon1 = getter.getIcon("stone" + (num1+1) + ".gif"); Icon icon2 = getter.getIcon("stone" + (num2+1) + ".gif"); dice1.setIcon(icon1); dice2.setIcon(icon2); text.setText("Total: " + (num1+num2+2)); } else{ this.cancel(); } } }
Dice.java
package dice; import java.awt.Container; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; /** * Dice.java * Created by Stijn Strickx on Feb. 16 2008 * Copyright 2008 Stijn Strickx, All rights reserved */ class Dice { private IconGetter getter; public Dice(){ getter = new IconGetter(); } public void start() { JLabel dice1 = new JLabel(getter.getIcon("stone1.gif")); JLabel dice2 = new JLabel(getter.getIcon("stone1.gif")); JButton button = new JButton("Throw"); JLabel text = new JLabel("Total: 2"); JFrame window = new JFrame("throw dice (c) Stijn Strickx"); Container cp = window.getContentPane(); cp.setLayout(new FlowLayout()); cp.add(dice1); cp.add(dice2); cp.add(button); cp.add(text); button.addActionListener(new ButtonListener(dice1, dice2, text)); window.pack(); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setVisible(true); } }
IconGetter.java
package dice; import javax.swing.Icon; import javax.swing.ImageIcon; /** * IconGetter.java * Created by Stijn Strickx on Feb. 16 2008 * Copyright 2008 Stijn Strickx, All rights reserved */ public class IconGetter { public Icon getIcon(String name){ return new ImageIcon(Dice.class.getResource("/dice/images/" + name)); } }
ButtonListener.java
package dice; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Timer; import javax.swing.JLabel; /** * ButtonListener.java * Created by Stijn Strickx on Feb. 16 2008 * Copyright 2008 Stijn Strickx, All rights reserved */ class ButtonListener implements ActionListener { private JLabel dice1; private JLabel dice2; private JLabel text; public ButtonListener(JLabel dice1, JLabel dice2, JLabel text) { this.dice1 = dice1; this.dice2 = dice2; this.text = text; } public void actionPerformed(ActionEvent e) { Timer timer = new Timer(); timer.scheduleAtFixedRate(new ThrowDice(dice1, dice2, text), 0, 100); } }