leendert/src/main/java/nl/minkema/leendert/Dice.java

188 lines
7.1 KiB
Java

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;
}
}