Makefile + correction de dépendance circulaire

This commit is contained in:
David AKAGUNDUZ 2024-10-26 17:19:48 +02:00
parent 07515d748d
commit 286590398c
12 changed files with 148 additions and 44 deletions

98
src/main/Makefile Normal file

@ -0,0 +1,98 @@
### VARIABLES ###
JC = javac
JCFLAGS = -encoding UTF-8 -implicit:none -d classes
JVM = java
JVMFLAGS =
### RÈGLES ESSENTIELLES ###
Main.class: Main.java java/controller/MenuController.class java/view/MenuView.class java/controller/GameController.class
$(JC) $(JCFLAGS) Main.java
java/controller/MenuController.class: java/controller/MenuController.java java/model/MenuModel.class java/view/MenuView.class java/controller/NewListener.class java/controller/QuiListener.class java/controller/ResListener.class
$(JC) $(JCFLAGS) java/controller/MenuController.java
java/controller/NewListener.class: java/controller/NewListener.java
$(JC) $(JCFLAGS) java/controller/NewListener.java
java/controller/QuiListener.class: java/controller/QuiListener.java
$(JC) $(JCFLAGS) java/controller/QuiListener.java
java/controller/ResListener.class: java/controller/ResListener.java java/view/GameView.class
$(JC) $(JCFLAGS) java/controller/ResListener.java
java/view/GameView.class: java/view/GameView.java java/controller/MouseWheelController.class java/controller/GameController.class java/view/HexagonTile.class
$(JC) $(JCFLAGS) java/view/GameView.java
java/controller/MouseWheelController.class: java/controller/MouseWheelController.java java/view/HexagonTile.class java/controller/GameController.class
$(JC) $(JCFLAGS) java/controller/MouseWheelController.java
java/controller/HexagonMouseListener.class: java/controller/HexagonMouseListener.java java/view/HexagonTile.class java/controller/TilePlacer.class
$(JC) $(JCFLAGS) java/controller/HexagonMouseListener.java
java/controller/GameController.class: java/controller/GameController.java java/controller/TilePlacer.class java/model/Tile.class java/controller/CameraController.class java/controller/HexagonMouseListener.class
$(JC) $(JCFLAGS) java/controller/GameController.java
java/controller/CameraController.class: java/controller/CameraController.java java/controller/GameContext.class java/controller/MousePressHandler.class java/controller/MouseDragHandler.class
$(JC) $(JCFLAGS) java/controller/CameraController.java
java/controller/GameContext.class: java/controller/GameContext.java java/view/HexagonTile.class
$(JC) $(JCFLAGS) java/controller/GameContext.java
java/view/HexagonTile.class: java/view/HexagonTile.java java/model/Tile.class java/model/TerrainType.class
$(JC) $(JCFLAGS) java/view/HexagonTile.java
java/model/MenuModel.class: java/model/MenuModel.java
$(JC) $(JCFLAGS) java/model/MenuModel.java
java/view/MenuView.class: java/view/MenuView.java java/view/BtnPerso.class java/view/ButtonHoverListener.class
$(JC) $(JCFLAGS) java/view/MenuView.java
java/model/Tile.class: java/model/Tile.java java/model/TerrainType.class
$(JC) $(JCFLAGS) java/model/Tile.java
java/model/TerrainType.class: java/model/TerrainType.java
$(JC) $(JCFLAGS) java/model/TerrainType.java
java/view/ButtonHoverListener.class: java/view/ButtonHoverListener.java
$(JC) $(JCFLAGS) java/view/ButtonHoverListener.java
java/view/BtnPerso.class: java/view/BtnPerso.java
$(JC) $(JCFLAGS) java/view/BtnPerso.java
java/controller/MousePressHandler.class: java/controller/MousePressHandler.java java/controller/CameraControllerListener.class
$(JC) $(JCFLAGS) java/controller/MousePressHandler.java
java/controller/MouseDragHandler.class: java/controller/MouseDragHandler.java java/controller/CameraControllerListener.class
$(JC) $(JCFLAGS) java/controller/MouseDragHandler.java
java/controller/CameraControllerListener.class: java/controller/CameraControllerListener.java
$(JC) $(JCFLAGS) java/controller/CameraControllerListener.java
java/controller/TilePlacer.class: java/controller/TilePlacer.java
$(JC) $(JCFLAGS) java/controller/TilePlacer.java
### RÈGLE POUR COPIER LES IMAGES ###
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
### RÈGLES OPTIONNELLES ###
run: Main.class copy-images
$(JVM) $(JVMFLAGS) -cp classes main.Main
clean:
-rm -f classes/**/*.class
mrproper: clean
-rm -rf classes/java/view/img
### BUTS FACTICES ###
.PHONY: run clean mrproper copy-images
### FIN ###

