ajouts listeners

This commit is contained in:
Vincent
2024-10-27 21:11:44 +01:00
parent bef0b378b5
commit 68e99b9cfc
81 changed files with 172 additions and 24 deletions

View File

@@ -1,21 +1,39 @@
package main;
import view.*;
import view.*;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.*;
import java.net.URL;
/**
* Classe principale du programme qui initialise l'interface utilisateur
* et joue un fichier audio en boucle.
*/
public class Main {
/**
* Point d'entrée du programme. Initialise l'interface utilisateur
* et démarre la lecture en boucle de la musique de fond.
*
* @param args les arguments de ligne de commande (non utilisés)
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
MenuView menuView = new MenuView();
App.addView(menuView, App.MENU_VIEW);
App.showView(App.MENU_VIEW);
String filepath = "/java/Music/audio.wav";
PlayMusic(filepath);
});
}
/**
* Joue un fichier audio en boucle.
*
* @param location le chemin d'accès au fichier audio à jouer
*/
public static void PlayMusic(String location) {
try {
URL url = Main.class.getResource(location);
@@ -24,6 +42,7 @@ public class Main {
Clip clip = AudioSystem.getClip();
clip.open(audioInput);
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY); // Boucle en continu
} else {
System.out.println("Fichier audio introuvable");
}

View File

@@ -107,6 +107,10 @@ java/controller/AllScore.class: java/controller/AllScore.java
### RÈGLE POUR COPIER LES IMAGES ###
Music:
mkdir -p classes/java/Music
if [ -d java/Music ]; then cp -r java/Music/* classes/java/Music/; else echo "Le répertoire java/Music n'existe pas."; fi
copy-images:
mkdir -p classes/java/view/img
if [ -d java/view/img ]; then cp -r java/view/img/* classes/java/view/img/; else echo "Le répertoire java/view/img n'existe pas."; fi
@@ -119,7 +123,8 @@ $(MANIFEST_FILE):
### ARCHIVE JAR ###
Main.jar: Main.class copy-images $(MANIFEST_FILE)
Main.jar: Main.class copy-images Music $(MANIFEST_FILE)
mkdir -p classes/java/Music/
mkdir -p classes/java/view/img
jar cfm Main.jar $(MANIFEST_FILE) -C classes .
@@ -131,9 +136,10 @@ run: Main.class copy-images
clean:
-rm -f classes/**/*.class
-rm -rf classes/java/view/img
-rm -rf classes/Music
### BUTS FACTICES ###
.PHONY: run clean copy-images
### FIN ###
### FIN ###

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,39 @@
package controller;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
/**
* Listener de souris pour le bouton de retour dans l'interface de score.
* Change la couleur de fond du bouton lorsqu'il est survolé.
*/
public class BackButtonMouseListener extends MouseAdapter {
private final JButton button;
private final Color hoverColor;
private final Color normalColor;
/**
* Constructeur de <code>BackButtonMouseListener</code>.
*
* @param button Le bouton cible.
* @param hoverColor La couleur de fond du bouton lors du survol.
* @param normalColor La couleur de fond normale du bouton.
*/
public BackButtonMouseListener(JButton button, Color hoverColor, Color normalColor) {
this.button = button;
this.hoverColor = hoverColor;
this.normalColor = normalColor;
}
@Override
public void mouseEntered(MouseEvent e) {
button.setBackground(hoverColor);
}
@Override
public void mouseExited(MouseEvent e) {
button.setBackground(normalColor);
}
}

View File

@@ -0,0 +1,22 @@
package controller;
import view.MenuView;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Listener pour le bouton Nouveaux Jeu dans le menu principal.
*/
public class NewGameButtonListener implements ActionListener {
private final MenuView menuView;
public NewGameButtonListener(MenuView menuView) {
this.menuView = menuView;
}
@Override
public void actionPerformed(ActionEvent e) {
menuView.toggleHowToPlay();
}
}

View File

@@ -0,0 +1,16 @@
package controller;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Listener pour le bouton Quitter dans le menu principal.
* Ferme l'application lorsqu'il est activé.
*/
public class QuitButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0); // Ferme l'application
}
}

