mirror of
https://github.com/guezoloic/L3-racing-game.git
synced 2026-03-28 19:13:41 +00:00
81 lines
2.3 KiB
Java
81 lines
2.3 KiB
Java
package view;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.awt.geom.Ellipse2D;
|
|
import model.*;
|
|
|
|
/**
|
|
* Panneau qui dessine le circuit et les voitures.
|
|
* Il se met à jour à chaque étape du jeu.
|
|
*/
|
|
public class PanneauCircuit extends JPanel {
|
|
|
|
private Game jeu;
|
|
|
|
public PanneauCircuit(Game jeu) {
|
|
this.jeu = jeu;
|
|
setBackground(Color.DARK_GRAY);
|
|
}
|
|
|
|
public void mettreAJour(Game jeu) {
|
|
this.jeu = jeu;
|
|
repaint();
|
|
}
|
|
|
|
@Override
|
|
protected void paintComponent(Graphics g) {
|
|
super.paintComponent(g);
|
|
Graphics2D g2 = (Graphics2D) g;
|
|
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
|
|
|
Map map = jeu.getMap();
|
|
int tailleCase = 40;
|
|
|
|
// Dessin de la grille
|
|
for (int y = 0; y < 10; y++) {
|
|
for (int x = 0; x < 20; x++) {
|
|
Circuit.Cell cell = map.getCell(x, y);
|
|
g2.setColor(couleurCellule(cell));
|
|
g2.fillRect(x * tailleCase, y * tailleCase, tailleCase, tailleCase);
|
|
g2.setColor(Color.BLACK);
|
|
g2.drawRect(x * tailleCase, y * tailleCase, tailleCase, tailleCase);
|
|
}
|
|
}
|
|
|
|
// Dessin des voitures
|
|
Car[] voitures = jeu.getCars();
|
|
for (int i = 0; i < voitures.length; i++) {
|
|
Car v = voitures[i];
|
|
int pos = v.getPosition();
|
|
Point p = map.getPath(pos);
|
|
int px = p.x * tailleCase + 5;
|
|
int py = p.y * tailleCase + 5;
|
|
|
|
g2.setColor(couleurVoiture(i));
|
|
g2.fill(new Ellipse2D.Double(px, py, tailleCase - 10, tailleCase - 10));
|
|
}
|
|
}
|
|
|
|
/** Couleur en fonction du type de cellule */
|
|
private Color couleurCellule(Circuit.Cell cell) {
|
|
return switch (cell) {
|
|
case ROAD -> Color.GRAY;
|
|
case START -> Color.GREEN;
|
|
case FINISH -> Color.RED;
|
|
case YROAD -> Color.YELLOW;
|
|
default -> Color.WHITE;
|
|
};
|
|
}
|
|
|
|
/** Couleur de chaque voiture */
|
|
private Color couleurVoiture(int i) {
|
|
return switch (i) {
|
|
case 0 -> Color.RED;
|
|
case 1 -> Color.BLUE;
|
|
case 2 -> Color.ORANGE;
|
|
default -> Color.MAGENTA;
|
|
};
|
|
}
|
|
}
|