Compare commits
No commits in common. "main" and "v1" have entirely different histories.
3
.gitignore
vendored
3
.gitignore
vendored
@ -151,6 +151,3 @@ tags
|
||||
*.class
|
||||
.jar
|
||||
bin/
|
||||
.vscode/
|
||||
|
||||
.ps1
|
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"makefile.makefilePath": "C:\\Users\\Loris\\OneDrive - UPEC\\Documents\\DEV\\SAE_DEV_JAVA\\makefile"
|
||||
}
|
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Juliette CHARPENTIER, Loris BALOCCHI, Luc DARTOIS
|
||||
Copyright (c) 2024 balocchi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
|
15
LancerDorfJavaTik.ps1
Normal file
15
LancerDorfJavaTik.ps1
Normal file
@ -0,0 +1,15 @@
|
||||
# Définir le chemin de base du projet
|
||||
$projectPath = "C:\Users\Loris\OneDrive - UPEC\Documents\DEV\SAE_DEV_JAVA"
|
||||
$binPath = "$projectPath\bin"
|
||||
|
||||
# Naviguer au répertoire racine du projet
|
||||
cd $projectPath
|
||||
|
||||
# Afficher un message de lancement
|
||||
Write-Host "Jeu lancé."
|
||||
|
||||
# Exécuter la classe principale
|
||||
java -classpath $binPath com.charpentierbalocchi.dorfjavatik.main.DorfJavaTik
|
||||
|
||||
# Afficher un message de fin
|
||||
Write-Host "Jeu fermé."
|
1
MANIFEST.MF
Normal file
1
MANIFEST.MF
Normal file
@ -0,0 +1 @@
|
||||
Main-Class: com.charpentierbalocchi.dorfjavatik.view.FenetreDemarrage
|
95
README.md
95
README.md
@ -1,93 +1,12 @@
|
||||
# DorfJavaTik
|
||||
# SAE_DEV_JAVA
|
||||
|
||||
## dorfjavatik
|
||||
|
||||
Projet Saé de DEV première année deuxième semestre.
|
||||
Binome : Balocchi Loris
|
||||
Charpentier Juliette
|
||||
|
||||
DorfJavaTik est un jeu développé en Java utilisant Swing pour l'interface graphique. Ce README fournit des instructions détaillées pour compiler et exécuter le projet en utilisant le `Makefile` sous Linux.
|
||||
|
||||
## Prérequis
|
||||
|
||||
Avant de commencer, assurez-vous que les outils suivants sont installés sur votre système:
|
||||
|
||||
- Java Development Kit (JDK)
|
||||
- `make`
|
||||
|
||||
Vous pouvez vérifier si Java et `make` sont installés en exécutant les commandes suivantes dans votre terminal :
|
||||
|
||||
```bash
|
||||
java -version
|
||||
javac -version
|
||||
make -v
|
||||
```
|
||||
|
||||
## Structure du projet
|
||||
|
||||
Le projet est organisé comme suit :
|
||||
|
||||
```
|
||||
/src
|
||||
/com
|
||||
/charpentierbalocchi
|
||||
/dorfjavatik
|
||||
/controller
|
||||
/model
|
||||
/util
|
||||
/view
|
||||
/resources
|
||||
- background.wav
|
||||
- image.gif
|
||||
/bin
|
||||
```
|
||||
|
||||
## Utilisation du Makefile
|
||||
|
||||
Le `Makefile` inclus dans le projet offre plusieurs commandes pour faciliter la compilation, l'exécution et la gestion des fichiers de projet.
|
||||
|
||||
### Compilation du projet
|
||||
|
||||
Pour compiler le projet, naviguez dans le répertoire racine du projet et exécutez la commande suivante :
|
||||
|
||||
```bash
|
||||
make
|
||||
```
|
||||
|
||||
Cette commande effectue les actions suivantes :
|
||||
|
||||
- Nettoie le répertoire de build précédent (`bin`).
|
||||
- Compile les sources Java.
|
||||
- Copie les ressources nécessaires dans le répertoire de build.
|
||||
|
||||
### Exécution du projet
|
||||
|
||||
Pour exécuter le projet après la compilation, utilisez la commande :
|
||||
|
||||
```bash
|
||||
make run
|
||||
```
|
||||
|
||||
Cette commande lance le jeu en utilisant les fichiers compilés dans le répertoire `bin`, sans passer par un fichier `.jar`.
|
||||
|
||||
### Génération de la documentation
|
||||
|
||||
Pour générer la documentation du projet (Javadoc), exécutez la commande :
|
||||
|
||||
```bash
|
||||
make javadoc
|
||||
```
|
||||
|
||||
La documentation sera placée dans `bin/docs`.
|
||||
|
||||
### Nettoyage du projet
|
||||
|
||||
Pour supprimer tous les fichiers générés lors de la compilation, y compris les fichiers `.class` et la documentation, exécutez :
|
||||
|
||||
```bash
|
||||
make clean
|
||||
```
|
||||
|
||||
Cette commande nettoiera le répertoire `bin` en supprimant tous les fichiers et dossiers qu'il contient.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Suivez ces instructions pour compiler et exécuter le projet DorfJavaTik en utilisant `make`.
|
||||
| |
|
||||
[°v°]
|
||||
/[ ]\
|
||||
| |
|
||||
|
29
ScriptCompilation.ps1
Normal file
29
ScriptCompilation.ps1
Normal file
@ -0,0 +1,29 @@
|
||||
# Script de Compilation pour PowerShell
|
||||
|
||||
# Définir le chemin de base du projet
|
||||
$projectPath = "C:\Users\Loris\OneDrive - UPEC\Documents\DEV\SAE_DEV_JAVA\src"
|
||||
$outputDir = "C:\Users\Loris\OneDrive - UPEC\Documents\DEV\SAE_DEV_JAVA\bin" # Dossier pour les fichiers .class
|
||||
$resourcesPath = "C:\Users\Loris\OneDrive - UPEC\Documents\DEV\SAE_DEV_JAVA\src\com\charpentierbalocchi\dorfjavatik\resources\"
|
||||
$resourcesOutputDir = "C:\Users\Loris\OneDrive - UPEC\Documents\DEV\SAE_DEV_JAVA\bin\com\charpentierbalocchi\dorfjavatik\resources\" # Dossier pour les ressources
|
||||
|
||||
# Créer le dossier de sortie s'il n'existe pas
|
||||
if (-not (Test-Path $outputDir)) {
|
||||
New-Item -Path $outputDir -ItemType Directory
|
||||
}
|
||||
|
||||
# Naviguer au répertoire racine du projet
|
||||
Set-Location $projectPath
|
||||
|
||||
# Compiler tous les fichiers Java en spécifiant le dossier de sortie pour les fichiers .class et en utilisant UTF-8 pour l'encodage
|
||||
# javac -d $outputDir -encoding UTF-8 (Get-ChildItem -Path $projectPath -Recurse -Filter *.java).FullName
|
||||
|
||||
# Copier les ressources dans le répertoire de sortie
|
||||
if (-not (Test-Path $resourcesOutputDir)) {
|
||||
New-Item -Path $resourcesOutputDir -ItemType Directory
|
||||
}
|
||||
Copy-Item -Path $resourcesPath* -Destination $resourcesOutputDir -Recurse -Force
|
||||
|
||||
# Afficher un message de fin
|
||||
Write-Host "Compilation terminée avec succès. Les fichiers .class et les ressources sont dans le dossier '$outputDir'."
|
||||
|
||||
cd ..
|
37
ScriptCompilationJar.ps1
Normal file
37
ScriptCompilationJar.ps1
Normal file
@ -0,0 +1,37 @@
|
||||
# Script de Compilation pour PowerShell
|
||||
|
||||
# Définir le chemin de base du projet
|
||||
$projectPath = "C:\Users\Loris\OneDrive - UPEC\Documents\DEV\SAE_DEV_JAVA\src"
|
||||
$outputDir = "C:\Users\Loris\OneDrive - UPEC\Documents\DEV\SAE_DEV_JAVA\bin" # Dossier pour les fichiers .class
|
||||
$resourcesPath = "C:\Users\Loris\OneDrive - UPEC\Documents\DEV\SAE_DEV_JAVA\src\com\charpentierbalocchi\dorfjavatik\resources\"
|
||||
$resourcesOutputDir = "C:\Users\Loris\OneDrive - UPEC\Documents\DEV\SAE_DEV_JAVA\bin\com\charpentierbalocchi\dorfjavatik\resources\" # Dossier pour les ressources
|
||||
$manifestPath = "C:\Users\Loris\OneDrive - UPEC\Documents\DEV\SAE_DEV_JAVA\MANIFEST.MF"
|
||||
$jarFile = "C:\Users\Loris\OneDrive - UPEC\Documents\DEV\SAE_DEV_JAVA\DorfJavaTik.jar"
|
||||
$jdkBinPath = "C:\Program Files\Java\jdk-17\bin" # Remplacer par le chemin correct vers le dossier bin du JDK
|
||||
|
||||
# Créer le dossier de sortie s'il n'existe pas
|
||||
if (-not (Test-Path $outputDir)) {
|
||||
New-Item -Path $outputDir -ItemType Directory
|
||||
}
|
||||
|
||||
# Naviguer au répertoire racine du projet
|
||||
Set-Location $projectPath
|
||||
|
||||
# Compiler tous les fichiers Java en spécifiant le dossier de sortie pour les fichiers .class et en utilisant UTF-8 pour l'encodage
|
||||
javac -d $outputDir -encoding UTF-8 (Get-ChildItem -Path $projectPath -Recurse -Filter *.java).FullName
|
||||
|
||||
# Copier les ressources dans le répertoire de sortie
|
||||
if (-not (Test-Path $resourcesOutputDir)) {
|
||||
New-Item -Path $resourcesOutputDir -ItemType Directory
|
||||
}
|
||||
Copy-Item -Path $resourcesPath* -Destination $resourcesOutputDir -Recurse -Force
|
||||
|
||||
# Créer le fichier JAR exécutable
|
||||
Set-Location $outputDir
|
||||
& "$jdkBinPath\jar.exe" cfm $jarFile $manifestPath -C $outputDir .
|
||||
|
||||
# Afficher un message de fin
|
||||
Write-Host "Compilation terminée avec succès. Les fichiers .class et les ressources sont dans le dossier '$outputDir'."
|
||||
Write-Host "Le fichier JAR exécutable a été créé : '$jarFile'."
|
||||
|
||||
cd ..
|
71
makefile
71
makefile
@ -1,46 +1,47 @@
|
||||
# Variables
|
||||
JAVAC = javac
|
||||
JAR = jar
|
||||
SRC_DIR = src
|
||||
BIN_DIR = bin
|
||||
RES_DIR = $(SRC_DIR)/com/charpentierbalocchi/dorfjavatik/resources
|
||||
RES_BIN_DIR = $(BIN_DIR)/com/charpentierbalocchi/dorfjavatik/resources
|
||||
JAVAC = javac
|
||||
JAVA = java
|
||||
JAVADOC = javadoc
|
||||
MAIN = com.charpentierbalocchi.dorfjavatik.view.FenetreDemarrage
|
||||
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
|
||||
|
||||
# Compilation flags
|
||||
JFLAGS = -d $(BIN_DIR) -encoding UTF-8 -sourcepath $(SRC_DIR)
|
||||
# Règles
|
||||
.PHONY: all clean jar run
|
||||
|
||||
# Default rule
|
||||
all: clean compile copy-resources
|
||||
all: classes
|
||||
|
||||
# Rule to compile the java files
|
||||
compile:
|
||||
@echo "Compilation des fichiers source java..."
|
||||
# Compilation des fichiers .class
|
||||
classes:
|
||||
@echo "Compilation des fichiers .java en .class..."
|
||||
@mkdir -p $(BIN_DIR)
|
||||
@$(JAVAC) $(JFLAGS) $(SRC_DIR)/com/charpentierbalocchi/dorfjavatik/controller/*.java
|
||||
@$(JAVAC) $(JFLAGS) $(SRC_DIR)/com/charpentierbalocchi/dorfjavatik/model/*.java
|
||||
@$(JAVAC) $(JFLAGS) $(SRC_DIR)/com/charpentierbalocchi/dorfjavatik/util/*.java
|
||||
@$(JAVAC) $(JFLAGS) $(SRC_DIR)/com/charpentierbalocchi/dorfjavatik/view/*.java
|
||||
$(JAVAC) -d $(BIN_DIR) -encoding UTF-8 $(shell find $(SRC_DIR) -name "*.java")
|
||||
@echo "Compilation terminée."
|
||||
|
||||
# Rule to copy resources
|
||||
copy-resources:
|
||||
@echo "Copying resources..."
|
||||
@cp -r $(RES_DIR) $(RES_BIN_DIR)
|
||||
# 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)"
|
||||
|
||||
# Rule to run the application
|
||||
run: compile copy-resources
|
||||
@echo "Lancement du jeu..."
|
||||
@$(JAVA) -cp $(BIN_DIR) $(MAIN)
|
||||
|
||||
# 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
|
||||
# Nettoyage des fichiers compilés et du JAR
|
||||
clean:
|
||||
@echo "Nettoyage en cours..."
|
||||
@rm -rf $(BIN_DIR)
|
||||
@echo "Nettoyage des fichiers compilés..."
|
||||
@rm -rf $(BIN_DIR)/*
|
||||
@rm -f $(JAR_FILE)
|
||||
@echo "Nettoyage terminé."
|
||||
|
||||
.PHONY: all compile run javadoc clean copy-resources
|
||||
# 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)
|
||||
|
@ -0,0 +1,13 @@
|
||||
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();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -13,7 +13,6 @@ public class FenetreDemarrage extends JFrame {
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setSize(400, 200);
|
||||
setLocationRelativeTo(null); // Centre la fenêtre sur l'écran
|
||||
setResizable(false); // Empêche le redimensionnement de la fenêtre
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
@ -22,14 +21,18 @@ public class FenetreDemarrage extends JFrame {
|
||||
JPanel panelPrincipal = new JPanel(new BorderLayout());
|
||||
JLabel label = new JLabel("Entrez la taille de la grille (1-15):");
|
||||
JTextField textField = new JTextField();
|
||||
textField.setText("5");
|
||||
textField.setText("5"); // Définir la valeur par défaut à 5
|
||||
JButton button = new JButton("Démarrer la partie");
|
||||
|
||||
// Ajout des composants au panneau principal
|
||||
panelPrincipal.add(label, BorderLayout.NORTH);
|
||||
panelPrincipal.add(textField, BorderLayout.CENTER);
|
||||
panelPrincipal.add(button, BorderLayout.SOUTH);
|
||||
|
||||
// Ajout du panneau principal à la fenêtre
|
||||
add(panelPrincipal);
|
||||
|
||||
// Action listener pour le bouton
|
||||
button.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
try {
|
||||
|
@ -12,37 +12,41 @@ import java.awt.event.ComponentAdapter;
|
||||
import java.awt.event.ComponentEvent;
|
||||
|
||||
public class FenetreJeu extends JFrame {
|
||||
private int taillePlateau;
|
||||
private TileButton[][] boutons;
|
||||
private JLabel labelScore;
|
||||
private JLabel labelBiome1;
|
||||
private JLabel labelBiome2;
|
||||
private JLabel labelBiome3;
|
||||
private JLabel labelBiome4;
|
||||
private JLabel labelBiome5;
|
||||
private Tuile tuileCourante;
|
||||
private ControleurJeu controleurJeu;
|
||||
private JPanel panelPlateau;
|
||||
private JPanel panelTuileCourante;
|
||||
private MusicPlayer musicPlayer;
|
||||
private int taillePlateau; // Taille du plateau
|
||||
private TileButton[][] boutons; // Boutons représentant les cases du plateau
|
||||
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 ControleurJeu controleurJeu; // Instance du contrôleur de jeu
|
||||
private JPanel panelPlateau; // Panneau pour le plateau de jeu
|
||||
private JPanel panelTuileCourante; // Panneau pour la tuile courante
|
||||
private MusicPlayer musicPlayer; // Instance du lecteur de musique
|
||||
|
||||
public FenetreJeu(int taillePlateau) {
|
||||
super("DorfJavaTik, par Juliette et Loris");
|
||||
super("DorfJavaTik, par Juliette et Loris"); // Titre de la fenêtre
|
||||
this.taillePlateau = taillePlateau;
|
||||
initUI();
|
||||
this.controleurJeu = new ControleurJeu(this, taillePlateau);
|
||||
controleurJeu.demarrerJeu();
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setSize(1300, 1000);
|
||||
setResizable(false);
|
||||
setLocationRelativeTo(null);
|
||||
setVisible(true);
|
||||
this.controleurJeu = new ControleurJeu(this, taillePlateau); // Initialiser le contrôleur après la configuration
|
||||
// de l'interface
|
||||
controleurJeu.demarrerJeu(); // Démarrer le jeu après l'initialisation
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Ferme l'application à la fermeture de la fenêtre
|
||||
setSize(1300, 1000); // Fixe la taille de la fenêtre à 1300 x 1000
|
||||
setLocationRelativeTo(null); // Centre la fenêtre sur l'écran
|
||||
setVisible(true); // Rendre la fenêtre visible
|
||||
// Démarrer la musique de fond
|
||||
musicPlayer = new MusicPlayer("/com/charpentierbalocchi/dorfjavatik/resources/background.wav");
|
||||
musicPlayer.play();
|
||||
}
|
||||
|
||||
private void initUI() {
|
||||
// Panel principal avec BorderLayout
|
||||
JPanel panelPrincipal = new JPanel(new BorderLayout());
|
||||
|
||||
// Panel pour le plateau de jeu sur la droite
|
||||
panelPlateau = new JPanel(new GridLayout(taillePlateau, taillePlateau));
|
||||
boutons = new TileButton[taillePlateau][taillePlateau];
|
||||
for (int i = 0; i < taillePlateau; i++) {
|
||||
@ -59,6 +63,9 @@ public class FenetreJeu extends JFrame {
|
||||
panelPlateau.add(bouton);
|
||||
}
|
||||
}
|
||||
|
||||
// Panel pour afficher la tuile courante et le score sur la gauche, centré
|
||||
// verticalement
|
||||
JPanel panelGauche = new JPanel();
|
||||
panelGauche.setLayout(new BoxLayout(panelGauche, BoxLayout.Y_AXIS));
|
||||
panelGauche.setBorder(BorderFactory.createEmptyBorder(20, 60, 20, 60));
|
||||
@ -118,20 +125,25 @@ public class FenetreJeu extends JFrame {
|
||||
|
||||
panelGauche.add(Box.createVerticalGlue());
|
||||
panelGauche.add(labelScore);
|
||||
panelGauche.add(Box.createVerticalStrut(20));
|
||||
panelGauche.add(Box.createVerticalStrut(20)); // Espace entre les composants
|
||||
panelGauche.add(panelTuileCourante);
|
||||
panelGauche.add(Box.createVerticalStrut(20));
|
||||
panelGauche.add(boutonRecommencer);
|
||||
panelGauche.add(boutonQuitter);
|
||||
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(panelPlateau, BorderLayout.CENTER);
|
||||
|
||||
add(panelPrincipal);
|
||||
|
||||
// Ajouter un écouteur pour garantir que le panneau du plateau reste un carré
|
||||
addComponentListener(new ComponentAdapter() {
|
||||
@Override
|
||||
public void componentResized(ComponentEvent e) {
|
||||
@ -143,6 +155,7 @@ 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) {
|
||||
Graphics2D g2d = (Graphics2D) g.create();
|
||||
int halfWidth = width / 2;
|
||||
@ -175,6 +188,7 @@ public class FenetreJeu extends JFrame {
|
||||
g2d.dispose();
|
||||
}
|
||||
|
||||
// Méthode pour mettre à jour le plateau après placement d'une tuile
|
||||
public void updateBoard(int x, int y, Tuile tuile) {
|
||||
TileButton bouton = boutons[x][y];
|
||||
bouton.setTuile(tuile); // Mettre à jour la tuile sur le bouton
|
||||
|
Loading…
Reference in New Issue
Block a user