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;
/** Couleur de la voiture */
public final Color color;
/** Visuel de la voiture */
private final boolean visual;
public CarInfo(String name, Color color, boolean visual)
{
this.name = name;
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;
/** État du jeu (par exemple, positions, carburant) */
private final State state;
@@ -146,22 +142,11 @@ public class Game
*/
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();
// Création de chaque voiture avec son Dashboard
int i = 0;
for (CarInfo ci : carInfos)
{
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++;
}
cars.add(new Car(ci.name, ci.color, loop, state));
return this;
}
@@ -228,7 +213,6 @@ public class Game
for (GObserver o : obs)
{
boolean isSuccess = o.apply();
System.out.println(o.getClass());
if (!isSuccess)
{
System.err.println("Une erreur s'est produite pendant le jeu.");
@@ -303,4 +287,24 @@ public class Game
{
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 2", Color.PINK, true))
.addCar(new Game.CarInfo("Voiture 3", Color.RED, true))
.setTime(1000)
.setMap(m)
.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("</table></html>");
System.out.println(s);
label.setText(s.toString());
}