mirror of
https://github.com/guezoloic/L3-racing-game.git
synced 2026-03-31 12:21:34 +00:00
feat!: rework de tout le projet
This commit is contained in:
63
src/visual/GameView.java
Normal file
63
src/visual/GameView.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package visual;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.GraphicsEnvironment;
|
||||
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JFrame;
|
||||
|
||||
import model.Game;
|
||||
|
||||
/**
|
||||
* 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 implements Game.Observer {
|
||||
/** Fenêtre associée à cette vue */
|
||||
protected final JFrame frame;
|
||||
protected final Game game;
|
||||
|
||||
/**
|
||||
* Bloc statique exécuté au chargement de la classe pour vérifier
|
||||
* si le programme dispose d'un environnement graphique.
|
||||
*/
|
||||
static {
|
||||
if (GraphicsEnvironment.isHeadless()) {
|
||||
System.err.println("Aucun serveur d'affichage trouvé");
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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(Game game, String title, int width, int height, int x, int y) {
|
||||
this.game = game;
|
||||
|
||||
// la fenetre
|
||||
this.frame = new JFrame(title);
|
||||
// position fenetre
|
||||
frame.setLocation(x, y);
|
||||
// taille fenetre
|
||||
frame.setSize(width, height);
|
||||
// bool pour resize la fenetre
|
||||
frame.setResizable(true);
|
||||
// le bouton close par defaut
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
// acceder a l'interieur de la fenetre
|
||||
frame.setContentPane(this);
|
||||
// visibilité de la fenetre
|
||||
frame.setVisible(true);
|
||||
// mettre un layout (la disposition des elements de la fenetre)
|
||||
frame.setLayout(new BorderLayout());
|
||||
|
||||
game.addObserver(this);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user