188 lines
7.1 KiB
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;
|
|
}
|
|
|
|
}
|