Pair Programming Bamba David Vincent

This commit is contained in:
2024-10-24 17:59:46 +02:00
parent 40f4881b32
commit 0513256860
20 changed files with 60 additions and 24 deletions

View File

@@ -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());
}
}
}

View File

@@ -0,0 +1,5 @@
package model;
public enum TerrainType {
MER, CHAMP, PRE, FORET, MONTAGNE
}

View File

@@ -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();

View File

@@ -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()) {

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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;