package nl.minkema.leendert; import javafx.scene.Group; import javafx.scene.paint.Color; import javafx.scene.shape.Arc; import javafx.scene.shape.Circle; import javafx.scene.shape.Ellipse; import javafx.scene.shape.Line; import java.util.Random; /** * @author J0QUE * @author Tripsas * @version 2.0 */ public class Dice extends Group { private final Random r; private Group ladybah = new Group(); private Group dotPattern1 = new Group(); private Group dotPattern2 = new Group(); private Group dotPattern3 = new Group(); private Group dotPattern5 = new Group(); private Group dotPattern6 = new Group(); private Group klaver = new Group(); /** * Dit is de constructor van onze dobbelsteen * De dobbelsteen is helemaal gemaakt met basisvormen door Nathan, daarna een beetje aangepast door Julius * * @param x de x-coördinaat van de dobbelsteen * @param y de y-coördinaat van de dobbelsteen */ public Dice(int x, int y) { this.r = new Random(System.currentTimeMillis()); this.setTranslateX(x); this.setTranslateY(y); Ellipse mainEll = new Ellipse(50, 50, 40, 50); mainEll.setFill(Color.DARKRED); Ellipse headEll1 = new Ellipse(34, 11, 6, 4); headEll1.setFill(Color.WHITE); Ellipse headEll2 = new Ellipse(66, 11, 6, 4); headEll2.setFill(Color.WHITE); Ellipse headEll3 = new Ellipse(44, 5, 3, 2); headEll3.setFill(Color.WHITE); Ellipse headEll4 = new Ellipse(56, 5, 3, 2); headEll4.setFill(Color.WHITE); Arc arc = new Arc(50, 20, 30, 20, 10, 160); Line lineBack = new Line(50, 20, 50, 100); Line lineHead1 = new Line(44, 0, 38, -3); Line lineHead2 = new Line(56, 0, 62, -3); this.ladybah.getChildren().add(mainEll); this.ladybah.getChildren().add(arc); this.ladybah.getChildren().add(lineBack); this.ladybah.getChildren().add(headEll1); this.ladybah.getChildren().add(headEll2); this.ladybah.getChildren().add(headEll3); this.ladybah.getChildren().add(headEll4); this.ladybah.getChildren().add(lineHead1); this.ladybah.getChildren().add(lineHead2); Circle circle1 = new Circle(50, 50, 15); this.dotPattern1.getChildren().add(circle1); Circle circle2 = new Circle(33, 50, 10); Circle circle3 = new Circle(67, 65, 8); this.dotPattern2.getChildren().add(circle2); this.dotPattern2.getChildren().add(circle3); Circle circle4 = new Circle(50, 30, 7); Circle circle5 = new Circle(30, 50, 10); Circle circle6 = new Circle(60, 70, 12); this.dotPattern3.getChildren().add(circle4); this.dotPattern3.getChildren().add(circle5); this.dotPattern3.getChildren().add(circle6); Circle circle7 = new Circle(45, 30, 5); Circle circle8 = new Circle(67, 38, 10); Circle circle9 = new Circle(37, 68, 14); Circle circle10 = new Circle(68, 77, 9); Circle circle11 = new Circle(30, 40, 8); this.dotPattern5.getChildren().add(circle7); this.dotPattern5.getChildren().add(circle8); this.dotPattern5.getChildren().add(circle9); this.dotPattern5.getChildren().add(circle10); this.dotPattern5.getChildren().add(circle11); Circle circle12 = new Circle(63, 33, 9); Circle circle13 = new Circle(35, 32, 8); Circle circle14 = new Circle(72, 55, 11); Circle circle15 = new Circle(26, 53, 9); Circle circle16 = new Circle(60, 74, 8); Circle circle17 = new Circle(35, 78, 10); this.dotPattern6.getChildren().add(circle12); this.dotPattern6.getChildren().add(circle13); this.dotPattern6.getChildren().add(circle14); this.dotPattern6.getChildren().add(circle15); this.dotPattern6.getChildren().add(circle16); this.dotPattern6.getChildren().add(circle17); Ellipse klaverLeaf1 = new Ellipse(25, 50, 25, 15); klaverLeaf1.setFill(Color.GREEN); Ellipse klaverLeaf2 = new Ellipse(75, 50, 25, 15); klaverLeaf2.setFill(Color.GREEN); Ellipse klaverLeaf3 = new Ellipse(50, 25, 15, 25); klaverLeaf3.setFill(Color.GREEN); Ellipse klaverLeaf4 = new Ellipse(50, 75, 15, 25); klaverLeaf4.setFill(Color.GREEN); Arc klaverArcStam = new Arc(50, 100, 25, 50, 90, 160); klaverArcStam.setStroke(Color.GREEN); klaverArcStam.setStrokeWidth(3); klaverArcStam.setFill(Color.TRANSPARENT); Arc klaverArc1 = new Arc(25, 50, 24, 4, 0, 180); klaverArc1.setStroke(Color.DARKGREEN); klaverArc1.setStrokeWidth(3); klaverArc1.setFill(Color.TRANSPARENT); Arc klaverArc2 = new Arc(75, 50, 24, 4, 0, 180); klaverArc2.setStroke(Color.DARKGREEN); klaverArc2.setStrokeWidth(3); klaverArc2.setFill(Color.TRANSPARENT); Arc klaverArc3 = new Arc(50, 25, 4, 24, 90, -180); klaverArc3.setStroke(Color.DARKGREEN); klaverArc3.setStrokeWidth(3); klaverArc3.setFill(Color.TRANSPARENT); Arc klaverArc4 = new Arc(50, 75, 4, 24, 90, -180); klaverArc4.setStroke(Color.DARKGREEN); klaverArc4.setStrokeWidth(3); klaverArc4.setFill(Color.TRANSPARENT); this.klaver.getChildren().add(klaverLeaf1); this.klaver.getChildren().add(klaverLeaf2); this.klaver.getChildren().add(klaverLeaf3); this.klaver.getChildren().add(klaverLeaf4); this.klaver.getChildren().add(klaverArcStam); this.klaver.getChildren().add(klaverArc1); this.klaver.getChildren().add(klaverArc2); this.klaver.getChildren().add(klaverArc3); this.klaver.getChildren().add(klaverArc4); roll(); } /** * @return Dit is de functie die het rollen van de dobbelsteen op zich neemt. */ public int roll() { //We willen een getal tussen 0 en 6 int roll = r.nextInt(6); //We maken eerst de groep leeg this.getChildren().clear(); //Als er 3 uit de roll komt, en we dus 4 zeggen, willen we een klavertje 4 laten zien if (roll == 3) { this.getChildren().add(klaver); } else { //Maar anders gaan we voor een lieveheersbeestje this.getChildren().add(ladybah); //Dit zijn alle afzonderlijke patronen switch (roll) { case 0: this.getChildren().add(dotPattern1); break; case 1: this.getChildren().add(dotPattern2); break; case 2: this.getChildren().add(dotPattern3); break; case 4: this.getChildren().add(dotPattern5); break; case 5: this.getChildren().add(dotPattern6); break; //Dit zou wel heel bijzonder zijn default: System.out.println("Error drawing die"); } } //En aan het eind nemen we de roll en tellen we er één bij op. return roll + 1; } }