Binary file not shown.

After

(image error) Size: 27 KiB

Binary file not shown.

After

(image error) Size: 322 KiB

Binary file not shown.

After

(image error) Size: 36 KiB

@ -3,8 +3,7 @@ package controller;
import javax.swing.JPanel;
import java.awt.Point;
public class CameraController {
public class CameraController implements CameraControllerListener {
private Point mouseDragStart = null;
private GameContext context;
@ -16,6 +15,7 @@ public class CameraController {
setupMouseDragToMove(gridPanel); // Initialise les écouteurs pour gérer le déplacement
}
@Override
public void updateViewOffset(int deltaX, int deltaY) {
// Met à jour uniquement l'offset dans GameContext
context.updateOffset(deltaX, deltaY);
@ -27,18 +27,21 @@ public class CameraController {
}
private void setupMouseDragToMove(JPanel gridPanel) {
gridPanel.addMouseListener(new MousePressHandler(this, context));
gridPanel.addMouseMotionListener(new MouseDragHandler(this, context));
gridPanel.addMouseListener(new MousePressHandler(this));
gridPanel.addMouseMotionListener(new MouseDragHandler(this));
}
@Override
public void setMouseDragStart(Point point) {
this.mouseDragStart = point;
}
@Override
public Point getMouseDragStart() {
return mouseDragStart;
}
@Override
public void resetMouseDragStart() {
this.mouseDragStart = null;
}

@ -0,0 +1,10 @@
package controller;
import java.awt.Point;
public interface CameraControllerListener {
void updateViewOffset(int deltaX, int deltaY);
void setMouseDragStart(Point point);
Point getMouseDragStart();
void resetMouseDragStart();
}

@ -8,7 +8,7 @@ import java.awt.Point;
import java.util.Map;
import java.util.Set;
public class GameController {
public class GameController implements TilePlacer {
private Map<Point, HexagonTile> hexagonMap;
private Set<Point> availablePositions;
private JPanel gridPanel;
@ -28,8 +28,8 @@ public class GameController {
updatePreview();
}
@Override
public void placeTile(Point position) {
// Vérifier si la position est disponible
if (availablePositions.contains(position)) {
HexagonTile hexTile = hexagonMap.get(position);
if (hexTile == null) {
@ -37,27 +37,21 @@ public class GameController {
return;
}
// Assigner la tuile actuelle
hexTile.setTile(nextTile);
gridPanel.revalidate();
gridPanel.repaint();
// Retirer la position des positions disponibles
availablePositions.remove(position);
// Mettre à jour les positions adjacentes
Point[] adjacentPositions = getAdjacentPositions(position);
for (Point adj : adjacentPositions) {
if (!hexagonMap.containsKey(adj)) {
availablePositions.add(adj);
addHexagonTile(adj, gridPanel, 50, null, null); // Ajouter des placeholders
addHexagonTile(adj, gridPanel, 50, null, null);
}
}
// Repeindre la grille
gameContext.repaintGrid(gridPanel);
// Générer une nouvelle tuile pour la prochaine preview
generateNextTile();
}
}
@ -72,8 +66,6 @@ public class GameController {
initialPosition.setLocation(centerX / 50, centerY / 50);
placeInitialTile(initialPosition, cameraController, initialTile);
// Générer la première tuile pour la preview
generateNextTile();
}
@ -126,7 +118,6 @@ public class GameController {
}
public void generateNextTile() {
// Génère une nouvelle tuile pour la prochaine pose
nextTile = new Tile();
updatePreview();
}

@ -8,12 +8,12 @@ import java.util.Set;
public class HexagonMouseListener extends MouseAdapter {
private final HexagonTile hexTile;
private final GameController gameController;
private final TilePlacer tilePlacer;
private final Set<Point> availablePositions;
public HexagonMouseListener(HexagonTile hexTile, GameController gameController, Set<Point> availablePositions) {
public HexagonMouseListener(HexagonTile hexTile, TilePlacer tilePlacer, Set<Point> availablePositions) {
this.hexTile = hexTile;
this.gameController = gameController;
this.tilePlacer = tilePlacer;
this.availablePositions = availablePositions;
}
@ -22,12 +22,7 @@ public class HexagonMouseListener extends MouseAdapter {
Point position = hexTile.getPosition();
if (availablePositions.contains(position)) {
System.out.println("Hexagone cliqué à la position : " + position);
// Appeler le GameController pour placer une nouvelle tuile à cet emplacement
gameController.placeTile(position);
// Générer la prochaine tuile après avoir placé celle-ci
gameController.generateNextTile();
tilePlacer.placeTile(position);
} else {
System.out.println("Position non disponible pour le placement");
}

@ -7,31 +7,31 @@ import javax.swing.SwingUtilities;
public class MouseDragHandler extends MouseAdapter {
private CameraController controller;
private CameraControllerListener listener;
public MouseDragHandler(CameraController controller, GameContext context) {
this.controller = controller;
public MouseDragHandler(CameraControllerListener listener) {
this.listener = listener;
}
@Override
public void mouseDragged(MouseEvent e) {
if (controller.getMouseDragStart() != null && SwingUtilities.isRightMouseButton(e)) {
if (listener.getMouseDragStart() != null && SwingUtilities.isRightMouseButton(e)) {
Point current = e.getPoint();
int deltaX = current.x - controller.getMouseDragStart().x;
int deltaY = current.y - controller.getMouseDragStart().y;
int deltaX = current.x - listener.getMouseDragStart().x;
int deltaY = current.y - listener.getMouseDragStart().y;
// Déplacement dans CameraController
controller.updateViewOffset(deltaX, deltaY);
listener.updateViewOffset(deltaX, deltaY);
// Met à jour la position de départ
controller.setMouseDragStart(current);
listener.setMouseDragStart(current);
}
}
@Override
public void mouseReleased(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
controller.resetMouseDragStart();
listener.resetMouseDragStart();
}
}
}

@ -1,28 +1,28 @@
package controller;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.SwingUtilities;
public class MousePressHandler extends MouseAdapter {
private CameraController controller;
private CameraControllerListener listener;
public MousePressHandler(CameraController controller, GameContext context) {
this.controller = controller;
public MousePressHandler(CameraControllerListener listener) {
this.listener = listener;
}
@Override
public void mousePressed(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
System.out.println("Clic droit détecté");
controller.setMouseDragStart(e.getPoint());
listener.setMouseDragStart(e.getPoint());
}
}
@Override
public void mouseReleased(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
controller.resetMouseDragStart();
listener.resetMouseDragStart();
}
}
}

@ -0,0 +1,7 @@
package controller;
import java.awt.Point;
public interface TilePlacer {
void placeTile(Point position);
}

@ -22,9 +22,9 @@ public class MenuView extends JComponent {
panelCoté.setPreferredSize(new Dimension(300, 0));
// Utilisation de getResource pour charger les images
backgroundImage = new ImageIcon(getClass().getResource("/view/img/bg.png")).getImage();
logo = new ImageIcon(getClass().getResource("/view/img/D.png"));
quit = new ImageIcon(getClass().getResource("/view/img/quit.png"));
backgroundImage = new ImageIcon(getClass().getResource("/java/view/img/bg.png")).getImage();
logo = new ImageIcon(getClass().getResource("/java/view/img/D.png"));
quit = new ImageIcon(getClass().getResource("/java/view/img/quit.png"));
// Redimensionnement des images
Image quit1 = quit.getImage();