View File

@@ -0,0 +1,22 @@
package controller;
import view.MenuView;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Listener pour le bouton Reprendre la partie dans le menu principal.
*/
public class ResumeButtonListener implements ActionListener {
private final MenuView menuView;
public ResumeButtonListener(MenuView menuView) {
this.menuView = menuView;
}
@Override
public void actionPerformed(ActionEvent e) {
menuView.showSeriesButtons();
}
}

View File

@@ -0,0 +1,30 @@
package controller;
import view.App;
import view.GameView;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Listener pour les boutons de sélection de séries dans le menu principal.
*/
public class SeriesButtonListener implements ActionListener {
private final int seriesId;
private final SeriesSelector seriesSelector;
public SeriesButtonListener(int seriesId, SeriesSelector seriesSelector) {
this.seriesId = seriesId;
this.seriesSelector = seriesSelector;
}
@Override
public void actionPerformed(ActionEvent e) {
GameView gameView = new GameView(seriesId);
App.addView(gameView, App.GAME_VIEW);
App.showView(App.GAME_VIEW);
if (seriesSelector != null) {
seriesSelector.startGameWithSeries(seriesId);
}
}
}

View File

@@ -1,6 +1,10 @@
package view;
import controller.SeriesSelector;
import controller.ResumeButtonListener;
import controller.NewGameButtonListener;
import controller.SeriesButtonListener;
import controller.QuitButtonListener;
import javax.swing.*;
import java.awt.*;
@@ -59,7 +63,7 @@ public class MenuView extends JPanel {
/**
* Affiche ou masque le panneau "Comment jouer".
*/
private void toggleHowToPlay() {
public void toggleHowToPlay() {
seriesPanel.setVisible(false);
howToPlayPanel.setVisible(!howToPlayPanel.isVisible());
centeredPanel.removeAll();
@@ -102,8 +106,10 @@ public class MenuView extends JPanel {
quitButton.setOpaque(true);
quitButton.setFocusPainted(false);
resumeButton.addActionListener(e -> showSeriesButtons());
newGameButton.addActionListener(e -> toggleHowToPlay());
// Utilisation des listeners dans des fichiers séparés
resumeButton.addActionListener(new ResumeButtonListener(this));
newGameButton.addActionListener(new NewGameButtonListener(this));
quitButton.addActionListener(new QuitButtonListener()); // Ajout du listener pour le bouton Quitter
howToPlayPanel = createHowToPlayPanel();
howToPlayPanel.setVisible(false);
@@ -183,14 +189,7 @@ public class MenuView extends JPanel {
for (int i = 1; i <= 4; i++) {
int seriesId = i;
BtnPerso seriesButton = new BtnPerso("Série " + seriesId);
seriesButton.addActionListener(e -> {
GameView gameView = new GameView(seriesId);
App.addView(gameView, App.GAME_VIEW);
App.showView(App.GAME_VIEW);
if (seriesSelector != null) {
seriesSelector.startGameWithSeries(seriesId);
}
});
seriesButton.addActionListener(new SeriesButtonListener(seriesId, seriesSelector));
seriesButton.addMouseListener(new ButtonHoverListener());
panel.add(seriesButton);

View File

@@ -1,11 +1,12 @@
// src/main/java/view/ScoreView.java
package view;
import controller.AllScore;
import controller.BackButtonMouseListener;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.Collections;
import controller.AllScore;
/**
* La classe <code>ScoreView</code> représente l'interface utilisateur
@@ -78,15 +79,9 @@ public class ScoreView extends JPanel {
// Bouton de retour au menu
BtnPerso backButton = new BtnPerso("Retour au Menu");
backButton.addActionListener(e -> App.showView(App.MENU_VIEW));
backButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
backButton.setBackground(hoverColor);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
backButton.setBackground(normalColor);
}
});
// Ajout de BackButtonMouseListener pour le survol
backButton.addMouseListener(new BackButtonMouseListener(backButton, hoverColor, normalColor));
// Panneau de score actuel
JPanel currentScorePanel = new JPanel();