🔧 modifications de la fenêtre de jeu

This commit is contained in:
Loris BALOCCHI 2024-06-05 17:38:59 +02:00
parent 69661d2398
commit 8772e6475e
6 changed files with 96 additions and 11 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

47
makefile Normal file
View File

@ -0,0 +1,47 @@
# Variables
JAVAC = javac
JAR = jar
SRC_DIR = src
BIN_DIR = bin
MANIFEST = MANIFEST.MF
MAIN_CLASS = com.charpentierbalocchi.dorfjavatik.view.FenetreDemarrage
JAR_FILE = DorfJavaTik.jar
RESOURCES_DIR = src/com/charpentierbalocchi/dorfjavatik/resources
RESOURCES_BIN_DIR = bin/com/charpentierbalocchi/dorfjavatik/resources
# Règles
.PHONY: all clean jar run
all: classes
# Compilation des fichiers .class
classes:
@echo "Compilation des fichiers .java en .class..."
@mkdir -p $(BIN_DIR)
$(JAVAC) -d $(BIN_DIR) -encoding UTF-8 $(shell find $(SRC_DIR) -name "*.java")
@echo "Compilation terminée."
# Création du fichier JAR
jar: classes
@echo "Copie des ressources..."
@mkdir -p $(RESOURCES_BIN_DIR)
@cp -r $(RESOURCES_DIR)/* $(RESOURCES_BIN_DIR)
@echo "Création du fichier JAR..."
$(JAR) cfm $(JAR_FILE) $(MANIFEST) -C $(BIN_DIR) .
@echo "Fichier JAR créé : $(JAR_FILE)"
# Nettoyage des fichiers compilés et du JAR
clean:
@echo "Nettoyage des fichiers compilés..."
@rm -rf $(BIN_DIR)/*
@rm -f $(JAR_FILE)
@echo "Nettoyage terminé."
# Exécution du fichier JAR
run: jar
@echo "Exécution du fichier JAR..."
@java -jar $(JAR_FILE)
# Crée le fichier MANIFEST.MF avec la classe principale
manifest:
@echo "Main-Class: $(MAIN_CLASS)" > $(MANIFEST)

View File

@ -31,6 +31,7 @@ public class ControleurJeu {
Tuile tuileCourante = fenetreJeu.getTuileCourante(); Tuile tuileCourante = fenetreJeu.getTuileCourante();
if (tuileCourante != null && plateau.placerTuile(tuileCourante, x, y)) { if (tuileCourante != null && plateau.placerTuile(tuileCourante, x, y)) {
int score = plateau.calculerScore(x, y, tuileCourante); int score = plateau.calculerScore(x, y, tuileCourante);
fenetreJeu.setScore(score);
fenetreJeu.setScore(plateau.getScore()); fenetreJeu.setScore(plateau.getScore());
fenetreJeu.updateBoard(x, y, tuileCourante); fenetreJeu.updateBoard(x, y, tuileCourante);
if (plateauEstComplet()) { if (plateauEstComplet()) {

View File

@ -38,10 +38,8 @@ public class FenetreDemarrage extends JFrame {
try { try {
int taille = Integer.parseInt(textField.getText()); int taille = Integer.parseInt(textField.getText());
if (taille == 1) { if (taille == 1) {
// Charger le GIF à partir du chemin de fichier String gifPath = "src/com/charpentierbalocchi/dorfjavatik/resources/image.gif";
String gifPath = "bin/com/charpentierbalocchi/dorfjavatik/resources/image.gif"; // Remplacer par
// le chemin
// correct
ImageIcon gifIcon = new ImageIcon(gifPath); ImageIcon gifIcon = new ImageIcon(gifPath);
// Vérifier si le GIF est chargé correctement // Vérifier si le GIF est chargé correctement
@ -74,7 +72,8 @@ public class FenetreDemarrage extends JFrame {
new FenetreJeu(taille); new FenetreJeu(taille);
dispose(); dispose();
} else { } else {
JOptionPane.showMessageDialog(null, "Veuillez entrer une taille de grille entre 1 et 15.", JOptionPane.showMessageDialog(null,
"Veuillez entrer une taille de grille comprise entre 1 et 15.",
"Erreur", JOptionPane.ERROR_MESSAGE); "Erreur", JOptionPane.ERROR_MESSAGE);
} }
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {

View File

@ -15,6 +15,11 @@ public class FenetreJeu extends JFrame {
private int taillePlateau; // Taille du plateau private int taillePlateau; // Taille du plateau
private TileButton[][] boutons; // Boutons représentant les cases du plateau private TileButton[][] boutons; // Boutons représentant les cases du plateau
private JLabel labelScore; // Label pour afficher le score private JLabel labelScore; // Label pour afficher le score
private JLabel labelBiome1; // Label pour afficher le biome 1
private JLabel labelBiome2; // Label pour afficher le biome 2
private JLabel labelBiome3; // Label pour afficher le biome 3
private JLabel labelBiome4; // Label pour afficher le biome 4
private JLabel labelBiome5; // Label pour afficher le biome 5
private Tuile tuileCourante; // La tuile actuellement proposée private Tuile tuileCourante; // La tuile actuellement proposée
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
@ -22,7 +27,7 @@ public class FenetreJeu extends JFrame {
private MusicPlayer musicPlayer; // Instance du lecteur de musique 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, par Juliette et Loris"); // Titre de la fenêtre
this.taillePlateau = taillePlateau; this.taillePlateau = taillePlateau;
initUI(); initUI();
this.controleurJeu = new ControleurJeu(this, taillePlateau); // Initialiser le contrôleur après la configuration this.controleurJeu = new ControleurJeu(this, taillePlateau); // Initialiser le contrôleur après la configuration
@ -33,7 +38,7 @@ public class FenetreJeu extends JFrame {
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 // Démarrer la musique de fond
musicPlayer = new MusicPlayer("/com/charpentierbalocchi/dorfjavatik/resources/PleasantHill.wav"); musicPlayer = new MusicPlayer("/com/charpentierbalocchi/dorfjavatik/resources/background.wav");
musicPlayer.play(); musicPlayer.play();
} }
@ -51,7 +56,6 @@ public class FenetreJeu extends JFrame {
final int y = j; final int y = j;
bouton.addActionListener(new ActionListener() { bouton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
// Logique de placement d'une tuile
controleurJeu.handleTilePlacement(x, y); controleurJeu.handleTilePlacement(x, y);
} }
}); });
@ -64,11 +68,31 @@ public class FenetreJeu extends JFrame {
// verticalement // verticalement
JPanel panelGauche = new JPanel(); JPanel panelGauche = new JPanel();
panelGauche.setLayout(new BoxLayout(panelGauche, BoxLayout.Y_AXIS)); panelGauche.setLayout(new BoxLayout(panelGauche, BoxLayout.Y_AXIS));
panelGauche.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); panelGauche.setBorder(BorderFactory.createEmptyBorder(20, 60, 20, 60));
labelScore = new JLabel("Score: 0"); labelScore = new JLabel("Score: 0");
labelScore.setAlignmentX(Component.CENTER_ALIGNMENT); labelScore.setAlignmentX(Component.CENTER_ALIGNMENT);
labelScore.setFont(new Font("Serif", Font.BOLD, 24)); // Définir la police plus grande pour le score labelScore.setFont(new Font("Serif", Font.BOLD, 24));
labelBiome1 = new JLabel("Rivières & Lacs : BLEU");
labelBiome1.setAlignmentX(Component.CENTER_ALIGNMENT);
labelBiome1.setFont(new Font("Serif", Font.PLAIN, 18));
labelBiome2 = new JLabel("Forêts : VERT");
labelBiome2.setAlignmentX(Component.CENTER_ALIGNMENT);
labelBiome2.setFont(new Font("Serif", Font.PLAIN, 18));
labelBiome3 = new JLabel("Champs : JAUNE");
labelBiome3.setAlignmentX(Component.CENTER_ALIGNMENT);
labelBiome3.setFont(new Font("Serif", Font.PLAIN, 18));
labelBiome4 = new JLabel("Villages : ROUGE");
labelBiome4.setAlignmentX(Component.CENTER_ALIGNMENT);
labelBiome4.setFont(new Font("Serif", Font.PLAIN, 18));
labelBiome5 = new JLabel("Montagnes : GRIS");
labelBiome5.setAlignmentX(Component.CENTER_ALIGNMENT);
labelBiome5.setFont(new Font("Serif", Font.PLAIN, 18));
panelTuileCourante = new JPanel() { panelTuileCourante = new JPanel() {
@Override @Override
@ -91,15 +115,29 @@ public class FenetreJeu extends JFrame {
controleurJeu.demarrerJeu(); controleurJeu.demarrerJeu();
} }
}); });
JButton boutonQuitter = new JButton("Quitter");
boutonQuitter.setAlignmentX(Component.CENTER_ALIGNMENT);
boutonQuitter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
panelGauche.add(Box.createVerticalGlue()); panelGauche.add(Box.createVerticalGlue());
panelGauche.add(labelScore); panelGauche.add(labelScore);
panelGauche.add(Box.createVerticalStrut(20)); // Espace entre les composants panelGauche.add(Box.createVerticalStrut(20)); // Espace entre les composants
panelGauche.add(panelTuileCourante); panelGauche.add(panelTuileCourante);
panelGauche.add(Box.createVerticalStrut(20)); // Espace entre les composants panelGauche.add(Box.createVerticalStrut(20));
panelGauche.add(boutonRecommencer); panelGauche.add(boutonRecommencer);
panelGauche.add(boutonQuitter);
panelGauche.add(Box.createVerticalGlue()); panelGauche.add(Box.createVerticalGlue());
panelGauche.add(labelBiome1);
panelGauche.add(labelBiome2);
panelGauche.add(labelBiome3);
panelGauche.add(labelBiome4);
panelGauche.add(labelBiome5);
panelPrincipal.add(panelGauche, BorderLayout.WEST); panelPrincipal.add(panelGauche, BorderLayout.WEST);
panelPrincipal.add(panelPlateau, BorderLayout.CENTER); panelPrincipal.add(panelPlateau, BorderLayout.CENTER);