/* Written by Nick Exner * * Free to distribute */ import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class randomDice extends java.applet.Applet { boolean statusNum = false; int diceNum=1, sideNum=2; public void init() { ChoiceB c= new ChoiceB(); c.addItem("2"); c.addItem("4"); c.addItem("6"); c.addItem("8"); ChoiceA d= new ChoiceA(); d.addItem("1"); d.addItem("2"); d.addItem("3"); d.addItem("4"); d.addItem("5"); d.addItem("6"); d.addItem("7"); d.addItem("8"); d.addItem("9"); d.addItem("10"); d.addItem("50"); d.addItem("100"); d.addItem("1000"); d.addItem("10000"); d.addItem("100000"); add(new Label("Select Number of Sides: ")); add(c); add(new Label(" ")); add(new Label("Select Number of Dice Rolled: ")); add(d); add(new Label(" ")); add(new Button("Calculate")); } public void paint( Graphics g) { if (statusNum == true){ int number=0,xpos=150,ypos=150; int countStat[] = new int [sideNum]; for (int kk=0;kk < sideNum;kk++) countStat[kk]=0; if (diceNum < 10) { for(int i=0;i < diceNum;i++) { number =1+(int) (Math.random() * sideNum); // countStat[number-1]=countStat[number-1]+1; if (i==3){ xpos-=120; ypos=150; } if (i==6){ xpos+=240; ypos=150; } g.drawString(number + " ", xpos+25,ypos+25); if (sideNum==2) { g.drawRect(xpos, ypos, 50,50); } if (sideNum==4) { g.drawLine(xpos+25, ypos-15, xpos+50,ypos+35); g.drawLine(xpos+25, ypos-15, xpos,ypos+35); g.drawLine(xpos+50, ypos+35, xpos,ypos+35); g.drawLine(xpos+50,ypos+35,xpos+75,ypos); g.drawLine(xpos+75,ypos,xpos+25,ypos-15); } if (sideNum==6) { g.drawRect(xpos,ypos,50,50); g.drawLine(xpos, ypos, xpos+25, ypos-25); g.drawLine(xpos+50, ypos, xpos+75, ypos-25); g.drawLine(xpos+75, ypos-25, xpos+25, ypos-25); g.drawLine(xpos+50, ypos+50, xpos+75, ypos+25); g.drawLine(xpos+75, ypos+25, xpos+75, ypos-25); //g.fillOval(xpos+9,ypos-8,7,7); //top left one //g.fillOval(xpos+48,ypos-22,7,7); //top one } ypos+=90; } } else { // End bracket if less 10 for(int i=0;i < diceNum;i++) { number =1+(int) (Math.random() * sideNum); countStat[number-1]++; //=countStat[number-1]+1; } g.drawString("Number Rolled",xpos-120,ypos); g.drawString("Number of Occurances",xpos,ypos); g.drawString("Percentage",xpos+160,ypos); for (int k=0;k < sideNum;k++) { g.drawString((k+1) + " ", xpos-120,(k*13+ypos+13)); g.drawString(" "+countStat[k],xpos,(k*13+ypos+13)); g.drawString(" "+(countStat[k]/(diceNum*.01)), xpos+160,(k*13+ypos+13)); } } statusNum = false; } } public boolean action(Event evt, Object arg) { if (evt.target instanceof ChoiceA){ diceNum = Integer.parseInt((String)arg); } if (evt.target instanceof ChoiceB){ sideNum = Integer.parseInt((String)arg); } if (evt.target instanceof Button){ statusNum = true; repaint(); } return true; } } class ChoiceA extends Choice { } class ChoiceB extends Choice { }