diff --git a/projet_linea/Niveaux.db b/projet_linea/Niveaux.db deleted file mode 100644 index 909dd82..0000000 Binary files a/projet_linea/Niveaux.db and /dev/null differ diff --git a/projet_linea/UserScoreBDD.db b/projet_linea/UserScoreBDD.db deleted file mode 100644 index 278ab96..0000000 Binary files a/projet_linea/UserScoreBDD.db and /dev/null differ diff --git a/projet_linea/bin/GestionAudio.class b/projet_linea/bin/GestionAudio.class new file mode 100644 index 0000000..5af7c65 Binary files /dev/null and b/projet_linea/bin/GestionAudio.class differ diff --git a/projet_linea/bin/Jeu.class b/projet_linea/bin/Jeu.class index 2c08254..fe5b39d 100644 Binary files a/projet_linea/bin/Jeu.class and b/projet_linea/bin/Jeu.class differ diff --git a/projet_linea/bin/Niveau.class b/projet_linea/bin/Niveau.class index b7f0f89..d609dc6 100644 Binary files a/projet_linea/bin/Niveau.class and b/projet_linea/bin/Niveau.class differ diff --git a/projet_linea/bin/NiveauxDataConnect.class b/projet_linea/bin/NiveauxDataConnect.class index d7ac474..07337fa 100644 Binary files a/projet_linea/bin/NiveauxDataConnect.class and b/projet_linea/bin/NiveauxDataConnect.class differ diff --git a/projet_linea/bin/musiques/musique_theme_ciel.wav b/projet_linea/bin/musiques/musique_theme_ciel.wav new file mode 100644 index 0000000..a6adb4a Binary files /dev/null and b/projet_linea/bin/musiques/musique_theme_ciel.wav differ diff --git a/projet_linea/bin/musiques/musique_theme_espace.wav b/projet_linea/bin/musiques/musique_theme_espace.wav new file mode 100644 index 0000000..9a2891e Binary files /dev/null and b/projet_linea/bin/musiques/musique_theme_espace.wav differ diff --git a/projet_linea/bin/musiques/musique_theme_montagnes.wav b/projet_linea/bin/musiques/musique_theme_montagnes.wav new file mode 100644 index 0000000..2612b5d Binary files /dev/null and b/projet_linea/bin/musiques/musique_theme_montagnes.wav differ diff --git a/projet_linea/bin/musiques/musique_theme_volcan.wav b/projet_linea/bin/musiques/musique_theme_volcan.wav new file mode 100644 index 0000000..c76be66 Binary files /dev/null and b/projet_linea/bin/musiques/musique_theme_volcan.wav differ diff --git a/projet_linea/src/GestionAudio.java b/projet_linea/src/GestionAudio.java new file mode 100644 index 0000000..e9c7624 --- /dev/null +++ b/projet_linea/src/GestionAudio.java @@ -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'"); + } +} diff --git a/projet_linea/src/Jeu.java b/projet_linea/src/Jeu.java index b4719ca..379d246 100644 --- a/projet_linea/src/Jeu.java +++ b/projet_linea/src/Jeu.java @@ -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{ diff --git a/projet_linea/src/Niveau.java b/projet_linea/src/Niveau.java index 59c7c94..6100698 100644 --- a/projet_linea/src/Niveau.java +++ b/projet_linea/src/Niveau.java @@ -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; + } } diff --git a/projet_linea/src/NiveauxDataConnect.java b/projet_linea/src/NiveauxDataConnect.java index b549612..d59e339 100644 --- a/projet_linea/src/NiveauxDataConnect.java +++ b/projet_linea/src/NiveauxDataConnect.java @@ -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); } } diff --git a/projet_linea/src/musiques/musique_theme_ciel.wav b/projet_linea/src/musiques/musique_theme_ciel.wav new file mode 100644 index 0000000..a6adb4a Binary files /dev/null and b/projet_linea/src/musiques/musique_theme_ciel.wav differ diff --git a/projet_linea/src/musiques/musique_theme_espace.wav b/projet_linea/src/musiques/musique_theme_espace.wav new file mode 100644 index 0000000..9a2891e Binary files /dev/null and b/projet_linea/src/musiques/musique_theme_espace.wav differ diff --git a/projet_linea/src/musiques/musique_theme_montagnes.wav b/projet_linea/src/musiques/musique_theme_montagnes.wav new file mode 100644 index 0000000..2612b5d Binary files /dev/null and b/projet_linea/src/musiques/musique_theme_montagnes.wav differ diff --git a/projet_linea/src/musiques/musique_theme_volcan.wav b/projet_linea/src/musiques/musique_theme_volcan.wav new file mode 100644 index 0000000..c76be66 Binary files /dev/null and b/projet_linea/src/musiques/musique_theme_volcan.wav differ