lancer des

This commit is contained in:
Kruss
2020-05-12 15:30:04 +02:00
parent 985a085e74
commit 8963221080
15 changed files with 246 additions and 69 deletions

View File

@ -1,57 +1,125 @@
package ihm.controller;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.Random;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import ihm.Die;
import ihm.DieImages;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.event.ActionEvent;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.util.Duration;
import main.Contexte;
import main.GestionnaireJeu;
public class LancerDes implements Initializable{
@FXML private Label d6;
@FXML private Label d4;
@FXML private Button btnStop;
@FXML private Button btnLancer;
public class LancerDes {
private int resultat;
private Contexte contexte;
public LancerDes(Contexte c){
contexte = c;
}
private int[] valeurD6 = {1, 2, 3, 4, 5, 6};
private int[] valeurD4 = {1, 2, 3, 4};
public VBox initLancer() {
switch (contexte) {
case LANCER_DES_4:
return initLancerD4();
case LANCER_DES_6:
return initLancerD6();
default :
return null;
}
}
private int resultatD6;
private int resultatD4;
private boolean lancement = true;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
btnStop.setVisible(false);
btnLancer.setOnAction(e -> {
try {
btnLancer.setVisible(false);
btnStop.setVisible(true);
lancement();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
private VBox initLancerD4() {
DieImages images = new DieImages();
Die die = new Die(images.getImages());
ImageView stackpane = die.getdieFace();
stackpane.setFitHeight(100);
stackpane.setFitWidth(100);
Button btn = new Button();
Text txt = new Text("Lancez le dés pour attaquer");
txt.setFont(Font.font(null, null, null, 12));
txt.setFill(Color.WHITE);
btn.setText("Lancer dés");
btn.setOnAction((ActionEvent event) -> {
btn.setDisable(true);// Disable Button
Random random = new Random();
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(.3), (actionEvent) -> {
int tempRandom = random.nextInt(4) + 1;
die.setDieFace(tempRandom);
}));
timeline.setCycleCount(random.nextInt(20) + 1);
timeline.play();
timeline.setOnFinished(actionEvent -> {
int res = die.getCurrentFace();
txt.setText("Vous avez obtenu "+res+"!");
resultat = res;
GestionnaireJeu.notifyPlateau();
});
});
btnStop.setOnAction(e -> {
//à remplir avec les valeurs donné par le gestionnaire de jeux
lancement = false;
d6.setText(Integer.toString(resultatD6));
d4.setText(Integer.toString(resultatD4));
});
HBox des = new HBox(stackpane);
des.setAlignment(Pos.CENTER);
VBox root = new VBox(txt,des, new StackPane(btn));
root.setAlignment(Pos.CENTER);
root.setSpacing(20);
return root;
}
public void lancement() throws InterruptedException {
/*int i=0;
while (lancement) {
d6.setText(Integer.toString(valeurD6[i%6]));
d4.setText(Integer.toString(valeurD4[i%4]));
i++;
//Thread.sleep(500);
}*/
private VBox initLancerD6() {
DieImages images = new DieImages();
Die die = new Die(images.getImages());
Die die2 = new Die(images.getImages());
ImageView stackpane = die.getdieFace();
ImageView stackpane2 = die2.getdieFace();
stackpane.setFitHeight(100);
stackpane2.setFitHeight(100);
stackpane.setFitWidth(100);
stackpane2.setFitWidth(100);
Button btn = new Button();
Text txt = new Text("Lancez les dés pour vous deplacer");
txt.setFont(Font.font(null, null, null, 12));
txt.setFill(Color.WHITE);
btn.setText("Lancer dés");
btn.setOnAction((ActionEvent event) -> {
btn.setDisable(true);// Disable Button
Random random = new Random();
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(.3), (actionEvent) -> {
int tempRandom = random.nextInt(6) + 1;
int tempRandom2 = random.nextInt(6) + 1;
die.setDieFace(tempRandom);
die2.setDieFace(tempRandom2);
}));
timeline.setCycleCount(random.nextInt(20) + 1);
timeline.play();
timeline.setOnFinished(actionEvent -> {
int res = die.getCurrentFace()+die2.getCurrentFace();
txt.setText("Vous avez obtenu "+res+"!");
resultat = res;
GestionnaireJeu.notifyPlateau();
});
});
HBox des = new HBox(stackpane, stackpane2);
des.setAlignment(Pos.CENTER);
VBox root = new VBox(txt,des, new StackPane(btn));
root.setAlignment(Pos.CENTER);
root.setSpacing(20);
return root;
}
public int getResult() {
return resultat;
}
}