makefile_compilation_erreur #28

Merged
Hugo RABAN merged 3 commits from makefile_compilation_erreur into master 2026-02-05 20:53:19 +01:00
3 changed files with 46 additions and 5 deletions
Showing only changes of commit 2db0212b31 - Show all commits

View File

@@ -221,6 +221,12 @@ public class ArenaWindow extends JFrame {
Thread arenaThread = new Thread(() -> { Thread arenaThread = new Thread(() -> {
SwingUtilities.invokeLater(() -> progressDialog.setVisible(true)); SwingUtilities.invokeLater(() -> progressDialog.setVisible(true));
// Statistiques pour déboguer
int bot1Wins = 0;
int bot2Wins = 0;
int draws = 0;
int errors = 0;
for (int i = 1; i <= nbParties; i++) { for (int i = 1; i <= nbParties; i++) {
final int partieNum = i; final int partieNum = i;
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
@@ -234,6 +240,15 @@ public class ArenaWindow extends JFrame {
Result result = game.run(); Result result = game.run();
String winner = getWinnerName(result, bot1Type, bot2Type); String winner = getWinnerName(result, bot1Type, bot2Type);
// Mettre à jour les statistiques
if (result == Result.WIN) {
bot1Wins++;
} else if (result == Result.LOSS) {
bot2Wins++;
} else if (result == Result.DRAW) {
draws++;
}
// Ajouter au tableau dans le thread EDT // Ajouter au tableau dans le thread EDT
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
tableModel.addRow(new Object[]{ tableModel.addRow(new Object[]{
@@ -244,6 +259,7 @@ public class ArenaWindow extends JFrame {
}); });
}); });
} catch (Exception e) { } catch (Exception e) {
errors++;
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
tableModel.addRow(new Object[]{ tableModel.addRow(new Object[]{
"Partie " + partieNum, "Partie " + partieNum,
@@ -255,14 +271,33 @@ public class ArenaWindow extends JFrame {
} }
} }
// Fermer le dialogue et afficher le message de fin // Afficher les statistiques finales
final int finalBot1Wins = bot1Wins;
final int finalBot2Wins = bot2Wins;
final int finalDraws = draws;
final int finalErrors = errors;
// Fermer le dialogue et afficher le message de fin avec statistiques
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
progressDialog.dispose(); progressDialog.dispose();
String statsMessage = String.format(
"Toutes les parties sont terminées !\n\n" +
"Statistiques :\n" +
"- %s (Bot 1) : %d victoires\n" +
"- %s (Bot 2) : %d victoires\n" +
"- Matchs nuls : %d\n" +
"- Erreurs : %d",
bot1Type, finalBot1Wins,
bot2Type, finalBot2Wins,
finalDraws,
finalErrors
);
Object[] options = {"OK", "Quitter le jeu"}; Object[] options = {"OK", "Quitter le jeu"};
int choice = JOptionPane.showOptionDialog( int choice = JOptionPane.showOptionDialog(
this, this,
"Toutes les parties sont terminées !", statsMessage,
"Arène terminée", "Arène terminée",
JOptionPane.DEFAULT_OPTION, JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE, JOptionPane.INFORMATION_MESSAGE,

View File

@@ -51,9 +51,16 @@ public class AvalamBoard extends AbstractBoard {
super(startingPlayer, new ArrayDeque<>()); super(startingPlayer, new ArrayDeque<>());
this.grid = new Tower[SIZE][SIZE]; this.grid = new Tower[SIZE][SIZE];
// Copie profonde : créer de nouvelles tours pour éviter que toutes les parties partagent les mêmes objets
for (int r = 0; r < SIZE; r++) for (int r = 0; r < SIZE; r++)
for (int c = 0; c < SIZE; c++) for (int c = 0; c < SIZE; c++) {
this.grid[r][c] = initialGrid[r][c]; Tower t = initialGrid[r][c];
if (t == null) {
this.grid[r][c] = null;
} else {
this.grid[r][c] = new Tower(t.getHeight(), t.getColor());
}
}
} }
/** /**

View File

@@ -233,7 +233,6 @@ public class AvalamWindow extends JFrame {
} else if (mode == GameMode.PVALPHA) { } else if (mode == GameMode.PVALPHA) {
botMove = alphaBot.giveYourMove(board.safeCopy()); botMove = alphaBot.giveYourMove(board.safeCopy());
} else { } else {
// A FAIRE PLUS TARD (PVGOD)
botMove = divineBot.giveYourMove(board.safeCopy()); botMove = divineBot.giveYourMove(board.safeCopy());
} }