mirror of
https://github.com/guezoloic/L3-racing-game.git
synced 2026-03-28 19:13:41 +00:00
feat(GameView.java): ajout commentaire
This commit is contained in:
@@ -4,11 +4,31 @@ import java.util.ArrayList;
|
|||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Classe abstraite représentant une vue graphique du jeu.
|
||||||
|
* Chaque GameView est associée à une fenêtre JFrame et s'inscrit dans
|
||||||
|
* la liste globale des vues pour permettre des mises à jour centralisées.
|
||||||
|
*/
|
||||||
public abstract class GameView extends JComponent
|
public abstract class GameView extends JComponent
|
||||||
{
|
{
|
||||||
private static ArrayList<GameView> vobs = new ArrayList<>();
|
/**
|
||||||
protected final JFrame frame;
|
* Liste statique contenant toutes les instances actives de GameView.
|
||||||
|
* Permet d'itérer sur toutes les vues pour les mettre à jour simultanément.
|
||||||
|
*/
|
||||||
|
private static ArrayList<GameView> vobs = new ArrayList<>();
|
||||||
|
|
||||||
|
/** Fenêtre associée à cette vue */
|
||||||
|
protected final JFrame frame;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construit une nouvelle GameView avec une fenêtre JFrame.
|
||||||
|
*
|
||||||
|
* @param title Titre de la fenêtre
|
||||||
|
* @param width Largeur de la fenêtre
|
||||||
|
* @param height Hauteur de la fenêtre
|
||||||
|
* @param x Position horizontale de la fenêtre à l'écran
|
||||||
|
* @param y Position verticale de la fenêtre à l'écran
|
||||||
|
*/
|
||||||
protected GameView(String title, int width, int height, int x, int y)
|
protected GameView(String title, int width, int height, int x, int y)
|
||||||
{
|
{
|
||||||
// la fenetre
|
// la fenetre
|
||||||
@@ -30,25 +50,44 @@ public abstract class GameView extends JComponent
|
|||||||
register();
|
register();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected GameView register()
|
/**
|
||||||
{
|
* Enregistre cette GameView dans la liste statique des vues.
|
||||||
|
*
|
||||||
|
* @return l'instance courante (permet le chainage)
|
||||||
|
*/
|
||||||
|
protected GameView register()
|
||||||
|
{
|
||||||
vobs.add(this);
|
vobs.add(this);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected GameView unregister()
|
/**
|
||||||
{
|
* Désenregistre cette GameView de la liste statique des vues.
|
||||||
|
*
|
||||||
|
* @return l'instance courante (permet le chainage)
|
||||||
|
*/
|
||||||
|
protected GameView unregister()
|
||||||
|
{
|
||||||
vobs.remove(this);
|
vobs.remove(this);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void update()
|
/**
|
||||||
{
|
* Met à jour toutes les GameView enregistrées.
|
||||||
for (GameView o : vobs)
|
* Cette méthode itère sur la liste globale et appelle run() sur chaque instance.
|
||||||
{
|
* Utile pour rafraichir l'affichage de toutes les vues en même temps.
|
||||||
o.run();
|
*/
|
||||||
}
|
public static void update()
|
||||||
}
|
{
|
||||||
|
for (GameView o : vobs)
|
||||||
|
{
|
||||||
|
o.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract void run();
|
/**
|
||||||
|
* Méthode abstraite à implémenter par les classes filles.
|
||||||
|
* Elle est appelée par GameView.update() pour mettre à jour le contenu de la vue.
|
||||||
|
*/
|
||||||
|
protected abstract void run();
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user