✅ Ajout des codes de base
Co-authored-by: Juliette Charpentier <juliette1.charpentier@etu.u-pec.fr>
This commit is contained in:
parent
f75c4b6642
commit
36731cd1bb
3
.gitignore
vendored
3
.gitignore
vendored
@ -146,3 +146,6 @@ tags
|
|||||||
# Ignore all local history of files
|
# Ignore all local history of files
|
||||||
.history
|
.history
|
||||||
.ionide
|
.ionide
|
||||||
|
|
||||||
|
### Java
|
||||||
|
*.class
|
||||||
|
12
LancerDorfJavaTik.ps1
Normal file
12
LancerDorfJavaTik.ps1
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
# Exécuter la classe principale
|
||||||
|
java -classpath $binPath com.charpentierbalocchi.dorfjavatik.main.DorfJavaTik
|
||||||
|
|
||||||
|
# Afficher un message de fin
|
||||||
|
Write-Host "Application lancée."
|
@ -1,3 +1,12 @@
|
|||||||
# SAE_DEV_JAVA
|
# SAE_DEV_JAVA
|
||||||
|
|
||||||
## dorfjavatik
|
## dorfjavatik
|
||||||
|
|
||||||
|
Projet Saé de DEV première année deuxième semestre.
|
||||||
|
Binome : Balocchi Loris
|
||||||
|
Charpentier Juliette
|
||||||
|
|
||||||
|
| |
|
||||||
|
[°v°]
|
||||||
|
/[ ]\
|
||||||
|
| |
|
||||||
|
19
ScriptCompilation.ps1
Normal file
19
ScriptCompilation.ps1
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
cd $projectPath
|
||||||
|
|
||||||
|
# Compiler tous les fichiers Java en spécifiant le dossier de sortie pour les fichiers .class
|
||||||
|
javac -d $outputDir (Get-ChildItem -Path $projectPath -Recurse -Filter *.java).FullName
|
||||||
|
|
||||||
|
# Afficher un message de fin
|
||||||
|
Write-Host "Compilation terminée avec succès. Les fichiers .class sont dans le dossier '$outputDir'."
|
@ -0,0 +1,61 @@
|
|||||||
|
package com.charpentierbalocchi.dorfjavatik.controller;
|
||||||
|
|
||||||
|
import com.charpentierbalocchi.dorfjavatik.model.Plateau;
|
||||||
|
import com.charpentierbalocchi.dorfjavatik.model.Tuile;
|
||||||
|
import com.charpentierbalocchi.dorfjavatik.util.GenerateurTuile;
|
||||||
|
import com.charpentierbalocchi.dorfjavatik.view.FenetreJeu;
|
||||||
|
|
||||||
|
public class ControleurJeu {
|
||||||
|
private FenetreJeu fenetreJeu;
|
||||||
|
private Plateau plateau;
|
||||||
|
private GenerateurTuile generateurTuile;
|
||||||
|
|
||||||
|
public ControleurJeu(FenetreJeu fenetreJeu) {
|
||||||
|
this.fenetreJeu = fenetreJeu;
|
||||||
|
this.plateau = new Plateau(); // Assurez-vous que Plateau a une implémentation appropriée.
|
||||||
|
this.generateurTuile = new GenerateurTuile(); // Génère des tuiles avec des biomes aléatoires.
|
||||||
|
initGame();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initGame() {
|
||||||
|
// Initialiser le jeu, par exemple, placer la première tuile aléatoire ou
|
||||||
|
// configurer le plateau.
|
||||||
|
placeRandomTile();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gérer le placement d'une tuile sur le plateau
|
||||||
|
private void placeRandomTile() {
|
||||||
|
Tuile tuile = generateurTuile.genererTuileAleatoire();
|
||||||
|
// Logique pour placer la tuile sur le plateau et mettre à jour l'interface
|
||||||
|
// utilisateur.
|
||||||
|
// Ici vous pouvez implémenter la logique pour choisir la position ou pour
|
||||||
|
// réagir à un choix de l'utilisateur.
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleTilePlacement(int x, int y) {
|
||||||
|
Tuile tuile = generateurTuile.genererTuileAleatoire();
|
||||||
|
if (plateau.placeTile(tuile, x, y)) { // Vérifie si la tuile peut être placée à la position x, y
|
||||||
|
fenetreJeu.updateBoard(x, y, tuile); // Mettre à jour la vue avec la nouvelle tuile placée
|
||||||
|
updateScore(); // Mettre à jour le score après le placement
|
||||||
|
} else {
|
||||||
|
System.out.println("Placement invalide");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateScore() {
|
||||||
|
// Calculez le nouveau score et mettez-le à jour dans FenetreJeu
|
||||||
|
int newScore = calculateScore();
|
||||||
|
fenetreJeu.setScore(newScore);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int calculateScore() {
|
||||||
|
// Implémentez la logique de calcul du score basé sur les règles du jeu.
|
||||||
|
return 0; // Retourne le score calculé
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour démarrer le jeu (peut être appelée depuis une interface
|
||||||
|
// utilisateur)
|
||||||
|
public void startGame() {
|
||||||
|
initGame();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.charpentierbalocchi.dorfjavatik.main;
|
||||||
|
|
||||||
|
import com.charpentierbalocchi.dorfjavatik.controller.ControleurJeu;
|
||||||
|
import com.charpentierbalocchi.dorfjavatik.view.FenetreJeu;
|
||||||
|
|
||||||
|
public class DorfJavaTik {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Créez l'instance de la fenêtre de jeu
|
||||||
|
FenetreJeu fenetreJeu = new FenetreJeu();
|
||||||
|
|
||||||
|
// Créez l'instance du contrôleur de jeu et passez la fenêtre de jeu en
|
||||||
|
// paramètre
|
||||||
|
ControleurJeu controleurJeu = new ControleurJeu(fenetreJeu);
|
||||||
|
|
||||||
|
// Configurez la fenêtre de jeu pour qu'elle soit visible
|
||||||
|
|
||||||
|
fenetreJeu.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
17
src/com/charpentierbalocchi/dorfjavatik/model/Case.java
Normal file
17
src/com/charpentierbalocchi/dorfjavatik/model/Case.java
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
package com.charpentierbalocchi.dorfjavatik.model;
|
||||||
|
|
||||||
|
public class Case {
|
||||||
|
private Tuile tuile;
|
||||||
|
|
||||||
|
public void setTuile(Tuile tuile) {
|
||||||
|
this.tuile = tuile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Tuile getTuile() {
|
||||||
|
return tuile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean estVide() {
|
||||||
|
return tuile == null;
|
||||||
|
}
|
||||||
|
}
|
60
src/com/charpentierbalocchi/dorfjavatik/model/Plateau.java
Normal file
60
src/com/charpentierbalocchi/dorfjavatik/model/Plateau.java
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
package com.charpentierbalocchi.dorfjavatik.model;
|
||||||
|
|
||||||
|
public class Plateau {
|
||||||
|
private final int TAILLE = 5; // Taille standard du plateau
|
||||||
|
private Case[][] cases; // Grille de cases
|
||||||
|
|
||||||
|
public Plateau() {
|
||||||
|
this.cases = new Case[TAILLE][TAILLE];
|
||||||
|
for (int i = 0; i < TAILLE; i++) {
|
||||||
|
for (int j = 0; j < TAILLE; j++) {
|
||||||
|
this.cases[i][j] = new Case(); // Initialisation de chaque case du plateau
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour placer une tuile sur le plateau à la position (x, y)
|
||||||
|
public boolean placeTile(Tuile tuile, int x, int y) {
|
||||||
|
if (x < 0 || x >= TAILLE || y < 0 || y >= TAILLE) {
|
||||||
|
return false; // Vérifie que les coordonnées sont dans les limites du plateau
|
||||||
|
}
|
||||||
|
if (!cases[x][y].estVide()) {
|
||||||
|
return false; // Vérifie que la case est vide avant de placer la tuile
|
||||||
|
}
|
||||||
|
cases[x][y].setTuile(tuile); // Place la tuile sur le plateau
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour calculer le score après placement d'une tuile
|
||||||
|
public int calculerScore(int x, int y, Tuile tuile) {
|
||||||
|
int score = 0;
|
||||||
|
// Vérifier les tuiles adjacentes pour les correspondances de biomes
|
||||||
|
if (x > 0 && cases[x - 1][y].getTuile() != null && cases[x - 1][y].getTuile().getSud() == tuile.getNord()) {
|
||||||
|
score++;
|
||||||
|
}
|
||||||
|
if (x < TAILLE - 1 && cases[x + 1][y].getTuile() != null
|
||||||
|
&& cases[x + 1][y].getTuile().getNord() == tuile.getSud()) {
|
||||||
|
score++;
|
||||||
|
}
|
||||||
|
if (y > 0 && cases[x][y - 1].getTuile() != null && cases[x][y - 1].getTuile().getEst() == tuile.getOuest()) {
|
||||||
|
score++;
|
||||||
|
}
|
||||||
|
if (y < TAILLE - 1 && cases[x][y + 1].getTuile() != null
|
||||||
|
&& cases[x][y + 1].getTuile().getOuest() == tuile.getEst()) {
|
||||||
|
score++;
|
||||||
|
}
|
||||||
|
return score;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vérifie si le plateau est complètement rempli
|
||||||
|
public boolean estComplet() {
|
||||||
|
for (int i = 0; i < TAILLE; i++) {
|
||||||
|
for (int j = 0; j < TAILLE; j++) {
|
||||||
|
if (cases[i][j].estVide()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
56
src/com/charpentierbalocchi/dorfjavatik/model/Tuile.java
Normal file
56
src/com/charpentierbalocchi/dorfjavatik/model/Tuile.java
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
package com.charpentierbalocchi.dorfjavatik.model;
|
||||||
|
|
||||||
|
public class Tuile {
|
||||||
|
// Enum pour les biomes
|
||||||
|
public enum Biome {
|
||||||
|
RIVIERE("Bleu"), FORET("Vert"), CHAMP("Jaune"), VILLAGE("Rouge"), MONTAGNE("Gris");
|
||||||
|
|
||||||
|
private final String couleur;
|
||||||
|
|
||||||
|
Biome(String couleur) {
|
||||||
|
this.couleur = couleur;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return this.couleur;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Zones de la tuile avec un biome pour chaque
|
||||||
|
private Biome nord;
|
||||||
|
private Biome sud;
|
||||||
|
private Biome est;
|
||||||
|
private Biome ouest;
|
||||||
|
|
||||||
|
// Constructeur de Tuile avec les biomes pour chaque zone
|
||||||
|
public Tuile(Biome nord, Biome sud, Biome est, Biome ouest) {
|
||||||
|
this.nord = nord;
|
||||||
|
this.sud = sud;
|
||||||
|
this.est = est;
|
||||||
|
this.ouest = ouest;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters pour chaque zone
|
||||||
|
public Biome getNord() {
|
||||||
|
return nord;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Biome getSud() {
|
||||||
|
return sud;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Biome getEst() {
|
||||||
|
return est;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Biome getOuest() {
|
||||||
|
return ouest;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Représentation de la Tuile sous forme de chaîne de caractères
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return String.format("[N: %s, S: %s, E: %s, O: %s]", nord, sud, est, ouest);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.charpentierbalocchi.dorfjavatik.util;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import com.charpentierbalocchi.dorfjavatik.model.Tuile;
|
||||||
|
import com.charpentierbalocchi.dorfjavatik.model.Tuile.Biome;
|
||||||
|
|
||||||
|
public class GenerateurTuile {
|
||||||
|
private Random random = new Random(); // Générateur de nombres aléatoires
|
||||||
|
|
||||||
|
// Méthode pour générer une tuile aléatoire
|
||||||
|
public Tuile genererTuileAleatoire() {
|
||||||
|
Biome nord = Biome.values()[random.nextInt(Biome.values().length)];
|
||||||
|
Biome sud = Biome.values()[random.nextInt(Biome.values().length)];
|
||||||
|
Biome est = Biome.values()[random.nextInt(Biome.values().length)];
|
||||||
|
Biome ouest = Biome.values()[random.nextInt(Biome.values().length)];
|
||||||
|
return new Tuile(nord, sud, est, ouest);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,60 @@
|
|||||||
|
package com.charpentierbalocchi.dorfjavatik.view;
|
||||||
|
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
import com.charpentierbalocchi.dorfjavatik.model.Tuile;
|
||||||
|
|
||||||
|
import java.awt.Graphics;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
|
||||||
|
public class AffichageTuile extends JPanel {
|
||||||
|
private Tuile tuile;
|
||||||
|
|
||||||
|
public AffichageTuile(Tuile tuile) {
|
||||||
|
this.tuile = tuile;
|
||||||
|
setPreferredSize(new Dimension(100, 100)); // Taille préférée du panel pour afficher la tuile
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void paintComponent(Graphics g) {
|
||||||
|
super.paintComponent(g);
|
||||||
|
if (tuile == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Divise le panel en quatre quadrants pour les biomes Nord, Sud, Est, Ouest
|
||||||
|
int width = getWidth();
|
||||||
|
int height = getHeight();
|
||||||
|
drawBiome(g, tuile.getNord(), 0, 0, width / 2, height / 2);
|
||||||
|
drawBiome(g, tuile.getSud(), 0, height / 2, width / 2, height / 2);
|
||||||
|
drawBiome(g, tuile.getEst(), width / 2, 0, width / 2, height / 2);
|
||||||
|
drawBiome(g, tuile.getOuest(), width / 2, height / 2, width / 2, height / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dessine chaque biome dans le quadrant spécifié
|
||||||
|
private void drawBiome(Graphics g, Tuile.Biome biome, int x, int y, int width, int height) {
|
||||||
|
switch (biome) {
|
||||||
|
case RIVIERE:
|
||||||
|
g.setColor(Color.BLUE);
|
||||||
|
break;
|
||||||
|
case FORET:
|
||||||
|
g.setColor(Color.GREEN);
|
||||||
|
break;
|
||||||
|
case CHAMP:
|
||||||
|
g.setColor(Color.YELLOW);
|
||||||
|
break;
|
||||||
|
case VILLAGE:
|
||||||
|
g.setColor(Color.RED);
|
||||||
|
break;
|
||||||
|
case MONTAGNE:
|
||||||
|
g.setColor(Color.GRAY);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
g.setColor(Color.BLACK);
|
||||||
|
}
|
||||||
|
g.fillRect(x, y, width, height);
|
||||||
|
g.setColor(Color.BLACK);
|
||||||
|
g.drawRect(x, y, width, height); // Dessine un contour pour chaque zone
|
||||||
|
}
|
||||||
|
}
|
59
src/com/charpentierbalocchi/dorfjavatik/view/FenetreJeu.java
Normal file
59
src/com/charpentierbalocchi/dorfjavatik/view/FenetreJeu.java
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
package com.charpentierbalocchi.dorfjavatik.view;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
|
import com.charpentierbalocchi.dorfjavatik.model.Tuile;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class FenetreJeu extends JFrame {
|
||||||
|
private static final int TAILLE_PLATEAU = 5; // Taille du plateau 5x5
|
||||||
|
private JButton[][] boutons; // Boutons représentant les cases du plateau
|
||||||
|
private JLabel labelScore; // Label pour afficher le score
|
||||||
|
|
||||||
|
public FenetreJeu() {
|
||||||
|
super("DorfJavaTik"); // Titre de la fenêtre
|
||||||
|
initUI();
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Ferme l'application à la fermeture de la fenêtre
|
||||||
|
setLocationRelativeTo(null); // Centre la fenêtre sur l'écran
|
||||||
|
pack(); // Ajuste la taille de la fenêtre en fonction des composants
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initUI() {
|
||||||
|
// Panel principal
|
||||||
|
JPanel panelPrincipal = new JPanel(new BorderLayout());
|
||||||
|
|
||||||
|
// Panel pour le plateau de jeu
|
||||||
|
JPanel plateau = new JPanel(new GridLayout(TAILLE_PLATEAU, TAILLE_PLATEAU));
|
||||||
|
plateau.setSize(1000, 1000);
|
||||||
|
plateau.setLocation(0, 0);
|
||||||
|
boutons = new JButton[TAILLE_PLATEAU][TAILLE_PLATEAU];
|
||||||
|
for (int i = 0; i < TAILLE_PLATEAU; i++) {
|
||||||
|
for (int j = 0; j < TAILLE_PLATEAU; j++) {
|
||||||
|
JButton bouton = new JButton();
|
||||||
|
boutons[i][j] = bouton;
|
||||||
|
plateau.add(bouton);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Label pour le score
|
||||||
|
labelScore = new JLabel("Score: 0");
|
||||||
|
panelPrincipal.add(labelScore, BorderLayout.NORTH);
|
||||||
|
panelPrincipal.add(plateau, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
add(panelPrincipal);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour mettre à jour le plateau après placement d'une tuile
|
||||||
|
public void updateBoard(int x, int y, Tuile tuile) {
|
||||||
|
JButton bouton = boutons[x][y];
|
||||||
|
bouton.setText(tuile.toString()); // Utilisez toString ou une autre méthode pour représenter visuellement la
|
||||||
|
// tuile
|
||||||
|
bouton.setEnabled(false); // Désactive le bouton pour éviter le placement d'une autre tuile à cette
|
||||||
|
// position
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setScore(int score) {
|
||||||
|
labelScore.setText("Score: " + score);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user