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

View File

@ -38,16 +38,15 @@ public class Jeu {
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)
private int state = 0;
// Etat du jeu courant. 0 = ecran titre, 1 = Menu choix, 2 = Plateau Jeu
private int state;
public synchronized int getState() {
int retour = state;
if (state % 2 == 1) state ++;
return retour;
return state;
}
public Jeu() {
MenuInput.getInstance().addEntiteDynamique(new Menu(this));
startTitleScreen();
}
@ -63,6 +62,11 @@ public class Jeu {
public ObjetGyromide[][][] getGrille() {
return grilleEntites;
}
private void resetJeu() {
grilleEntites = new ObjetGyromide[SIZE_X][SIZE_Y][2];
map.clear();
hector = null;
}
public Heros getHector() {
return hector;
@ -70,15 +74,15 @@ public class Jeu {
// PARTIE INITIALISATIONS
private void initialisationDesEntites() {
this.state = 3;
this.state = 2;
getOrdonnanceur().clear();
resetJeu();
LecteurFichier.loadMap("Map/test.gyro", this);
System.out.println("Map loaded");
}
public void startTitleScreen() {
this.state = 0;
MenuInput.getInstance().addEntiteDynamique(new Menu(this));
getOrdonnanceur().clear();
ordonnanceur.add(MenuInput.getInstance());
}
@ -170,7 +174,7 @@ public class Jeu {
private void killEntite(Entite e, Point pCourant) {
grilleEntites[pCourant.x][pCourant.y][1] = null;
map.put(e, null);
map.remove(e);
e.tuer();
@ -180,7 +184,9 @@ public class Jeu {
}
// TODO
private void killPlayer(Entite e) {
startTitleScreen();
System.out.println("Techniquement le joueur est mort");
}
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> buffer_lstDeplacements = new ArrayList<RealisateurDeDeplacement>();
private long pause;
private boolean toClear = false;
public void add(RealisateurDeDeplacement deplacement) {
buffer_lstDeplacements.add(deplacement);
}
public void clear() {
toClear = true;
}
private void addBuffer() {
for (RealisateurDeDeplacement r : buffer_lstDeplacements)
lstDeplacements.add(r);
buffer_lstDeplacements.clear();
forceUpdate();
}
public Ordonnanceur(Jeu _jeu) {
@ -28,13 +36,15 @@ public class Ordonnanceur extends Observable implements Runnable {
new Thread(this).start();
}
public void forceUpdate() {
setChanged();
notifyObservers();
}
@Override
public void run() {
boolean update = false;
setChanged();
notifyObservers();
while(true) {
switch (jeu.getState()) {
case 0:
@ -45,8 +55,7 @@ public class Ordonnanceur extends Observable implements Runnable {
MenuInput.getInstance().resetDirection();
break;
case 3:
case 4:
case 2:
jeu.resetCmptDepl();
for (RealisateurDeDeplacement d : lstDeplacements) {
if (d.realiserDeplacement())
@ -63,6 +72,8 @@ public class Ordonnanceur extends Observable implements Runnable {
notifyObservers();
}
if(toClear) {lstDeplacements.clear();toClear = false;}
addBuffer();
try {

View File

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