mirror of
https://forge.univ-lyon1.fr/tplifap4/gyromite_ya.git
synced 2024-02-27 13:31:49 +01:00
Implementation du menu + gestion d'une direction : "Action"
This commit is contained in:
@@ -16,6 +16,7 @@ import javax.swing.*;
|
||||
import modele.calculs.Controle4Directions;
|
||||
import modele.calculs.Direction;
|
||||
import modele.calculs.Jeu;
|
||||
import modele.calculs.MenuInput;
|
||||
import modele.donnees.*;
|
||||
|
||||
|
||||
@@ -39,8 +40,33 @@ public class VueControleurGyromite extends JFrame implements Observer {
|
||||
private ImageIcon icoCorde;
|
||||
private ImageIcon icoBombe;
|
||||
|
||||
private JLabel[][] tabJLabel; // cases graphique (au moment du rafraichissement, chaque case va être associée à une icône, suivant ce qui est présent dans le modèle)
|
||||
private ImageIcon titleImage;
|
||||
|
||||
private JLabel[][] tabJLabel; // cases graphique (au moment du rafraichissement, chaque case va être associée à une icône, suivant ce qui est présent dans le modèle)
|
||||
private JComponent grilleJLabels = null;
|
||||
private JComponent titleScreen = null;
|
||||
|
||||
private KeyAdapter listenerJeu = new KeyAdapter() { // new KeyAdapter() { ... } est une instance de classe anonyme, il s'agit d'un objet qui correspond au controleur dans MVC
|
||||
@Override
|
||||
public void keyPressed(KeyEvent e) {
|
||||
switch(e.getKeyCode()) { // on regarde quelle touche a été pressée
|
||||
case KeyEvent.VK_LEFT : Controle4Directions.getInstance().setDirectionCourante(Direction.gauche); break;
|
||||
case KeyEvent.VK_RIGHT : Controle4Directions.getInstance().setDirectionCourante(Direction.droite); break;
|
||||
case KeyEvent.VK_DOWN : Controle4Directions.getInstance().setDirectionCourante(Direction.bas); break;
|
||||
case KeyEvent.VK_UP : Controle4Directions.getInstance().setDirectionCourante(Direction.haut); break;
|
||||
}
|
||||
}
|
||||
};
|
||||
private KeyAdapter listenerMenu = new KeyAdapter() { // new KeyAdapter() { ... } est une instance de classe anonyme, il s'agit d'un objet qui correspond au controleur dans MVC
|
||||
@Override
|
||||
public void keyPressed(KeyEvent e) {
|
||||
switch(e.getKeyCode()) { // on regarde quelle touche a été pressée
|
||||
case KeyEvent.VK_ENTER: MenuInput.getInstance().setDirectionAction(Direction.action); break;
|
||||
case KeyEvent.VK_DOWN : MenuInput.getInstance().setDirectionAction(Direction.bas); break;
|
||||
case KeyEvent.VK_UP : MenuInput.getInstance().setDirectionAction(Direction.haut); break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public VueControleurGyromite(Jeu _jeu) {
|
||||
sizeX = jeu.SIZE_X;
|
||||
@@ -48,22 +74,19 @@ public class VueControleurGyromite extends JFrame implements Observer {
|
||||
jeu = _jeu;
|
||||
|
||||
chargerLesIcones();
|
||||
placerLesComposantsGraphiques();
|
||||
ajouterEcouteurClavier();
|
||||
setUpFenetre();
|
||||
placerLesComposantsGraphiquesMenu();
|
||||
ajouterEcouteurClavierMenu();
|
||||
}
|
||||
|
||||
private void ajouterEcouteurClavier() {
|
||||
addKeyListener(new KeyAdapter() { // new KeyAdapter() { ... } est une instance de classe anonyme, il s'agit d'un objet qui correspond au controleur dans MVC
|
||||
@Override
|
||||
public void keyPressed(KeyEvent e) {
|
||||
switch(e.getKeyCode()) { // on regarde quelle touche a été pressée
|
||||
case KeyEvent.VK_LEFT : Controle4Directions.getInstance().setDirectionCourante(Direction.gauche); break;
|
||||
case KeyEvent.VK_RIGHT : Controle4Directions.getInstance().setDirectionCourante(Direction.droite); break;
|
||||
case KeyEvent.VK_DOWN : Controle4Directions.getInstance().setDirectionCourante(Direction.bas); break;
|
||||
case KeyEvent.VK_UP : Controle4Directions.getInstance().setDirectionCourante(Direction.haut); break;
|
||||
}
|
||||
}
|
||||
});
|
||||
private void ajouterEcouteurClavierJeu() {
|
||||
removeKeyListener(listenerMenu);
|
||||
addKeyListener(listenerJeu);
|
||||
}
|
||||
|
||||
private void ajouterEcouteurClavierMenu() {
|
||||
removeKeyListener(listenerJeu);
|
||||
addKeyListener(listenerMenu);
|
||||
}
|
||||
|
||||
|
||||
@@ -75,6 +98,8 @@ public class VueControleurGyromite extends JFrame implements Observer {
|
||||
icoMur = chargerIcone("Images/Mur.png");
|
||||
icoCorde = chargerIcone("Images/Corde.png");
|
||||
icoBombe = chargerIcone("Images/Bombe.png");
|
||||
|
||||
titleImage = chargerIcone("Images/TitleScreen.png");
|
||||
}
|
||||
|
||||
private ImageIcon chargerIcone(String urlIcone) {
|
||||
@@ -90,12 +115,18 @@ public class VueControleurGyromite extends JFrame implements Observer {
|
||||
return new ImageIcon(image);
|
||||
}
|
||||
|
||||
private void placerLesComposantsGraphiques() {
|
||||
private void setUpFenetre() {
|
||||
setTitle("Gyromite");
|
||||
setSize(400, 250);
|
||||
setSize(400, 270);
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // permet de terminer l'application à la fermeture de la fenêtre
|
||||
}
|
||||
|
||||
JComponent grilleJLabels = new JPanel(new GridLayout(sizeY, sizeX)); // grilleJLabels va contenir les cases graphiques et les positionner sous la forme d'une grille
|
||||
private void placerLesComposantsGraphiquesJeu() {
|
||||
if(titleScreen != null) {
|
||||
remove(titleScreen);
|
||||
titleScreen = null;
|
||||
}
|
||||
grilleJLabels = new JPanel(new GridLayout(sizeY, sizeX)); // grilleJLabels va contenir les cases graphiques et les positionner sous la forme d'une grille
|
||||
|
||||
tabJLabel = new JLabel[sizeX][sizeY];
|
||||
|
||||
@@ -109,6 +140,16 @@ public class VueControleurGyromite extends JFrame implements Observer {
|
||||
add(grilleJLabels);
|
||||
}
|
||||
|
||||
private void placerLesComposantsGraphiquesMenu() {
|
||||
if(grilleJLabels != null) {
|
||||
remove(grilleJLabels);
|
||||
grilleJLabels = null;
|
||||
}
|
||||
titleScreen = new JLabel();
|
||||
((JLabel) titleScreen).setIcon(titleImage);
|
||||
add(titleScreen);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Il y a une grille du côté du modèle ( jeu.getGrille() ) et une grille du côté de la vue (tabJLabel)
|
||||
@@ -139,7 +180,16 @@ public class VueControleurGyromite extends JFrame implements Observer {
|
||||
|
||||
@Override
|
||||
public void update(Observable o, Object arg) {
|
||||
mettreAJourAffichage();
|
||||
switch (jeu.getState()) {
|
||||
case 0:
|
||||
break;
|
||||
case 3:
|
||||
placerLesComposantsGraphiquesJeu();
|
||||
ajouterEcouteurClavierJeu();
|
||||
case 4:
|
||||
mettreAJourAffichage();
|
||||
break;
|
||||
}
|
||||
/*
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user