diff --git a/bin/controller/GameController.class b/bin/controller/GameController.class deleted file mode 100644 index 102081d..0000000 Binary files a/bin/controller/GameController.class and /dev/null differ diff --git a/bin/controller/HexagonMouseListener.class b/bin/controller/HexagonMouseListener.class new file mode 100644 index 0000000..f6471d3 Binary files /dev/null and b/bin/controller/HexagonMouseListener.class differ diff --git a/bin/model/TerrainType.class b/bin/model/TerrainType.class new file mode 100644 index 0000000..0a2f465 Binary files /dev/null and b/bin/model/TerrainType.class differ diff --git a/bin/model/Tile$TerrainType.class b/bin/model/Tile$TerrainType.class deleted file mode 100644 index 50630a3..0000000 Binary files a/bin/model/Tile$TerrainType.class and /dev/null differ diff --git a/bin/model/Tile.class b/bin/model/Tile.class index 1acfb64..2c47109 100644 Binary files a/bin/model/Tile.class and b/bin/model/Tile.class differ diff --git a/bin/view/GameView$1.class b/bin/view/GameView$1.class deleted file mode 100644 index efcaa4d..0000000 Binary files a/bin/view/GameView$1.class and /dev/null differ diff --git a/bin/view/GameView$2.class b/bin/view/GameView$2.class deleted file mode 100644 index d772ee0..0000000 Binary files a/bin/view/GameView$2.class and /dev/null differ diff --git a/bin/view/GameView.class b/bin/view/GameView.class index d99d8ea..3d0e8f8 100644 Binary files a/bin/view/GameView.class and b/bin/view/GameView.class differ diff --git a/bin/view/HexagonGridPanel.class b/bin/view/HexagonGridPanel.class new file mode 100644 index 0000000..e682ddc Binary files /dev/null and b/bin/view/HexagonGridPanel.class differ diff --git a/bin/view/HexagonTile$1.class b/bin/view/HexagonTile$1.class index c283fa5..5037da2 100644 Binary files a/bin/view/HexagonTile$1.class and b/bin/view/HexagonTile$1.class differ diff --git a/bin/view/HexagonTile.class b/bin/view/HexagonTile.class index 4ba5635..4fbf647 100644 Binary files a/bin/view/HexagonTile.class and b/bin/view/HexagonTile.class differ diff --git a/bin/view/TileView$1.class b/bin/view/TileView$1.class index 2a5831f..ad13987 100644 Binary files a/bin/view/TileView$1.class and b/bin/view/TileView$1.class differ diff --git a/bin/view/TileView.class b/bin/view/TileView.class index 0dbfc17..609dff2 100644 Binary files a/bin/view/TileView.class and b/bin/view/TileView.class differ diff --git a/src/main/java/controller/HexagonMouseListener.java b/src/main/java/controller/HexagonMouseListener.java new file mode 100644 index 0000000..976944d --- /dev/null +++ b/src/main/java/controller/HexagonMouseListener.java @@ -0,0 +1,28 @@ +package controller; + +import java.awt.Point; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.Set; + +import view.HexagonTile; +import view.GameView; + +public class HexagonMouseListener extends MouseAdapter { + private final HexagonTile hexTile; + private final GameView gameView; + private final Set<Point> availablePositions; + + public HexagonMouseListener(HexagonTile hexTile, GameView gameView, Set<Point> availablePositions) { + this.hexTile = hexTile; + this.gameView = gameView; + this.availablePositions = availablePositions; + } + + @Override + public void mouseClicked(MouseEvent e) { + if (availablePositions.contains(hexTile.getPosition())) { + gameView.placeTile(hexTile.getPosition()); + } + } +} diff --git a/src/main/java/model/TerrainType.java b/src/main/java/model/TerrainType.java new file mode 100644 index 0000000..2e6c009 --- /dev/null +++ b/src/main/java/model/TerrainType.java @@ -0,0 +1,5 @@ +package model; + +public enum TerrainType { + MER, CHAMP, PRE, FORET, MONTAGNE +} diff --git a/src/main/java/model/Tile.java b/src/main/java/model/Tile.java index 8df26c8..0195d63 100644 --- a/src/main/java/model/Tile.java +++ b/src/main/java/model/Tile.java @@ -3,10 +3,6 @@ package model; import java.util.Random; public class Tile { - public enum TerrainType { - MER, CHAMP, PRE, FORET, MONTAGNE - } - private TerrainType[] terrains; // 4 terrains pour chaque quart de la tuile private static final Random random = new Random(); diff --git a/src/main/java/view/GameView.java b/src/main/java/view/GameView.java index 6d79406..77c7a46 100644 --- a/src/main/java/view/GameView.java +++ b/src/main/java/view/GameView.java @@ -1,11 +1,10 @@ package view; import model.Tile; +import controller.HexagonMouseListener; import javax.swing.*; import java.awt.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -66,14 +65,9 @@ public class GameView extends JFrame { } private JPanel createHexagonGrid() { - JPanel panel = new JPanel(null) { - @Override - public Dimension getPreferredSize() { - return new Dimension(3000, 3000); - } - }; - return panel; + return new HexagonGridPanel(); } + // Ajouter un hexagone à une position donnée private void addHexagonTile(Point position, JPanel panel, int hexSize) { @@ -87,14 +81,9 @@ public class GameView extends JFrame { HexagonTile hexTile = new HexagonTile(position); hexTile.setBounds(xOffset, yOffset, hexSize, hexSize); - hexTile.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - if (availablePositions.contains(hexTile.getPosition())) { - placeTile(hexTile.getPosition()); - } - } - }); + // Utiliser la classe HexagonMouseListener à la place de la classe anonyme + hexTile.addMouseListener(new HexagonMouseListener(hexTile, this, availablePositions)); + hexagonMap.put(position, hexTile); panel.add(hexTile); panel.revalidate(); @@ -102,7 +91,7 @@ public class GameView extends JFrame { } // Placer une tuile à la position spécifiée - private void placeTile(Point position) { + public void placeTile(Point position) { if (availablePositions.contains(position)) { HexagonTile hexTile = hexagonMap.get(position); if (hexTile != null && !hexTile.isFilled()) { diff --git a/src/main/java/view/HexagonGridPanel.java b/src/main/java/view/HexagonGridPanel.java new file mode 100644 index 0000000..dd9fda6 --- /dev/null +++ b/src/main/java/view/HexagonGridPanel.java @@ -0,0 +1,16 @@ +package view; + +import javax.swing.*; +import java.awt.*; + +public class HexagonGridPanel extends JPanel { + + public HexagonGridPanel() { + super(null); // Layout null pour gérer manuellement la position des composants + } + + @Override + public Dimension getPreferredSize() { + return new Dimension(3000, 3000); + } +} diff --git a/src/main/java/view/HexagonTile.java b/src/main/java/view/HexagonTile.java index 707b475..044363f 100644 --- a/src/main/java/view/HexagonTile.java +++ b/src/main/java/view/HexagonTile.java @@ -1,6 +1,7 @@ package view; import model.Tile; +import model.TerrainType; // Ajout de l'import pour TerrainType import javax.swing.*; import java.awt.*; @@ -84,7 +85,7 @@ public class HexagonTile extends JPanel { } // Obtenir la couleur en fonction du type de terrain - private Color getTerrainColor(Tile.TerrainType terrain) { + private Color getTerrainColor(TerrainType terrain) { switch (terrain) { case MER: return Color.BLUE; diff --git a/src/main/java/view/TileView.java b/src/main/java/view/TileView.java index ee0ed26..dd10353 100644 --- a/src/main/java/view/TileView.java +++ b/src/main/java/view/TileView.java @@ -1,6 +1,7 @@ package view; import model.Tile; +import model.TerrainType; // Ajout de l'import pour TerrainType import javax.swing.*; import java.awt.*; @@ -64,7 +65,7 @@ public class TileView extends JPanel { } // Obtenir la couleur en fonction du type de terrain - private Color getTerrainColor(Tile.TerrainType terrain) { + private Color getTerrainColor(TerrainType terrain) { switch (terrain) { case MER: return Color.BLUE;