Retour a l'ecran titre quand le joueur meurt

This commit is contained in:
Amaury Joly 2020-12-14 14:35:26 +01:00
parent 2435e0308c
commit 53720579b3
4 changed files with 50 additions and 23 deletions

View File

@ -46,6 +46,8 @@ public class VueControleurGyromite extends JFrame implements Observer {
private JComponent grilleJLabels = null; private JComponent grilleJLabels = null;
private JComponent titleScreen = null; private JComponent titleScreen = null;
private int lastStateLoad = -1;
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 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 @Override
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
@ -77,8 +79,6 @@ public class VueControleurGyromite extends JFrame implements Observer {
chargerLesIcones(); chargerLesIcones();
setUpFenetre(); setUpFenetre();
placerLesComposantsGraphiquesMenu();
ajouterEcouteurClavierMenu();
} }
private void ajouterEcouteurClavierJeu() { private void ajouterEcouteurClavierJeu() {
@ -149,7 +149,7 @@ public class VueControleurGyromite extends JFrame implements Observer {
grilleJLabels = null; grilleJLabels = null;
} }
titleScreen = new JLabel(); titleScreen = new JLabel();
((JLabel) titleScreen).setIcon(titleImage); titleScreen.setBackground(Color.BLACK);
add(titleScreen); add(titleScreen);
} }
@ -185,11 +185,21 @@ public class VueControleurGyromite extends JFrame implements Observer {
public void update(Observable o, Object arg) { public void update(Observable o, Object arg) {
switch (jeu.getState()) { switch (jeu.getState()) {
case 0: case 0:
if(lastStateLoad != 0) {
placerLesComposantsGraphiquesMenu();
ajouterEcouteurClavierMenu();
((JLabel) titleScreen).setIcon(titleImage);
lastStateLoad = 0;
}
((JLabel) titleScreen).setIcon(titleImage);
break; break;
case 3: case 2:
placerLesComposantsGraphiquesJeu(); if(lastStateLoad != 2) {
ajouterEcouteurClavierJeu(); placerLesComposantsGraphiquesJeu();
case 4: ajouterEcouteurClavierJeu();
mettreAJourAffichage();
lastStateLoad = 2;
}
mettreAJourAffichage(); mettreAJourAffichage();
break; break;
} }

View File

@ -38,16 +38,15 @@ public class Jeu {
private Ordonnanceur ordonnanceur = new Ordonnanceur(this); private Ordonnanceur ordonnanceur = new Ordonnanceur(this);
// Etat du jeu courant. 0 = ecran titre, 2 = Menu choix, 4 = Plateau Jeu (les valeurs entre sont les valeurs de transitions) // Etat du jeu courant. 0 = ecran titre, 1 = Menu choix, 2 = Plateau Jeu
private int state = 0; private int state;
public synchronized int getState() { public synchronized int getState() {
int retour = state; return state;
if (state % 2 == 1) state ++;
return retour;
} }
public Jeu() { public Jeu() {
MenuInput.getInstance().addEntiteDynamique(new Menu(this));
startTitleScreen(); startTitleScreen();
} }
@ -63,6 +62,11 @@ public class Jeu {
public ObjetGyromide[][][] getGrille() { public ObjetGyromide[][][] getGrille() {
return grilleEntites; return grilleEntites;
} }
private void resetJeu() {
grilleEntites = new ObjetGyromide[SIZE_X][SIZE_Y][2];
map.clear();
hector = null;
}
public Heros getHector() { public Heros getHector() {
return hector; return hector;
@ -70,15 +74,15 @@ public class Jeu {
// PARTIE INITIALISATIONS // PARTIE INITIALISATIONS
private void initialisationDesEntites() { private void initialisationDesEntites() {
this.state = 3; this.state = 2;
getOrdonnanceur().clear();
resetJeu();
LecteurFichier.loadMap("Map/test.gyro", this); LecteurFichier.loadMap("Map/test.gyro", this);
System.out.println("Map loaded");
} }
public void startTitleScreen() { public void startTitleScreen() {
this.state = 0; this.state = 0;
getOrdonnanceur().clear();
MenuInput.getInstance().addEntiteDynamique(new Menu(this));
ordonnanceur.add(MenuInput.getInstance()); ordonnanceur.add(MenuInput.getInstance());
} }
@ -170,7 +174,7 @@ public class Jeu {
private void killEntite(Entite e, Point pCourant) { private void killEntite(Entite e, Point pCourant) {
grilleEntites[pCourant.x][pCourant.y][1] = null; grilleEntites[pCourant.x][pCourant.y][1] = null;
map.put(e, null); map.remove(e);
e.tuer(); e.tuer();
@ -180,7 +184,9 @@ public class Jeu {
} }
// TODO // TODO
private void killPlayer(Entite e) { private void killPlayer(Entite e) {
startTitleScreen();
System.out.println("Techniquement le joueur est mort"); System.out.println("Techniquement le joueur est mort");
} }
private boolean deplacerColonne(Colonne c, Point pCible, Direction d) { private boolean deplacerColonne(Colonne c, Point pCible, Direction d) {

View File

@ -10,13 +10,21 @@ public class Ordonnanceur extends Observable implements Runnable {
private ArrayList<RealisateurDeDeplacement> lstDeplacements = new ArrayList<RealisateurDeDeplacement>(); private ArrayList<RealisateurDeDeplacement> lstDeplacements = new ArrayList<RealisateurDeDeplacement>();
private ArrayList<RealisateurDeDeplacement> buffer_lstDeplacements = new ArrayList<RealisateurDeDeplacement>(); private ArrayList<RealisateurDeDeplacement> buffer_lstDeplacements = new ArrayList<RealisateurDeDeplacement>();
private long pause; private long pause;
private boolean toClear = false;
public void add(RealisateurDeDeplacement deplacement) { public void add(RealisateurDeDeplacement deplacement) {
buffer_lstDeplacements.add(deplacement); buffer_lstDeplacements.add(deplacement);
} }
public void clear() {
toClear = true;
}
private void addBuffer() { private void addBuffer() {
for (RealisateurDeDeplacement r : buffer_lstDeplacements) for (RealisateurDeDeplacement r : buffer_lstDeplacements)
lstDeplacements.add(r); lstDeplacements.add(r);
buffer_lstDeplacements.clear(); buffer_lstDeplacements.clear();
forceUpdate();
} }
public Ordonnanceur(Jeu _jeu) { public Ordonnanceur(Jeu _jeu) {
@ -28,13 +36,15 @@ public class Ordonnanceur extends Observable implements Runnable {
new Thread(this).start(); new Thread(this).start();
} }
public void forceUpdate() {
setChanged();
notifyObservers();
}
@Override @Override
public void run() { public void run() {
boolean update = false; boolean update = false;
setChanged();
notifyObservers();
while(true) { while(true) {
switch (jeu.getState()) { switch (jeu.getState()) {
case 0: case 0:
@ -45,8 +55,7 @@ public class Ordonnanceur extends Observable implements Runnable {
MenuInput.getInstance().resetDirection(); MenuInput.getInstance().resetDirection();
break; break;
case 3: case 2:
case 4:
jeu.resetCmptDepl(); jeu.resetCmptDepl();
for (RealisateurDeDeplacement d : lstDeplacements) { for (RealisateurDeDeplacement d : lstDeplacements) {
if (d.realiserDeplacement()) if (d.realiserDeplacement())
@ -63,6 +72,8 @@ public class Ordonnanceur extends Observable implements Runnable {
notifyObservers(); notifyObservers();
} }
if(toClear) {lstDeplacements.clear();toClear = false;}
addBuffer(); addBuffer();
try { try {

View File

@ -13,7 +13,7 @@ public abstract class DecorFond extends ElementFond {
} }
@Override @Override
public boolean estRectable() { public boolean estRecoltable() {
return false; return false;
} }
} }