Files
SAE31_2024/src/main/java/model/Tile.java

65 lines
2.0 KiB
Java
Raw Normal View History

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
}
}