resolution problème de tuiles

This commit is contained in:
Lenny FOULOU
2024-11-19 21:50:14 +01:00
parent e7f3da2d68
commit 42c52e011c
4 changed files with 59 additions and 46 deletions

View File

@@ -3,24 +3,30 @@ package model;
public class Tile {
private final Terrain terrain1;
private final Terrain terrain2;
private final int terrain1Sides; // Nombre de côtés attribués à terrain1 (1, 2 ou 3)
// Constructeur pour une tuile avec un ou deux terrains
public Tile(Terrain terrain1, Terrain terrain2) {
public Tile(Terrain terrain1, Terrain terrain2, int terrain1Sides) {
this.terrain1 = terrain1;
this.terrain2 = terrain2;
this.terrain1Sides = terrain1Sides;
}
// Getter pour terrain1
public Terrain getTerrain1() {
return terrain1;
}
// Getter pour terrain2
public Terrain getTerrain2() {
return terrain2;
}
// Vérifie si la tuile contient un seul terrain
public int getTerrain1Sides() {
return terrain1Sides;
}
public int getTerrain2Sides() {
return 6 - terrain1Sides; // Le reste des côtés
}
public boolean hasSingleTerrain() {
return terrain2 == null;
}

View File

@@ -9,14 +9,23 @@ public class TileGenerator {
this.random = new Random(seed);
}
// Générer une tuile avec un ou deux terrains
public Tile generateRandomTile() {
// Générer un terrain aléatoire
Terrain terrain1 = Terrain.values()[random.nextInt(Terrain.values().length)];
// Décider si la tuile a un seul terrain ou deux
Terrain terrain2 = random.nextBoolean() ? Terrain.values()[random.nextInt(Terrain.values().length)] : null;
if (random.nextBoolean()) { // 50% chance d'avoir un seul terrain
return new Tile(terrain1, null, 6); // Toutes les faces au même terrain
}
return new Tile(terrain1, terrain2);
Terrain terrain2;
do {
terrain2 = Terrain.values()[random.nextInt(Terrain.values().length)];
} while (terrain2 == terrain1); // Assurer deux terrains différents
int terrain1Sides = switch (random.nextInt(3)) { // 0, 1 ou 2 -> 1+5, 2+4, 3+3
case 0 -> 1;
case 1 -> 2;
default -> 3;
};
return new Tile(terrain1, terrain2, terrain1Sides);
}
}