2024-10-21 13:21:22 +02:00
|
|
|
package model;
|
|
|
|
|
|
|
|
import java.util.Random;
|
|
|
|
|
|
|
|
public class Tile {
|
2024-10-25 00:59:58 +02:00
|
|
|
private TerrainType[] terrains; // 2 terrains maximum par tuile
|
|
|
|
private int segmentsForTerrain1; // Nombre de segments pour le premier terrain
|
2024-10-21 13:21:22 +02:00
|
|
|
private static final Random random = new Random();
|
|
|
|
|
|
|
|
public Tile() {
|
2024-10-25 00:59:58 +02:00
|
|
|
this.terrains = new TerrainType[2]; // Seulement deux terrains
|
2024-10-21 13:21:22 +02:00
|
|
|
generateTerrains();
|
2024-10-25 00:59:58 +02:00
|
|
|
assignSegments();
|
2024-10-21 13:21:22 +02:00
|
|
|
}
|
|
|
|
|
2024-10-25 00:59:58 +02:00
|
|
|
// Génère deux terrains aléatoires pour la tuile
|
2024-10-21 13:21:22 +02:00
|
|
|
private void generateTerrains() {
|
2024-10-25 00:59:58 +02:00
|
|
|
terrains[0] = generateRandomTerrain();
|
|
|
|
terrains[1] = generateRandomTerrain();
|
|
|
|
|
|
|
|
// Assure que les deux terrains sont différents
|
|
|
|
while (terrains[0] == terrains[1]) {
|
|
|
|
terrains[1] = generateRandomTerrain();
|
2024-10-21 13:21:22 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-10-25 00:59:58 +02:00
|
|
|
// Assigner le nombre de segments pour chaque terrain avec plus de diversité
|
|
|
|
private void assignSegments() {
|
|
|
|
// Terrain 1 occupe entre 1 et 5 segments, le reste pour le terrain 2
|
|
|
|
this.segmentsForTerrain1 = random.nextInt(5) + 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Génère un terrain aléatoire avec plus de variété dans les probabilités
|
2024-10-21 13:21:22 +02:00
|
|
|
private TerrainType generateRandomTerrain() {
|
2024-10-25 00:59:58 +02:00
|
|
|
int rand = random.nextInt(100);
|
2024-10-21 13:21:22 +02:00
|
|
|
|
2024-10-25 00:59:58 +02:00
|
|
|
if (rand < 15) {
|
|
|
|
return TerrainType.MER; // 15% MER
|
|
|
|
} else if (rand < 30) {
|
|
|
|
return TerrainType.CHAMP; // 15% CHAMP
|
|
|
|
} else if (rand < 50) {
|
2024-10-21 13:21:22 +02:00
|
|
|
return TerrainType.PRE; // 20% PRE
|
2024-10-25 00:59:58 +02:00
|
|
|
} else if (rand < 75) {
|
|
|
|
return TerrainType.FORET; // 25% FORET
|
2024-10-21 13:21:22 +02:00
|
|
|
} else {
|
2024-10-25 00:59:58 +02:00
|
|
|
return TerrainType.MONTAGNE; // 25% MONTAGNE
|
2024-10-21 13:21:22 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public TerrainType getTerrain(int index) {
|
2024-10-25 00:59:58 +02:00
|
|
|
if (index >= 0 && index < 2) {
|
2024-10-21 13:21:22 +02:00
|
|
|
return terrains[index];
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2024-10-25 00:59:58 +02:00
|
|
|
public int getSegmentsForTerrain(int index) {
|
|
|
|
if (index == 0) {
|
|
|
|
return segmentsForTerrain1; // Nombre de segments pour le premier terrain
|
|
|
|
} else {
|
|
|
|
return 6 - segmentsForTerrain1; // Le reste pour le second terrain
|
|
|
|
}
|
2024-10-21 13:21:22 +02:00
|
|
|
}
|
|
|
|
}
|