🔧 nettoyage et fix du projet

This commit is contained in:
Loris BALOCCHI 2024-06-06 20:26:49 +02:00
parent 91a0b1e536
commit 91906e2afb
5 changed files with 51 additions and 92 deletions

View File

@ -10,3 +10,5 @@ Charpentier Juliette
[°v°] [°v°]
/[ ]\ /[ ]\
| | | |
javac -d output ./src/com/charpentierbalocchi/dorfjavatik

View File

@ -1,47 +1,36 @@
# Variables # Variables
JAVAC = javac
JAR = jar
SRC_DIR = src SRC_DIR = src
BIN_DIR = bin BIN_DIR = bin
MANIFEST = MANIFEST.MF JAVAC = javac
MAIN_CLASS = com.charpentierbalocchi.dorfjavatik.view.FenetreDemarrage JAVA = java
JAR_FILE = DorfJavaTik.jar JAVADOC = javadoc
RESOURCES_DIR = src/com/charpentierbalocchi/dorfjavatik/resources MAIN = com.charpentierbalocchi.dorfjavatik.view.FenetreDemarrage
RESOURCES_BIN_DIR = bin/com/charpentierbalocchi/dorfjavatik/resources
# Règles # Compilation flags
.PHONY: all clean jar run JFLAGS = -d $(BIN_DIR) -sourcepath $(SRC_DIR)
all: classes # Default rule
all: compile
# Compilation des fichiers .class # Rule to compile the java files
classes: compile:
@echo "Compilation des fichiers .java en .class..." @echo "Compiling Java source files..."
@mkdir -p $(BIN_DIR) @mkdir -p $(BIN_DIR)
$(JAVAC) -d $(BIN_DIR) -encoding UTF-8 $(shell find $(SRC_DIR) -name "*.java") @$(JAVAC) $(JFLAGS) $(SRC_DIR)/com/charpentierbalocchi/dorfjavatik/**/*.java
@echo "Compilation terminée."
# Création du fichier JAR # Rule to run the application
jar: classes run: compile
@echo "Copie des ressources..." @echo "Running the application..."
@mkdir -p $(RESOURCES_BIN_DIR) @$(JAVA) -cp $(BIN_DIR) $(MAIN)
@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 # Rule to generate Javadoc
javadoc:
@echo "Generating Javadoc..."
@$(JAVADOC) -d $(BIN_DIR)/docs -sourcepath $(SRC_DIR) -subpackages com.charpentierbalocchi.dorfjavatik
# Rule to clean the project
clean: clean:
@echo "Nettoyage des fichiers compilés..." @echo "Cleaning up..."
@rm -rf $(BIN_DIR)/* @rm -rf $(BIN_DIR)
@rm -f $(JAR_FILE)
@echo "Nettoyage terminé."
# Exécution du fichier JAR .PHONY: all compile run javadoc clean
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

@ -1,13 +0,0 @@
package com.charpentierbalocchi.dorfjavatik.main;
import com.charpentierbalocchi.dorfjavatik.view.FenetreDemarrage;
public class DorfJavaTik {
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new FenetreDemarrage();
}
});
}
}

View File

@ -22,24 +22,20 @@ public class FenetreDemarrage extends JFrame {
JPanel panelPrincipal = new JPanel(new BorderLayout()); JPanel panelPrincipal = new JPanel(new BorderLayout());
JLabel label = new JLabel("Entrez la taille de la grille (1-15):"); JLabel label = new JLabel("Entrez la taille de la grille (1-15):");
JTextField textField = new JTextField(); JTextField textField = new JTextField();
textField.setText("5"); // Définir la valeur par défaut à 5 textField.setText("5");
JButton button = new JButton("Démarrer la partie"); JButton button = new JButton("Démarrer la partie");
// Ajout des composants au panneau principal // Ajout des composants au panneau principal
panelPrincipal.add(label, BorderLayout.NORTH); panelPrincipal.add(label, BorderLayout.NORTH);
panelPrincipal.add(textField, BorderLayout.CENTER); panelPrincipal.add(textField, BorderLayout.CENTER);
panelPrincipal.add(button, BorderLayout.SOUTH); panelPrincipal.add(button, BorderLayout.SOUTH);
// Ajout du panneau principal à la fenêtre
add(panelPrincipal); add(panelPrincipal);
// Action listener pour le bouton
button.addActionListener(new ActionListener() { button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
try { try {
int taille = Integer.parseInt(textField.getText()); int taille = Integer.parseInt(textField.getText());
if (taille == 1) { if (taille == 1) {
String gifPath = "/com/charpentierbalocchi/dorfjavatik/resources/image.gif"; String gifPath = "src/com/charpentierbalocchi/dorfjavatik/resources/image.gif";
ImageIcon gifIcon = new ImageIcon(gifPath); ImageIcon gifIcon = new ImageIcon(gifPath);

View File

@ -12,42 +12,37 @@ import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent; import java.awt.event.ComponentEvent;
public class FenetreJeu extends JFrame { public class FenetreJeu extends JFrame {
private int taillePlateau; // Taille du plateau private int taillePlateau;
private TileButton[][] boutons; // Boutons représentant les cases du plateau private TileButton[][] boutons;
private JLabel labelScore; // Label pour afficher le score private JLabel labelScore;
private JLabel labelBiome1; // Label pour afficher le biome 1 private JLabel labelBiome1;
private JLabel labelBiome2; // Label pour afficher le biome 2 private JLabel labelBiome2;
private JLabel labelBiome3; // Label pour afficher le biome 3 private JLabel labelBiome3;
private JLabel labelBiome4; // Label pour afficher le biome 4 private JLabel labelBiome4;
private JLabel labelBiome5; // Label pour afficher le biome 5 private JLabel labelBiome5;
private Tuile tuileCourante; // La tuile actuellement proposée private Tuile tuileCourante;
private ControleurJeu controleurJeu; // Instance du contrôleur de jeu private ControleurJeu controleurJeu;
private JPanel panelPlateau; // Panneau pour le plateau de jeu private JPanel panelPlateau;
private JPanel panelTuileCourante; // Panneau pour la tuile courante private JPanel panelTuileCourante;
private MusicPlayer musicPlayer; // Instance du lecteur de musique private MusicPlayer musicPlayer;
public FenetreJeu(int taillePlateau) { public FenetreJeu(int taillePlateau) {
super("DorfJavaTik, par Juliette et Loris"); // Titre de la fenêtre super("DorfJavaTik, par Juliette et Loris");
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);
// de l'interface controleurJeu.demarrerJeu();
controleurJeu.demarrerJeu(); // Démarrer le jeu après l'initialisation setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Ferme l'application à la fermeture de la fenêtre setSize(1300, 1000);
setSize(1300, 1000); // Fixe la taille de la fenêtre à 1300 x 1000 setResizable(false);
setResizable(false); // Empêche le redimensionnement de la fenêtre setLocationRelativeTo(null);
setLocationRelativeTo(null); // Centre la fenêtre sur l'écran setVisible(true);
setVisible(true); // Rendre la fenêtre visible
// Démarrer la musique de fond
musicPlayer = new MusicPlayer("/com/charpentierbalocchi/dorfjavatik/resources/background.wav"); musicPlayer = new MusicPlayer("/com/charpentierbalocchi/dorfjavatik/resources/background.wav");
musicPlayer.play(); musicPlayer.play();
} }
private void initUI() { private void initUI() {
// Panel principal avec BorderLayout
JPanel panelPrincipal = new JPanel(new BorderLayout()); JPanel panelPrincipal = new JPanel(new BorderLayout());
// Panel pour le plateau de jeu sur la droite
panelPlateau = new JPanel(new GridLayout(taillePlateau, taillePlateau)); panelPlateau = new JPanel(new GridLayout(taillePlateau, taillePlateau));
boutons = new TileButton[taillePlateau][taillePlateau]; boutons = new TileButton[taillePlateau][taillePlateau];
for (int i = 0; i < taillePlateau; i++) { for (int i = 0; i < taillePlateau; i++) {
@ -64,9 +59,6 @@ public class FenetreJeu extends JFrame {
panelPlateau.add(bouton); panelPlateau.add(bouton);
} }
} }
// Panel pour afficher la tuile courante et le score sur la gauche, centré
// 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, 60, 20, 60)); panelGauche.setBorder(BorderFactory.createEmptyBorder(20, 60, 20, 60));
@ -126,25 +118,20 @@ public class FenetreJeu extends JFrame {
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));
panelGauche.add(panelTuileCourante); panelGauche.add(panelTuileCourante);
panelGauche.add(Box.createVerticalStrut(20)); panelGauche.add(Box.createVerticalStrut(20));
panelGauche.add(boutonRecommencer); panelGauche.add(boutonRecommencer);
panelGauche.add(boutonQuitter); panelGauche.add(boutonQuitter);
panelGauche.add(Box.createVerticalGlue()); panelGauche.add(Box.createVerticalGlue());
panelGauche.add(labelBiome1); panelGauche.add(labelBiome1);
panelGauche.add(labelBiome2); panelGauche.add(labelBiome2);
panelGauche.add(labelBiome3); panelGauche.add(labelBiome3);
panelGauche.add(labelBiome4); panelGauche.add(labelBiome4);
panelGauche.add(labelBiome5); panelGauche.add(labelBiome5);
panelPrincipal.add(panelGauche, BorderLayout.WEST); panelPrincipal.add(panelGauche, BorderLayout.WEST);
panelPrincipal.add(panelPlateau, BorderLayout.CENTER); panelPrincipal.add(panelPlateau, BorderLayout.CENTER);
add(panelPrincipal); add(panelPrincipal);
// Ajouter un écouteur pour garantir que le panneau du plateau reste un carré
addComponentListener(new ComponentAdapter() { addComponentListener(new ComponentAdapter() {
@Override @Override
public void componentResized(ComponentEvent e) { public void componentResized(ComponentEvent e) {
@ -156,7 +143,6 @@ public class FenetreJeu extends JFrame {
}); });
} }
// Méthode pour dessiner les biomes sur un bouton
private void dessinerTuile(Graphics g, Tuile tuile, int width, int height) { private void dessinerTuile(Graphics g, Tuile tuile, int width, int height) {
Graphics2D g2d = (Graphics2D) g.create(); Graphics2D g2d = (Graphics2D) g.create();
int halfWidth = width / 2; int halfWidth = width / 2;
@ -189,7 +175,6 @@ public class FenetreJeu extends JFrame {
g2d.dispose(); g2d.dispose();
} }
// Méthode pour mettre à jour le plateau après placement d'une tuile
public void updateBoard(int x, int y, Tuile tuile) { public void updateBoard(int x, int y, Tuile tuile) {
TileButton bouton = boutons[x][y]; TileButton bouton = boutons[x][y];
bouton.setTuile(tuile); // Mettre à jour la tuile sur le bouton bouton.setTuile(tuile); // Mettre à jour la tuile sur le bouton