feat: ajout fonction ajout visuel

This commit is contained in:
2025-11-10 16:01:38 +01:00
parent f9e1580da5
commit d9f3d848e0
3 changed files with 53 additions and 43 deletions

View File

@@ -21,14 +21,11 @@ public class Game
public final String name; public final String name;
/** Couleur de la voiture */ /** Couleur de la voiture */
public final Color color; public final Color color;
/** Visuel de la voiture */
private final boolean visual;
public CarInfo(String name, Color color, boolean visual) public CarInfo(String name, Color color, boolean visual)
{ {
this.name = name; this.name = name;
this.color = color; this.color = color;
this.visual = visual;
} }
} }
@@ -102,7 +99,6 @@ public class Game
} }
} }
/** Carte sur laquelle le jeu se déroule */
private final Map map; private final Map map;
/** État du jeu (par exemple, positions, carburant) */ /** État du jeu (par exemple, positions, carburant) */
private final State state; private final State state;
@@ -146,22 +142,11 @@ public class Game
*/ */
private Game init(ArrayList<CarInfo> carInfos) private Game init(ArrayList<CarInfo> carInfos)
{ {
// Création des vues principales
new Track(this, "Piste Formule 1", 1000, 500, 1, 1);
new Rankboard(this, "Score", 200, 200, 0, 510);
final int loop = map.getPathSize(); final int loop = map.getPathSize();
// Création de chaque voiture avec son Dashboard // Création de chaque voiture avec son Dashboard
int i = 0;
for (CarInfo ci : carInfos) for (CarInfo ci : carInfos)
{ cars.add(new Car(ci.name, ci.color, loop, state));
Car car = new Car(ci.name, ci.color, loop, state);
String name = car.getName();
new Dashboard(this, car, name, 300, 200, 1000, 200*i);
cars.add(car);
i++;
}
return this; return this;
} }
@@ -179,7 +164,7 @@ public class Game
for (Car car : cars) for (Car car : cars)
{ {
if (car.getFuel() == 0) if (car.getFuel() == 0)
return true; return true;
} }
return false; return false;
} }
@@ -228,7 +213,6 @@ public class Game
for (GObserver o : obs) for (GObserver o : obs)
{ {
boolean isSuccess = o.apply(); boolean isSuccess = o.apply();
System.out.println(o.getClass());
if (!isSuccess) if (!isSuccess)
{ {
System.err.println("Une erreur s'est produite pendant le jeu."); System.err.println("Une erreur s'est produite pendant le jeu.");
@@ -250,10 +234,10 @@ public class Game
{ {
for (Car car : cars) for (Car car : cars)
{ {
synchronized(this) synchronized(this)
{ {
while (isPaused) while (isPaused)
wait(); wait();
} }
car.run(); car.run();
@@ -303,4 +287,24 @@ public class Game
{ {
return isPaused; return isPaused;
} }
/** Carte sur laquelle le jeu se déroule */
public Game addVisual(Class<? extends GameView> c, String title, int width, int height, int x, int y)
{
if (c == Rankboard.class)
obs.add(new Rankboard(this, title, width, height, x, y));
else if (c == Track.class)
obs.add(new Track(this, title, width, height, x, y));
else if (c == Dashboard.class)
{
for (Car car : cars)
if (car.getName().equals(title))
{
obs.add(new Dashboard(this, car, title, width, height, x, y));
break;
}
}
return this;
}
} }

View File

@@ -23,8 +23,15 @@ public class Main {
.addCar(new Game.CarInfo("Voiture 1", Color.BLUE, true)) .addCar(new Game.CarInfo("Voiture 1", Color.BLUE, true))
.addCar(new Game.CarInfo("Voiture 2", Color.PINK, true)) .addCar(new Game.CarInfo("Voiture 2", Color.PINK, true))
.addCar(new Game.CarInfo("Voiture 3", Color.RED, true)) .addCar(new Game.CarInfo("Voiture 3", Color.RED, true))
.setTime(1000)
.setMap(m) .setMap(m)
.build(); .build();
game.run(); game
.addVisual(Dashboard.class, "Voiture 1", 300, 200, 1000, 0)
.addVisual(Dashboard.class, "Voiture 2", 300, 200, 1000, 200)
.addVisual(Dashboard.class, "Voiture 3", 300, 200, 1000, 400)
.addVisual(Track.class, "Piste Formule 1", 1000, 500, 1, 1)
.addVisual(Rankboard.class, "Score", 200, 200, 0, 510)
.run();
} }
} }

View File

@@ -59,7 +59,6 @@ public class Rankboard extends GameView
s.append("<tr><td>" + c.getName() + ": " + c.getScore() + "%</td></tr>"); s.append("<tr><td>" + c.getName() + ": " + c.getScore() + "%</td></tr>");
} }
s.append("</table></html>"); s.append("</table></html>");
System.out.println(s);
label.setText(s.toString()); label.setText(s.toString());
} }