Tile par rapport a la base de donnée + fix rotation tuile
This commit is contained in:
@@ -1,76 +1,41 @@
|
||||
package model;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class Tile {
|
||||
private int id; // Ajoute l'attribut id
|
||||
private TerrainType[] terrains; // 2 terrains maximum par tuile
|
||||
private int segmentsForTerrain1; // Nombre de segments pour le premier terrain
|
||||
private static final Random random = new Random();
|
||||
private int segmentsForTerrain1;
|
||||
private int rotation;
|
||||
|
||||
public Tile() {
|
||||
this.terrains = new TerrainType[2]; // Seulement deux terrains
|
||||
generateTerrains();
|
||||
assignSegments();
|
||||
this.rotation = 0; // Rotation initiale à 0
|
||||
// Constructeur modifié pour inclure l'ID
|
||||
public Tile(int id, TerrainType terrain1, TerrainType terrain2, int segmentsForTerrain1) {
|
||||
this.id = id;
|
||||
this.terrains = new TerrainType[]{terrain1, terrain2};
|
||||
this.segmentsForTerrain1 = segmentsForTerrain1;
|
||||
this.rotation = 0;
|
||||
}
|
||||
|
||||
// Méthode pour tourner la tuile dans le sens des aiguilles d'une montre
|
||||
public void rotateClockwise() {
|
||||
rotation = (rotation + 1) % 6; // Modulo 6 pour garder une rotation entre 0 et 5
|
||||
rotation = (rotation + 1) % 6;
|
||||
}
|
||||
|
||||
// Méthode pour obtenir la rotation actuelle
|
||||
public void rotateCounterClockwise() {
|
||||
rotation = (rotation + 5) % 6; // Tourner dans le sens inverse, équivalent à -1 dans un modulo 6
|
||||
}
|
||||
|
||||
|
||||
public int getRotation() {
|
||||
return rotation;
|
||||
}
|
||||
|
||||
// Génère deux terrains aléatoires pour la tuile
|
||||
private void generateTerrains() {
|
||||
terrains[0] = generateRandomTerrain();
|
||||
terrains[1] = generateRandomTerrain();
|
||||
|
||||
// Assure que les deux terrains sont différents
|
||||
while (terrains[0] == terrains[1]) {
|
||||
terrains[1] = generateRandomTerrain();
|
||||
}
|
||||
}
|
||||
|
||||
// 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
|
||||
private TerrainType generateRandomTerrain() {
|
||||
int rand = random.nextInt(100);
|
||||
|
||||
if (rand < 15) {
|
||||
return TerrainType.MER; // 15% MER
|
||||
} else if (rand < 30) {
|
||||
return TerrainType.CHAMP; // 15% CHAMP
|
||||
} else if (rand < 50) {
|
||||
return TerrainType.PRE; // 20% PRE
|
||||
} else if (rand < 75) {
|
||||
return TerrainType.FORET; // 25% FORET
|
||||
} else {
|
||||
return TerrainType.MONTAGNE; // 25% MONTAGNE
|
||||
}
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public TerrainType getTerrain(int index) {
|
||||
if (index >= 0 && index < 2) {
|
||||
return terrains[index];
|
||||
}
|
||||
return null;
|
||||
return index >= 0 && index < 2 ? terrains[index] : null;
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
return index == 0 ? segmentsForTerrain1 : 6 - segmentsForTerrain1;
|
||||
}
|
||||
}
|
||||
|
44
src/main/java/model/TileDatabaseManager.java
Normal file
44
src/main/java/model/TileDatabaseManager.java
Normal file
@@ -0,0 +1,44 @@
|
||||
package model;
|
||||
|
||||
import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TileDatabaseManager {
|
||||
private static final String DB_URL = "jdbc:mariadb://dwarves.iut-fbleau.fr/akagundu";
|
||||
private static final String USER = "akagundu";
|
||||
private static final String PASSWORD = "dersim62Lodek";
|
||||
|
||||
public List<Tile> getTilesBySeries(int idSeries) {
|
||||
List<Tile> tiles = new ArrayList<>();
|
||||
String query = "SELECT id, couleur1, couleur2, chiffre FROM Tuile WHERE id_serie = ? ORDER BY id ASC";
|
||||
|
||||
try (Connection cnx = DriverManager.getConnection(DB_URL, USER, PASSWORD);
|
||||
PreparedStatement pst = cnx.prepareStatement(query)) {
|
||||
pst.setInt(1, idSeries);
|
||||
|
||||
try (ResultSet rs = pst.executeQuery()) {
|
||||
while (rs.next()) {
|
||||
int id = rs.getInt("id"); // Récupère l'ID de la tuile
|
||||
String couleur1 = rs.getString("couleur1");
|
||||
String couleur2 = rs.getString("couleur2");
|
||||
int segmentsForTerrain1 = rs.getInt("chiffre");
|
||||
|
||||
System.out.println("Récupération de la tuile avec ID : " + id); // Message de débogage
|
||||
|
||||
// Crée la tuile avec l'ID et les autres paramètres
|
||||
Tile tile = new Tile(id, TerrainType.valueOf(couleur1),
|
||||
couleur2 != null ? TerrainType.valueOf(couleur2) : null,
|
||||
segmentsForTerrain1);
|
||||
tiles.add(tile);
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.err.println("Database error: " + e.getMessage());
|
||||
}
|
||||
return tiles;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
Reference in New Issue
Block a user