53 lines
1.9 KiB
Java
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);
|
|
}
|
|
}
|