Merge branch 'development' of https://github.com/PTE-SH/ShadowHunterGame into development

This commit is contained in:
Paul Gross 2020-05-06 17:50:12 +02:00
commit 9fca28f7bb
9 changed files with 131 additions and 29 deletions

View File

@ -1,5 +1,5 @@
jouer=Jouer jouer=Jouer
regles=Régles regles=Règles
commencer.partie=Commencer la partie commencer.partie=Commencer la partie
entrez.nom.joueur= Entrez le nom des joueurs entrez.nom.joueur= Entrez le nom des joueurs
nombre.joueur.minimum=(Il faut au moins 4 joueurs) nombre.joueur.minimum=(Il faut au moins 4 joueurs)

View File

@ -1,5 +1,5 @@
jouer=Jouer jouer=Jouer
regles=Régles regles=Règles
commencer.partie=Commencer la partie commencer.partie=Commencer la partie
entrez.nom.joueur= Entrez le nom des joueurs entrez.nom.joueur= Entrez le nom des joueurs
nombre.joueur.minimum=(Il faut au moins 4 joueurs) nombre.joueur.minimum=(Il faut au moins 4 joueurs)

View File

@ -6,25 +6,32 @@ import java.io.InputStream;
import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem; import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip; import javax.sound.sampled.Clip;
import javax.sound.sampled.FloatControl;
public class Musique { public class Musique {
public static Clip clip; public static Clip clip;
public static long clipTimePosition = 0; public static long clipTimePosition = 0;
public static boolean musiqueEnCours = false;
static FloatControl volume ;
public static void playMusique(InputStream path) { public static void playMusique(InputStream path) {
try { try {
InputStream musicPath = path; InputStream musicPath = path;
if (musicPath!=null) { if (musicPath != null) {
InputStream bufferedIn = new BufferedInputStream(musicPath); InputStream bufferedIn = new BufferedInputStream(musicPath);
AudioInputStream audioInput = AudioSystem.getAudioInputStream(bufferedIn); AudioInputStream audioInput = AudioSystem.getAudioInputStream(bufferedIn);
clip = AudioSystem.getClip(); clip = AudioSystem.getClip();
clip.open(audioInput); clip.open(audioInput);
volume = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
volume.setValue(-20.0f); // Reduit le volume de 20 decibels.
clip.start(); clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY); clip.loop(Clip.LOOP_CONTINUOUSLY);
@ -46,5 +53,13 @@ public class Musique {
clip.setMicrosecondPosition(clipTimePosition); clip.setMicrosecondPosition(clipTimePosition);
clip.start(); clip.start();
} }
public static void volumeUp(Float valeur) {
volume.setValue(volume.getValue() +valeur);
}
public static void volumeDown(Float valeur) {
volume.setValue(volume.getValue() -valeur);
}
} }

View File

@ -30,6 +30,8 @@ public class MenuController implements Initializable{
input = getClass().getResourceAsStream("/ihm/ressources/img/logo.png"); input = getClass().getResourceAsStream("/ihm/ressources/img/logo.png");
Image image = new Image(input); Image image = new Image(input);
titre.setImage(image); titre.setImage(image);
} }
@FXML @FXML

View File

@ -31,7 +31,7 @@ public class ParametreController implements Initializable {
public static boolean cbMusiqueCoche = false; // verifi si la checbox musical est coche public static boolean cbMusiqueCoche = false; // verifi si la checbox musical est coche
public static boolean cbSonCoche = false; public static boolean cbSonCoche = false;
boolean MusiqueLancee = false; //verifi si la musique a déja été lancé une première fois boolean MusiqueLancee = false; //verifi si la musique a déja été lancé une première fois
String filepathMusique = "/ihm/ressources/musique/The_Red_Fox_Tavern.wav"; // lien vers la musique : https://www.youtube.com/watch?v=LBpKUIyOHdo String filepathMusique = "/ihm/ressources/musique/The_Red_Fox_Tavern.wav"; // lien vers la musique : https://www.youtube.com/watch?v=LBpKUIyOHdo
InputStream fileMusique = getClass().getResourceAsStream("/ihm/ressources/musique/The_Red_Fox_Tavern.wav"); InputStream fileMusique = getClass().getResourceAsStream("/ihm/ressources/musique/The_Red_Fox_Tavern.wav");
@ -42,6 +42,7 @@ public class ParametreController implements Initializable {
@Override @Override
public void initialize(URL arg0, ResourceBundle arg1) { public void initialize(URL arg0, ResourceBundle arg1) {
langues.getItems().add("Anglais"); langues.getItems().add("Anglais");
langues.getItems().add("Allemand"); langues.getItems().add("Allemand");
langues.getItems().add("Espagnol"); langues.getItems().add("Espagnol");
@ -59,11 +60,12 @@ public class ParametreController implements Initializable {
if (cmusique.isSelected() == true) { if (cmusique.isSelected() == true) {
cbMusiqueCoche = true; cbMusiqueCoche = true;
if (Musique.clipTimePosition == 0 && MusiqueLancee == false) { // si la musique n'a jamais été lancé if (Musique.clipTimePosition == 0 && MusiqueLancee == false && Musique.musiqueEnCours != true) { // si la musique n'a jamais été lancé
Musique.playMusique(fileMusique); Musique.playMusique(fileMusique);
Musique.musiqueEnCours = true;
MusiqueLancee = true; MusiqueLancee = true;
} else { } else if (Musique.musiqueEnCours != true) {
Musique.resumeMusique(Musique.clip); // si elle a deja été lancé mais mis en pause, reprend a partir du point d'arret Musique.resumeMusique(Musique.clip); // si elle a deja été lancé mais mis en pause, reprend a partir du point d'arret
} }
@ -71,6 +73,7 @@ public class ParametreController implements Initializable {
if (cbMusiqueCoche == true) { if (cbMusiqueCoche == true) {
cbMusiqueCoche = false; cbMusiqueCoche = false;
Musique.pauseMusique(Musique.clip); //met en pause la musique Musique.pauseMusique(Musique.clip); //met en pause la musique
Musique.musiqueEnCours = false;
} }
} }
@ -134,5 +137,17 @@ public class ParametreController implements Initializable {
} }
@FXML
public void monterVolume(MouseEvent mouseEvent) throws IOException{
Musique.volumeUp(5.f);
System.out.println("on monte le son");
}
@FXML
public void baisserVolume(MouseEvent mouseEvent) throws IOException{
Musique.volumeDown(5.f);
System.out.println("on baisse le son");
}
} }

View File

@ -32,7 +32,7 @@ public class PauseController implements Initializable {
boolean MusiqueLancee = ParametreController.cbMusiqueCoche; boolean MusiqueLancee = ParametreController.cbMusiqueCoche;
boolean SonLance = ParametreController.cbSonCoche; boolean SonLance = ParametreController.cbSonCoche;
@Override @Override
public void initialize(URL arg0, ResourceBundle arg1) { public void initialize(URL arg0, ResourceBundle arg1) {
@ -55,18 +55,22 @@ public class PauseController implements Initializable {
if (fileMusique != null) { if (fileMusique != null) {
if (cbMusique.isSelected()) { if (cbMusique.isSelected()) {
System.out.println("\tLancement de la musique"); System.out.println("\tLancement de la musique");
if (Musique.clipTimePosition == 0 && MusiqueLancee == false) { // si la musique n'a jamais été lancé if (Musique.clipTimePosition == 0 && MusiqueLancee == false && Musique.musiqueEnCours != true) { // si la musique n'a jamais été lancé
Musique.playMusique(fileMusique); Musique.playMusique(fileMusique);
Musique.musiqueEnCours = true;
MusiqueLancee = true; MusiqueLancee = true;
} else } else if (MusiqueLancee ==false && Musique.musiqueEnCours != true) {
Musique.resumeMusique(Musique.clip); // si elle a deja été lancé mais mis en pause, reprend a partir du point d'arret Musique.resumeMusique(Musique.clip); // si elle a deja été lancé mais mis en pause, reprend a partir du point d'arret
} else { }
} else if (MusiqueLancee == true){
Musique.pauseMusique(Musique.clip); // met en pause la musique Musique.pauseMusique(Musique.clip); // met en pause la musique
Musique.musiqueEnCours = false;
MusiqueLancee = false;
System.out.println("\tMise en pause de la musique"); System.out.println("\tMise en pause de la musique");
} }
} } else {
else {
System.out.println("fichier audio non trouvé"); System.out.println("fichier audio non trouvé");
} }
@ -98,12 +102,23 @@ public class PauseController implements Initializable {
System.err.println("Fin de partie"); System.err.println("Fin de partie");
Stage appStage = (Stage) ((Node) me.getSource()).getScene().getWindow(); Stage appStage = (Stage) ((Node) me.getSource()).getScene().getWindow();
appStage.close(); appStage.close();
final URL fxmlURL = getClass().getResource("/ihm/ressources/Menu.fxml"); final URL fxmlURL = getClass().getResource("/ihm/ressources/Menu.fxml");
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRENCH); final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRENCH);
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
AnchorPane root = fxmlLoader.load(); AnchorPane root = fxmlLoader.load();
}
@FXML
public void monterVolume(MouseEvent mouseEvent) throws IOException{
Musique.volumeUp(5.f);
System.out.println("on monte le son");
}
@FXML
public void baisserVolume(MouseEvent mouseEvent) throws IOException{
Musique.volumeDown(5.f);
System.out.println("on baisse le son");
} }
} }

View File

@ -39,14 +39,18 @@ public class ReglesControlleur implements Initializable {
@FXML @FXML
public void pageSuivante(MouseEvent mouseEvent) throws IOException { public void pageSuivante(MouseEvent mouseEvent) throws IOException {
InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav");
EffetSonore.playSoundEffect(fileSound1);
if (index < 4) { if (index < 4) {
index++; index++;
InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav");
EffetSonore.playSoundEffect(fileSound1);
System.out.println("Page suivante");
} else {
InputStream fileSound2 = getClass().getResourceAsStream("/ihm/ressources/musique/BeepError.wav");
EffetSonore.playSoundEffect(fileSound2);
System.out.println("C'est la dernière page!");
} }
System.out.println("Page suivante");
InputStream input = getClass().getResourceAsStream("/ihm/ressources/img/Regle" + index + ".png"); InputStream input = getClass().getResourceAsStream("/ihm/ressources/img/Regle" + index + ".png");
Image image = new Image(input); Image image = new Image(input);
imageRegles.setImage(image); imageRegles.setImage(image);
@ -55,14 +59,18 @@ public class ReglesControlleur implements Initializable {
@FXML @FXML
public void pagePrecedente(MouseEvent mouseEvent) throws IOException { public void pagePrecedente(MouseEvent mouseEvent) throws IOException {
InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav");
EffetSonore.playSoundEffect(fileSound1);
if (index > 1) { if (index > 1) {
index--; index--;
InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav");
EffetSonore.playSoundEffect(fileSound1);
System.out.println("Page précédente");
} else {
InputStream fileSound2 = getClass().getResourceAsStream("/ihm/ressources/musique/BeepError.wav");
EffetSonore.playSoundEffect(fileSound2);
System.out.println("C'est la première page!");
} }
System.out.println("Page précédente");
InputStream input = getClass().getResourceAsStream("/ihm/ressources/img/Regle" + index + ".png"); InputStream input = getClass().getResourceAsStream("/ihm/ressources/img/Regle" + index + ".png");
Image image = new Image(input); Image image = new Image(input);
imageRegles.setImage(image); imageRegles.setImage(image);

View File

@ -9,7 +9,6 @@
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="480.0" prefWidth="640.0" style="-fx-border-color: white; -fx-background-color: black;" stylesheets="@style/popUp.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.PauseController"> <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="480.0" prefWidth="640.0" style="-fx-border-color: white; -fx-background-color: black;" stylesheets="@style/popUp.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.PauseController">
<children> <children>
<VBox alignment="TOP_CENTER" prefHeight="480.0" prefWidth="640.0"> <VBox alignment="TOP_CENTER" prefHeight="480.0" prefWidth="640.0">
@ -46,6 +45,29 @@
<Insets bottom="5.0" /> <Insets bottom="5.0" />
</VBox.margin> </VBox.margin>
</HBox> </HBox>
<HBox prefHeight="38.0" prefWidth="337.0">
<children>
<Button mnemonicParsing="false" onMouseClicked="#monterVolume" text="Volume +">
<font>
<Font size="14.0" />
</font>
<HBox.margin>
<Insets right="10.0" />
</HBox.margin>
</Button>
<Button mnemonicParsing="false" onMouseClicked="#baisserVolume" text="Volume -">
<font>
<Font size="14.0" />
</font>
<HBox.margin>
<Insets left="10.0" />
</HBox.margin>
</Button>
</children>
<padding>
<Insets bottom="10.0" top="10.0" />
</padding>
</HBox>
<HBox alignment="CENTER_LEFT"> <HBox alignment="CENTER_LEFT">
<children> <children>
<Label text="Effet sonores"> <Label text="Effet sonores">

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?> <?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.ComboBox?> <?import javafx.scene.control.ComboBox?>
@ -13,12 +14,29 @@
<children> <children>
<HBox alignment="TOP_CENTER" layoutX="146.0" layoutY="171.0" prefHeight="242.0" prefWidth="507.0" spacing="10.0"> <HBox alignment="TOP_CENTER" layoutX="146.0" layoutY="171.0" prefHeight="242.0" prefWidth="507.0" spacing="10.0">
<children> <children>
<VBox prefHeight="309.0" prefWidth="127.0" spacing="50.0"> <VBox prefHeight="348.0" prefWidth="195.0" spacing="40.0">
<children> <children>
<CheckBox fx:id="clair" mnemonicParsing="false" styleClass="checkBox" text="%mode.claire" /> <CheckBox fx:id="clair" mnemonicParsing="false" styleClass="checkBox" text="%mode.claire" />
<CheckBox fx:id="cmusique" mnemonicParsing="false" styleClass="checkBox" text="%musique" /> <CheckBox fx:id="cmusique" mnemonicParsing="false" styleClass="checkBox" text="%musique" />
<HBox alignment="CENTER_LEFT" prefHeight="100.0" prefWidth="195.0">
<children>
<Button mnemonicParsing="false" onMouseClicked="#monterVolume" styleClass="bouton" stylesheets="@style/menu.css" text="Volume +">
<opaqueInsets>
<Insets />
</opaqueInsets>
<HBox.margin>
<Insets right="10.0" />
</HBox.margin>
</Button>
<Button layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onMouseClicked="#baisserVolume" styleClass="bouton" stylesheets="@style/menu.css" text="Volume -">
<HBox.margin>
<Insets left="10.0" />
</HBox.margin>
</Button>
</children>
</HBox>
<CheckBox fx:id="cbEffetSonore" mnemonicParsing="false" styleClass="checkBox" text="%effet" /> <CheckBox fx:id="cbEffetSonore" mnemonicParsing="false" styleClass="checkBox" text="%effet" />
<VBox prefHeight="200.0" prefWidth="100.0" spacing="10.0"> <VBox prefHeight="86.0" prefWidth="195.0" spacing="10.0">
<children> <children>
<Label styleClass="titre" text="%langue"> <Label styleClass="titre" text="%langue">
<font> <font>
@ -27,7 +45,15 @@
</Label> </Label>
<ComboBox fx:id="langues" prefHeight="26.0" prefWidth="90.0" /> <ComboBox fx:id="langues" prefHeight="26.0" prefWidth="90.0" />
</children> </children>
<VBox.margin>
<Insets />
</VBox.margin>
</VBox> </VBox>
<HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0">
<children>
<Button alignment="CENTER" mnemonicParsing="false" onMouseClicked="#enregistre" styleClass="bouton" stylesheets="@style/menu.css" text="%enregistrer" />
</children>
</HBox>
</children> </children>
</VBox> </VBox>
</children> </children>
@ -37,6 +63,5 @@
<Font size="36.0" /> <Font size="36.0" />
</font> </font>
</Label> </Label>
<Button layoutX="340.0" layoutY="525.0" mnemonicParsing="false" onMouseClicked="#enregistre" styleClass="bouton" stylesheets="@style/menu.css" text="%enregistrer" />
</children> </children>
</Pane> </Pane>