add gestion sound level
This commit is contained in:
67
projet_linea/src/GestionAudio.java
Normal file
67
projet_linea/src/GestionAudio.java
Normal file
@@ -0,0 +1,67 @@
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
// Cette classe peremt de gérer la lecture, l'arrêt et la répétition(loop)
|
||||
//---------------------------------------------------------------------------------
|
||||
|
||||
import java.net.URL;
|
||||
import javax.sound.sampled.AudioInputStream;
|
||||
import javax.sound.sampled.AudioSystem;
|
||||
import javax.sound.sampled.Clip;
|
||||
|
||||
public class GestionAudio {
|
||||
|
||||
// Clip est une interface qui hérite de DataLine
|
||||
private static Clip clip;
|
||||
|
||||
//Propriété de la musique actuelle
|
||||
private static String musiqueActuelle = "";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Méthode pour jouer la musique
|
||||
//------------------------------------------------------------------------------
|
||||
public static void jouerMusique(String cheminDansSrc){
|
||||
// Si la musique demandée joue déjà, on ne fait rien
|
||||
if(cheminDansSrc.equals(musiqueActuelle)){
|
||||
return;
|
||||
}
|
||||
|
||||
// On arrête la musique précédente
|
||||
stop();
|
||||
|
||||
// Sinon, on met la bonne musique
|
||||
try {
|
||||
// On récupère l'audio depuis src
|
||||
URL urlSound = GestionAudio.class.getResource("/" + cheminDansSrc);
|
||||
// On vérifie si on a bien récupéré une musique
|
||||
// Si c'est le cas
|
||||
if(urlSound != null){
|
||||
// On transforme le fichier URL du fichier en flux audio lisible ar JAVA
|
||||
// Autrement dit: On prépare le fichier pour la lecture sonore
|
||||
AudioInputStream ais = AudioSystem.getAudioInputStream(urlSound);
|
||||
// Création d'un objet Clip permettant de ouer du son court en mémoire
|
||||
clip = AudioSystem.getClip();
|
||||
// On charge le fluc audio dans le clip
|
||||
// Le son est prêt à être joué
|
||||
clip.open(ais);
|
||||
clip.loop(clip.LOOP_CONTINUOUSLY); // On fait jouer en boucle infinie
|
||||
clip.start(); // On démarre l'audio
|
||||
musiqueActuelle = cheminDansSrc; // Notre musique Actuelle a déjà une valeur
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("Erreur Audio: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Méthode pour arrêter la musique
|
||||
//------------------------------------------------------------------------------s
|
||||
private static void stop() {
|
||||
if(clip != null){
|
||||
clip.stop();
|
||||
clip.close();
|
||||
musiqueActuelle = "";
|
||||
}
|
||||
throw new UnsupportedOperationException("Unimplemented method 'stop'");
|
||||
}
|
||||
}
|
||||
@@ -328,12 +328,14 @@ public class Jeu implements KeyListener, ActionListener{
|
||||
|
||||
// On corse le jeu avec son ID
|
||||
//On applique les paramètres aux options de jeu
|
||||
GestionAudio.jouerMusique(niveauEnCours.getMusiqueNiveau());
|
||||
this.laLigne.generer(niveauEnCours.getNbSegments(), niveauEnCours.getId());
|
||||
this.laLigne.setVitesseLigne(niveauEnCours.getVitesseLigne()); // On modifie la vitesse de déplacement
|
||||
this.demiCercleAvant.setCouleur(niveauEnCours.getCouleurCercle());
|
||||
this.demiCercleArriere.setCouleur(niveauEnCours.getCouleurCercle());
|
||||
this.ecran.changerImageFond(niveauEnCours.getImage());
|
||||
this.itemCourant.vitesse = niveauEnCours.getVitesseLigne();
|
||||
|
||||
|
||||
|
||||
}else{
|
||||
|
||||
@@ -7,9 +7,10 @@ public class Niveau {
|
||||
private String image;
|
||||
private int multiplicateurScore;
|
||||
private String couleurCercle;
|
||||
private String musqiueNiveau;
|
||||
|
||||
// Constructeur de la classe Niveau
|
||||
public Niveau(int id, String nom, int vitesseLigne, int nbSegments, String image, int multiplicateurScore, String couleurCercle) {
|
||||
public Niveau(int id, String nom, int vitesseLigne, int nbSegments, String image, int multiplicateurScore, String couleurCercle, String musiqueNiveau) {
|
||||
this.id = id;
|
||||
this.nom = nom;
|
||||
this.vitesseLigne = vitesseLigne;
|
||||
@@ -17,6 +18,7 @@ public class Niveau {
|
||||
this.image = image;
|
||||
this.multiplicateurScore = multiplicateurScore;
|
||||
this.couleurCercle = couleurCercle;
|
||||
this.musqiueNiveau = musiqueNiveau;
|
||||
}
|
||||
|
||||
// Getters pour les propriétés du niveau
|
||||
@@ -47,5 +49,9 @@ public class Niveau {
|
||||
public String getCouleurCercle() {
|
||||
return couleurCercle;
|
||||
}
|
||||
|
||||
public String getMusiqueNiveau(){
|
||||
return musqiueNiveau;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -103,6 +103,7 @@ public class NiveauxDataConnect {
|
||||
+ "image TEXT NOT NULL, " /*image du niveau*/
|
||||
+ "multiplicateur_score INTEGER, " /*multiplier le score en fonction du niveau*/
|
||||
+ "couleur_cercle TEXT NOT NULL " /*Couleur du cercle en fonctiond du niveau */
|
||||
+ "musique_theme TEXT NOT NULL" /*Musique du thème du niveau */
|
||||
+");" ;
|
||||
|
||||
try (Statement stmt = conn.createStatement()) {
|
||||
@@ -123,25 +124,27 @@ public class NiveauxDataConnect {
|
||||
// dans la base de données pour éviter de les insérer à chaque fois que
|
||||
// le jeu est lancé
|
||||
// Pour corser le jeu, on utilisera l'id du niveau qui nous servira de difficulté
|
||||
// --------------------------------Niveau 1 --------------------------------
|
||||
// nom = "Facile", vitesse_ligne = 5, nb_segments = 50, image = "images\ciel.jpeg", multiplicateur_score = 10, couleur_cercle = "bleu"
|
||||
// --------------------------------Niveau 2 --------------------------------
|
||||
// nom = "intermédaire", vitesse_ligne = 7, nb_segments = 100, image = "images\montagnes.jpg", multiplicateur_score = 20, couleur_cercle = "gris"
|
||||
// --------------------------------Niveau 3 --------------------------------
|
||||
// nom = "Difficile", vitesse_ligne = 9, nb_segments = 100, image = "images\volcan.jpg", multiplicateur_score = 30, couleur_cercle = "marron"
|
||||
// --------------------------------Niveau 4 --------------------------------
|
||||
// nom = "Ultime", vitesse_ligne = 10, nb_segments = 150, image = "images\espace.jpg", multiplicateur_score = 50, couleur_cercle = "violet"
|
||||
// -------------------------------------------------------------------------
|
||||
// --------------------------------Niveau 1 ---------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// nom = "Facile", vitesse_ligne = 5, nb_segments = 50, image = "images\ciel.jpeg", multiplicateur_score = 10, couleur_cercle = "bleu", musique = "musiques\musique_theme_ciel.wav"
|
||||
// --------------------------------Niveau 2 ---------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// nom = "intermédaire", vitesse_ligne = 7, nb_segments = 100, image = "images\montagnes.jpg", multiplicateur_score = 20, couleur_cercle = "gris", musique = "musiques\musique_theme_montagnes.wav"
|
||||
// --------------------------------Niveau 3 ---------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// nom = "Difficile", vitesse_ligne = 9, nb_segments = 100, image = "images\volcan.jpg", multiplicateur_score = 30, couleur_cercle = "marron", musique = "musiques\musique_theme_volcan.wav"
|
||||
// --------------------------------Niveau 4 ---------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// nom = "Ultime", vitesse_ligne = 10, nb_segments = 150, image = "images\espace.jpg", multiplicateur_score = 50, couleur_cercle = "violet", musique = "musiques\musique_theme_espace.wav"
|
||||
// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
public static void insererNiveau(Connection conn) {
|
||||
String query1 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) "
|
||||
+ "VALUES('Facile', 5, 50, 'images/ciel.jpeg', 10, '#0000FF');";
|
||||
String query1 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle, musique_theme) "
|
||||
+ "VALUES('Facile', 5, 50, 'images/ciel.jpeg', 10, '#0000FF', 'musiques/musique_theme_ciel.wav');";
|
||||
|
||||
String query2 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) "
|
||||
+ "VALUES('Intermédiaire', 7, 100, 'images/montagnes.jpg', 20, '#808080');";
|
||||
String query3 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) "
|
||||
+ "VALUES('Difficile', 9, 100, 'images/volcan.jpg', 30, '#8B4513');";
|
||||
String query4 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle) "
|
||||
+ "VALUES('Ultime', 10, 150, 'images/espace.jpg', 50, '#9400D3');";
|
||||
String query2 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle, musique_theme) "
|
||||
+ "VALUES('Intermédiaire', 7, 100, 'images/montagnes.jpg', 20, '#808080', 'musiques/musique_theme_montagnes.wav');";
|
||||
|
||||
String query3 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle, musique_theme) "
|
||||
+ "VALUES('Difficile', 9, 100, 'images/volcan.jpg', 30, '#8B4513', 'musiques/musique_theme_volcan.wav');";
|
||||
|
||||
String query4 = "INSERT INTO niveau(nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle, musique_theme) "
|
||||
+ "VALUES('Ultime', 10, 150, 'images/espace.jpg', 50, '#9400D3', 'musiques/musique_theme_espace.wav');";
|
||||
|
||||
try (Statement stmt = conn.createStatement()) {
|
||||
stmt.execute(query1);
|
||||
@@ -175,7 +178,8 @@ public class NiveauxDataConnect {
|
||||
String image = rs.getString("image");
|
||||
int multiplicateur_score = rs.getInt("multiplicateur_score");
|
||||
String couleur_cercle = rs.getString("couleur_cercle");
|
||||
niveauRecup = new Niveau(id1, nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle);
|
||||
String musique_niveau = rs.getString("musique_theme");
|
||||
niveauRecup = new Niveau(id1, nom, vitesse_ligne, nb_segments, image, multiplicateur_score, couleur_cercle, musique_niveau);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BIN
projet_linea/src/musiques/musique_theme_ciel.wav
Normal file
BIN
projet_linea/src/musiques/musique_theme_ciel.wav
Normal file
Binary file not shown.
BIN
projet_linea/src/musiques/musique_theme_espace.wav
Normal file
BIN
projet_linea/src/musiques/musique_theme_espace.wav
Normal file
Binary file not shown.
BIN
projet_linea/src/musiques/musique_theme_montagnes.wav
Normal file
BIN
projet_linea/src/musiques/musique_theme_montagnes.wav
Normal file
Binary file not shown.
BIN
projet_linea/src/musiques/musique_theme_volcan.wav
Normal file
BIN
projet_linea/src/musiques/musique_theme_volcan.wav
Normal file
Binary file not shown.
Reference in New Issue
Block a user