mirror of
https://github.com/guezoloic/L3-racing-game.git
synced 2026-03-31 04:11:33 +00:00
Ajout de la partie view du projet
This commit is contained in:
80
view/PanneauCircuit.java
Normal file
80
view/PanneauCircuit.java
Normal file
@@ -0,0 +1,80 @@
|
||||
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;
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user