Ajout de la musique de fond (crédits : DorfRomantik)

This commit is contained in:
Loris BALOCCHI 2024-05-21 14:25:08 +02:00
parent f05622747d
commit 69661d2398
4 changed files with 51 additions and 35 deletions

View File

@ -0,0 +1,39 @@
package com.charpentierbalocchi.dorfjavatik.util;
import javax.sound.sampled.*;
import java.io.IOException;
import java.net.URL;
public class MusicPlayer {
private Clip clip;
public MusicPlayer(String musicPath) {
try {
// Charger le fichier audio
URL url = getClass().getResource(musicPath);
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(url);
// Obtenir un clip audio
clip = AudioSystem.getClip();
clip.open(audioInputStream);
} catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {
e.printStackTrace();
}
}
// Méthode pour démarrer la lecture
public void play() {
if (clip != null) {
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY); // Boucler continuellement la musique
}
}
// Méthode pour arrêter la lecture
public void stop() {
if (clip != null && clip.isRunning()) {
clip.stop();
}
}
}

View File

@ -2,6 +2,7 @@ package com.charpentierbalocchi.dorfjavatik.view;
import com.charpentierbalocchi.dorfjavatik.controller.ControleurJeu; import com.charpentierbalocchi.dorfjavatik.controller.ControleurJeu;
import com.charpentierbalocchi.dorfjavatik.model.Tuile; import com.charpentierbalocchi.dorfjavatik.model.Tuile;
import com.charpentierbalocchi.dorfjavatik.util.MusicPlayer;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
@ -18,6 +19,7 @@ public class FenetreJeu extends JFrame {
private ControleurJeu controleurJeu; // Instance du contrôleur de jeu private ControleurJeu controleurJeu; // Instance du contrôleur de jeu
private JPanel panelPlateau; // Panneau pour le plateau de jeu private JPanel panelPlateau; // Panneau pour le plateau de jeu
private JPanel panelTuileCourante; // Panneau pour la tuile courante private JPanel panelTuileCourante; // Panneau pour la tuile courante
private MusicPlayer musicPlayer; // Instance du lecteur de musique
public FenetreJeu(int taillePlateau) { public FenetreJeu(int taillePlateau) {
super("DorfJavaTik"); // Titre de la fenêtre super("DorfJavaTik"); // Titre de la fenêtre
@ -30,6 +32,9 @@ public class FenetreJeu extends JFrame {
setSize(1300, 1000); // Fixe la taille de la fenêtre à 1300 x 1000 setSize(1300, 1000); // Fixe la taille de la fenêtre à 1300 x 1000
setLocationRelativeTo(null); // Centre la fenêtre sur l'écran setLocationRelativeTo(null); // Centre la fenêtre sur l'écran
setVisible(true); // Rendre la fenêtre visible setVisible(true); // Rendre la fenêtre visible
// Démarrer la musique de fond
musicPlayer = new MusicPlayer("/com/charpentierbalocchi/dorfjavatik/resources/PleasantHill.wav");
musicPlayer.play();
} }
private void initUI() { private void initUI() {
@ -167,6 +172,13 @@ public class FenetreJeu extends JFrame {
labelScore.setText("Score: " + score); labelScore.setText("Score: " + score);
} }
public void dispose() {
super.dispose();
if (musicPlayer != null) {
musicPlayer.stop();
}
}
public Tuile getTuileCourante() { public Tuile getTuileCourante() {
return tuileCourante; return tuileCourante;
} }

View File

@ -1,35 +0,0 @@
package tests;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class Debut {
public static void main(String[] args) {
JFrame fenetre = new JFrame();
fenetre.setSize(500, 300);
fenetre.setLocation(0, 0);
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel etiquette = new JLabel();
etiquette.setHorizontalAlignment(JLabel.RIGHT);
etiquette.setVerticalAlignment(JLabel.BOTTOM);
fenetre.add(etiquette, BorderLayout.CENTER);
JButton Nouveau = new JButton("Nouvelle Partie");
etiquette.setHorizontalAlignment(JLabel.RIGHT);
etiquette.setVerticalAlignment(JLabel.BOTTOM);
fenetre.add(etiquette, BorderLayout.SOUTH);
fenetre.setVisible(true);
/*
* public void actionPerformed(ActionEvent e){
* String action=e.getActionCommand();
* if(action.equals("Nouvelle Partie")){
* // Do something
* }
*/
}
}