SAE21_2022/src/AutoSimulationView.java
2023-04-28 23:24:33 +02:00

53 lines
1.9 KiB
Java

import javax.swing.*;
import java.awt.*;
/**
* The view for the automatic simulation
* Display directly the success rate and the average number of moves of the simulations
* @version 1.1
* @author Amir Daouadi
* @author Lyanis Souidi
*/
public class AutoSimulationView extends JPanel {
public final AutoSimulation model;
/**
* Constructor
* @param model The automatic simulation model
*/
public AutoSimulationView(AutoSimulation model) {
super();
this.model = model;
this.setOpaque(false);
this.setPreferredSize(new Dimension(700, 500));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (this.model.getSimulations()[0].getMoves() == 0) return;
g.setFont(new Font("Arial", Font.PLAIN, 20));
FontMetrics metrics = g.getFontMetrics(g.getFont());
int y = 0;
int endedSimulations = this.model.getNumberOfEndedSimulations();
int totalSimulations = this.model.getSimulations().length;
int index = endedSimulations >= totalSimulations ? totalSimulations - 1 : endedSimulations;
Simulation lastSimulation = this.model.getSimulations()[index];
if (!lastSimulation.isEnded()) {
y = 50;
g.setColor(Color.RED);
String simulationStr = "Simulation " + endedSimulations + "/" + totalSimulations + " : " + lastSimulation.getMoves() + " mouvements";
g.drawString(simulationStr, (getWidth() - metrics.stringWidth(simulationStr)) / 2, ((getHeight() - metrics.getHeight()) / 2 + metrics.getAscent()) - 50);
}
g.setColor(Color.BLACK);
String movesStr = "Nombre de mouvements moyen : " + this.model.getAverageMoves();
g.drawString(movesStr, (getWidth() - metrics.stringWidth(movesStr)) / 2, ((getHeight() - metrics.getHeight()) / 2 + metrics.getAscent()) + y);
}
}