diff --git a/src/Bonus.java b/src/Bonus.java index 688fa9b..ad057b5 100644 --- a/src/Bonus.java +++ b/src/Bonus.java @@ -2,6 +2,7 @@ package linea; import java.awt.Color; import java.awt.Graphics; +import java.util.List; public class Bonus extends ObjetGraphique { @@ -10,14 +11,13 @@ public class Bonus extends ObjetGraphique { protected int compteurFrames = 0; protected boolean dejaCapture = false; - protected Ligne maLigne; - protected Cercle monCercle; + protected List joueurs; protected Jeu monJeu; - public Bonus(Ligne l, Cercle c, Jeu j) { + public Bonus(Ligne l, List joueurs, Jeu j) { this.maLigne = l; - this.monCercle = c; + this.joueurs = joueurs; this.monJeu = j; this.couleur = Color.GREEN; } @@ -25,11 +25,7 @@ public class Bonus extends ObjetGraphique { @Override void Afficher(Graphics g) { if (actif) { - if (dejaCapture) { - g.setColor(Color.BLUE); - } else { - g.setColor(this.couleur); - } + g.setColor(dejaCapture ? Color.BLUE : this.couleur); g.fillRect((int)Math.round(x), (int)Math.round(y), (int)taille, (int)taille); } } @@ -40,12 +36,9 @@ public class Bonus extends ObjetGraphique { compteurFrames++; } - if (compteurFrames >= 220 && !actif) { - actif = true; dejaCapture = false; - x = 800; double hauteurLigne = 300; @@ -69,26 +62,19 @@ public class Bonus extends ObjetGraphique { double vitesseLigne = monJeu.gestionnaireNiveau.getVitesseScroll(); x -= vitesseLigne; - double centreX = x + (taille / 2.0); - - if (centreX <= monCercle.x && centreX > monCercle.x - vitesseLigne) { - - double hautCercle = monCercle.y - monCercle.getRayon(); - double basCercle = monCercle.y + monCercle.getRayon(); - - if (y > hautCercle && (y + taille) < basCercle) { - - if (!dejaCapture) { - monJeu.vies += 1; + if (!dejaCapture) { + for (Joueur joueur : joueurs) { + if (joueur.verifierCollisionCollectible(x, y, taille, vitesseLigne)) { + joueur.ajouterVie(); dejaCapture = true; + break; } } } - // 2. Quand il sort de l'écran, on le désactive pour relancer le chrono ! if (x + taille < 0) { actif = false; } } } -} \ No newline at end of file +} diff --git a/src/BonusTaille.java b/src/BonusTaille.java index a746950..5d48e99 100644 --- a/src/BonusTaille.java +++ b/src/BonusTaille.java @@ -2,21 +2,22 @@ package linea; import java.awt.Color; import java.awt.Graphics; +import java.util.List; public class BonusTaille extends ObjetGraphique { protected double taille = 12; protected boolean actif = false; - protected int compteurFrames = 200; // pour avoir une position differente des autres bonuss + protected int compteurFrames = 200; protected boolean dejaCapture = false; protected Ligne maLigne; - protected Cercle monCercle; + protected List joueurs; protected Jeu monJeu; - public BonusTaille(Ligne l, Cercle c, Jeu j) { + public BonusTaille(Ligne l, List joueurs, Jeu j) { this.maLigne = l; - this.monCercle = c; + this.joueurs = joueurs; this.monJeu = j; this.couleur = Color.CYAN; } @@ -24,11 +25,7 @@ public class BonusTaille extends ObjetGraphique { @Override void Afficher(Graphics g) { if (actif) { - if (dejaCapture) { - g.setColor(new Color(255, 255, 255, 100)); - } else { - g.setColor(this.couleur); - } + g.setColor(dejaCapture ? new Color(255, 255, 255, 100) : this.couleur); g.fillOval((int)Math.round(x), (int)Math.round(y), (int)taille, (int)taille); } } @@ -39,7 +36,6 @@ public class BonusTaille extends ObjetGraphique { compteurFrames++; } - if (compteurFrames >= 320 && !actif) { actif = true; dejaCapture = false; @@ -66,16 +62,12 @@ public class BonusTaille extends ObjetGraphique { double vitesseLigne = monJeu.gestionnaireNiveau.getVitesseScroll(); x -= vitesseLigne; - double centreX = x + (taille / 2.0); - - if (centreX <= monCercle.x && centreX > monCercle.x - vitesseLigne) { - double hautCercle = monCercle.y - monCercle.getRayon(); - double basCercle = monCercle.y + monCercle.getRayon(); - - if (y > hautCercle && (y + taille) < basCercle) { - if (!dejaCapture) { - monJeu.activerBonusTaille(); + if (!dejaCapture) { + for (Joueur joueur : joueurs) { + if (joueur.verifierCollisionCollectible(x, y, taille, vitesseLigne)) { + joueur.activerBonusTaille(); dejaCapture = true; + break; } } } diff --git a/src/Jeu.java b/src/Jeu.java index a0dee5c..4472868 100644 --- a/src/Jeu.java +++ b/src/Jeu.java @@ -8,6 +8,8 @@ import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import java.util.ArrayList; +import java.util.List; import javax.swing.JFrame; import javax.swing.JLabel; @@ -18,43 +20,34 @@ public class Jeu implements KeyListener, ActionListener, MouseListener { protected ZoneDessin ecran = new ZoneDessin(); - protected Cercle demiCercleAvant = new Cercle(90, -180); // celui qui est sur la ligne - protected Cercle demiCercleArriere = new Cercle(90, 180); // celui qui est derrière la ligne - protected GestionnaireNiveau gestionnaireNiveau = new GestionnaireNiveau(); protected Ligne lili = new Ligne(new NoiseGenerator(0), gestionnaireNiveau); + protected List joueurs = new ArrayList<>(); + protected boolean deuxJoueurs = false; + protected Timer horloge; protected double score = 1; protected JLabel labScore; - protected int vies = 3; protected GestionnaireScore gestionnaireBDD = new GestionnaireScore(); protected GestionnaireFinDePartie gestionnaireFinDePartie; protected int compteurFrames = 0; - protected boolean enCollision = false; protected boolean estGameOver = false; protected JLabel labGameOver; - protected int compteurInvincible = 0; - public int typeInvincibilite = 0; - public boolean invincibiliteRouge = false; - - protected boolean bonusTailleActif = false; - protected int compteurBonusTaille = 0; protected String pseudo = ""; protected JFrame fenetre; protected MenuPrincipal menu; - public Jeu() { labScore = new JLabel(); labScore.setForeground(Color.WHITE); labScore.setText("

" + (int) score + "

"); - labScore.setBounds(20, 0, 200, 50); + labScore.setBounds(20, 0, 600, 50); ecran.add(labScore); labGameOver = new JLabel("GAME OVER", SwingConstants.CENTER); @@ -70,31 +63,31 @@ public class Jeu implements KeyListener, ActionListener, MouseListener { ecran.traiterBoucleAnimation(); } + private Joueur creerJoueur1() { + return new Joueur( + new Color(0.0f, 0.5f, 0.0f), new Color(0.8f, 0.0f, 0.0f), + KeyEvent.VK_UP, KeyEvent.VK_DOWN + ); + } + + private Joueur creerJoueur2() { + return new Joueur( + new Color(0.0f, 0.3f, 0.8f), new Color(0.6f, 0.0f, 0.6f), + KeyEvent.VK_Z, KeyEvent.VK_S + ); + } + @Override public void keyPressed(KeyEvent e) { - int keyCode = e.getKeyCode(); - - if (keyCode == 38) { // flèche haut - demiCercleAvant.Monter(); - demiCercleArriere.Monter(); - } - if (keyCode == 40) { // flèche bas - demiCercleAvant.Descendre(); - demiCercleArriere.Descendre(); + for (Joueur joueur : joueurs) { + joueur.appliquerTouche(e.getKeyCode(), true); } } @Override public void keyReleased(KeyEvent e) { - int keyCode = e.getKeyCode(); - - if (keyCode == 38) { // flèche haut - demiCercleAvant.ArreterMonter(); - demiCercleArriere.ArreterMonter(); - } - if (keyCode == 40) { // flèche bas - demiCercleAvant.ArreterDescendre(); - demiCercleArriere.ArreterDescendre(); + for (Joueur joueur : joueurs) { + joueur.appliquerTouche(e.getKeyCode(), false); } } @@ -115,20 +108,29 @@ public class Jeu implements KeyListener, ActionListener, MouseListener { fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } - public void lancerPartie(String pseudoSaisi) { + public void lancerPartie(String pseudoSaisi, boolean modeDeuxJoueurs) { pseudo = pseudoSaisi; + deuxJoueurs = modeDeuxJoueurs; - // lignes pour ajouter les bonus - ecran.ajouterObjet(new Bonus(lili, demiCercleAvant, this)); - ecran.ajouterObjet(new Malus(lili, demiCercleAvant, this)); - ecran.ajouterObjet(new BonusTaille(lili, demiCercleAvant, this)); + joueurs.clear(); + joueurs.add(creerJoueur1()); + if (deuxJoueurs) { + joueurs.add(creerJoueur2()); + } + + for (Joueur joueur : joueurs) { + ecran.ajouterObjet(joueur.demiCercleArriere); + } - // A FAIRE : placer dans l'écran tous les objets graphiques nécessaires - ecran.ajouterObjet(demiCercleArriere); ecran.ajouterObjet(lili); - ecran.ajouterObjet(demiCercleAvant); - demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f)); - demiCercleAvant.setCouleur(new Color(0.0f, 0.5f, 0.0f)); + + for (Joueur joueur : joueurs) { + ecran.ajouterObjet(joueur.demiCercleAvant); + } + + ecran.ajouterObjet(new Bonus(lili, joueurs, this)); + ecran.ajouterObjet(new Malus(lili, joueurs, this)); + ecran.ajouterObjet(new BonusTaille(lili, joueurs, this)); ecran.addKeyListener(this); ecran.setFocusable(true); @@ -140,124 +142,78 @@ public class Jeu implements KeyListener, ActionListener, MouseListener { score = 1; compteurFrames = 0; - vies = 3; - enCollision = false; estGameOver = false; - compteurInvincible = 0; - invincibiliteRouge = false; - bonusTailleActif = false; - compteurBonusTaille = 0; gestionnaireNiveau.reinitialiser(); gestionnaireFinDePartie.reinitialiser(); + + double posY = deuxJoueurs ? 250 : 200; + for (int i = 0; i < joueurs.size(); i++) { + joueurs.get(i).reinitialiser(posY + i * 100); + } + ecran.demarrer(); if (horloge == null) { horloge = new Timer(40, this); } horloge.start(); - - - } - - public void activerBonusTaille() { - bonusTailleActif = true; - // A 40ms par tick d'horloge, 150 frames = environ 6 secondes de bonus - compteurBonusTaille = 150; } @Override public void actionPerformed(ActionEvent e) { - if (estGameOver == true) { - return; - } + if (estGameOver) return; gestionnaireNiveau.mettreAJour(); if (gestionnaireNiveau.aChangéDeNiveau()) { - compteurInvincible = 0; - invincibiliteRouge = false; + for (Joueur joueur : joueurs) { + joueur.resetInvincibilite(); + } } ecran.setCouleurFond(gestionnaireNiveau.getCouleurFondInterpolee()); - double rayon = gestionnaireNiveau.getRayonCercle(); + double rayonBase = gestionnaireNiveau.getRayonCercle(); - - if (bonusTailleActif == true) { - rayon = rayon + 30; - compteurBonusTaille = compteurBonusTaille - 1; - - if (compteurBonusTaille <= 0) { - bonusTailleActif = false; - } + for (Joueur joueur : joueurs) { + joueur.mettreAJourRayon(rayonBase); + joueur.mettreAJourInvincibilite(); + joueur.verifierCollisionLigne(lili); + joueur.resterDansLigne(lili); } - demiCercleAvant.setRayon(rayon); - demiCercleArriere.setRayon(rayon); ecran.traiterBoucleAnimation(); - compteurFrames = compteurFrames + 1; + compteurFrames++; if (compteurFrames >= 25) { - score = score + 1; + score++; compteurFrames = 0; } - if (compteurInvincible < 75) { - compteurInvincible = compteurInvincible + 1; - - // clignotement - if (compteurInvincible % 10 < 5) { - if (invincibiliteRouge) { - // degats = rouge - demiCercleArriere.setCouleur(new Color(1f, 0f, 0f)); - demiCercleAvant.setCouleur(new Color(1f, 0f, 0f)); - } else { - // niveau/debut = blanc - demiCercleArriere.setCouleur(new Color(255, 255, 255, 150)); - demiCercleAvant.setCouleur(new Color(255, 255, 255, 150)); - } - } else { - // Couleurs normales entre deux clignotements - demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f)); - demiCercleAvant.setCouleur(new Color(0.0f, 0.5f, 0.0f)); - } - - } else { - //couleur normale a la fin - demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f)); - demiCercleAvant.setCouleur(new Color(0.0f, 0.5f, 0.0f)); - - if (demiCercleArriere.VerifierCollision(lili)) { - if (enCollision == false) { - vies = vies - 1; - enCollision = true; - compteurInvincible = 0; - invincibiliteRouge = true; // On a touché la ligne : on déclenche le ROUGE ! - } - } else { - enCollision = false; - } - - if (demiCercleArriere.VerifierCollision(lili)) { - if (enCollision == false) { - vies = vies - 1; // La nouvelle logique : on perd 1 vie - enCollision = true; - compteurInvincible = 0; - } - } else { - enCollision = false; + boolean tousMotrs = true; + for (Joueur joueur : joueurs) { + if (!joueur.estMort) { + tousMotrs = false; + break; } } - if (vies <= 0) { - vies = 0; + if (tousMotrs) { estGameOver = true; - // Le gestionnaire s'occupe d'arrêter l'écran, afficher le label et sauvegarder gestionnaireFinDePartie.declencherGameOver(ecran, pseudo, (int) score); } - labScore.setText("

Score : " + (int) score + " | Vies : " + vies + " | Niv. " + gestionnaireNiveau.getNumeroNiveau() + "

"); + mettreAJourLabel(); + } - demiCercleArriere.ResterDansLigne(lili); - demiCercleAvant.ResterDansLigne(lili); + private void mettreAJourLabel() { + StringBuilder sb = new StringBuilder("

Score : " + (int) score + " | "); + if (deuxJoueurs) { + sb.append("J1 : ").append(joueurs.get(0).vies).append(" | "); + sb.append("J2 : ").append(joueurs.get(1).vies).append(" | "); + } else { + sb.append("Vies : ").append(joueurs.get(0).vies).append(" | "); + } + sb.append("Niv. ").append(gestionnaireNiveau.getNumeroNiveau()).append("

"); + labScore.setText(sb.toString()); } private void retourMenu() { @@ -267,11 +223,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener { gestionnaireNiveau.reinitialiser(); lili = new Ligne(new NoiseGenerator(0), gestionnaireNiveau); - - demiCercleAvant.y = 200; - demiCercleAvant.vitesse = -1.0; - demiCercleArriere.y = 200; - demiCercleArriere.vitesse = -1.0; + joueurs.clear(); ecran.viderObjets(); menu.afficher(pseudo); @@ -283,7 +235,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener { @Override public void mousePressed(MouseEvent e) { - if (estGameOver == true) { + if (estGameOver) { retourMenu(); } } diff --git a/src/Joueur.java b/src/Joueur.java new file mode 100644 index 0000000..c55498f --- /dev/null +++ b/src/Joueur.java @@ -0,0 +1,187 @@ +package linea; + +import java.awt.Color; + +public class Joueur { + + protected Cercle demiCercleAvant; + protected Cercle demiCercleArriere; + + protected int vies = 3; + protected boolean enCollision = false; + protected int compteurInvincible = 0; + protected boolean invincibiliteRouge = false; + + protected boolean bonusTailleActif = false; + protected int compteurBonusTaille = 0; + + protected boolean estMort = false; + + protected Color couleurAvant; + protected Color couleurArriere; + + protected int toucheHaut; + protected int toucheBas; + + public Joueur(Color couleurAvant, Color couleurArriere, int toucheHaut, int toucheBas) { + this.demiCercleAvant = new Cercle(90, -180); + this.demiCercleArriere = new Cercle(90, 180); + this.couleurAvant = couleurAvant; + this.couleurArriere = couleurArriere; + this.toucheHaut = toucheHaut; + this.toucheBas = toucheBas; + appliquerCouleurs(); + } + + public void appliquerTouche(int keyCode, boolean pressed) { + if (estMort) return; + + if (keyCode == toucheHaut) { + if (pressed) { + demiCercleAvant.Monter(); + demiCercleArriere.Monter(); + } else { + demiCercleAvant.ArreterMonter(); + demiCercleArriere.ArreterMonter(); + } + } + if (keyCode == toucheBas) { + if (pressed) { + demiCercleAvant.Descendre(); + demiCercleArriere.Descendre(); + } else { + demiCercleAvant.ArreterDescendre(); + demiCercleArriere.ArreterDescendre(); + } + } + } + + public void mettreAJourRayon(double rayonBase) { + double rayon = rayonBase; + if (bonusTailleActif) { + rayon += 30; + compteurBonusTaille--; + if (compteurBonusTaille <= 0) { + bonusTailleActif = false; + } + } + demiCercleAvant.setRayon(rayon); + demiCercleArriere.setRayon(rayon); + } + + public void mettreAJourInvincibilite() { + if (estMort) { + demiCercleAvant.setCouleur(new Color(0, 0, 0, 0)); + demiCercleArriere.setCouleur(new Color(0, 0, 0, 0)); + return; + } + + if (compteurInvincible < 75) { + compteurInvincible++; + + if (compteurInvincible % 10 < 5) { + if (invincibiliteRouge) { + demiCercleArriere.setCouleur(new Color(1f, 0f, 0f)); + demiCercleAvant.setCouleur(new Color(1f, 0f, 0f)); + } else { + demiCercleArriere.setCouleur(new Color(255, 255, 255, 150)); + demiCercleAvant.setCouleur(new Color(255, 255, 255, 150)); + } + } else { + appliquerCouleurs(); + } + } else { + appliquerCouleurs(); + } + } + + public boolean estInvincible() { + return compteurInvincible < 75; + } + + public void verifierCollisionLigne(Ligne li) { + if (estMort || estInvincible()) return; + + if (demiCercleArriere.VerifierCollision(li)) { + if (!enCollision) { + vies--; + enCollision = true; + compteurInvincible = 0; + invincibiliteRouge = true; + } + } else { + enCollision = false; + } + + if (vies <= 0) { + vies = 0; + estMort = true; + } + } + + public boolean verifierCollisionCollectible(double itemX, double itemY, double itemTaille, double vitesseLigne) { + if (estMort) return false; + double centreX = itemX + (itemTaille / 2.0); + if (centreX <= demiCercleAvant.x && centreX > demiCercleAvant.x - vitesseLigne) { + double hautCercle = demiCercleAvant.y - demiCercleAvant.getRayon(); + double basCercle = demiCercleAvant.y + demiCercleAvant.getRayon(); + return itemY > hautCercle && (itemY + itemTaille) < basCercle; + } + return false; + } + + public void resterDansLigne(Ligne li) { + if (estMort) return; + demiCercleArriere.ResterDansLigne(li); + demiCercleAvant.ResterDansLigne(li); + } + + public void activerBonusTaille() { + bonusTailleActif = true; + compteurBonusTaille = 150; + } + + public void ajouterVie() { + vies++; + } + + public void retirerVie() { + vies--; + invincibiliteRouge = true; + compteurInvincible = 0; + if (vies <= 0) { + vies = 0; + estMort = true; + } + } + + public void resetInvincibilite() { + compteurInvincible = 0; + invincibiliteRouge = false; + } + + public void appliquerCouleurs() { + demiCercleArriere.setCouleur(couleurArriere); + demiCercleAvant.setCouleur(couleurAvant); + } + + public void ajouterDansEcran(ZoneDessin ecran) { + ecran.ajouterObjet(demiCercleArriere); + ecran.ajouterObjet(demiCercleAvant); + } + + public void reinitialiser(double posY) { + vies = 3; + enCollision = false; + compteurInvincible = 0; + invincibiliteRouge = false; + bonusTailleActif = false; + compteurBonusTaille = 0; + estMort = false; + demiCercleAvant.y = posY; + demiCercleAvant.vitesse = -1.0; + demiCercleArriere.y = posY; + demiCercleArriere.vitesse = -1.0; + appliquerCouleurs(); + } +} diff --git a/src/Malus.java b/src/Malus.java index d860746..c0e9e91 100644 --- a/src/Malus.java +++ b/src/Malus.java @@ -2,6 +2,7 @@ package linea; import java.awt.Color; import java.awt.Graphics; +import java.util.List; public class Malus extends ObjetGraphique { @@ -11,12 +12,12 @@ public class Malus extends ObjetGraphique { protected boolean dejaCapture = false; protected Ligne maLigne; - protected Cercle monCercle; + protected List joueurs; protected Jeu monJeu; - public Malus(Ligne l, Cercle c, Jeu j) { + public Malus(Ligne l, List joueurs, Jeu j) { this.maLigne = l; - this.monCercle = c; + this.joueurs = joueurs; this.monJeu = j; this.couleur = Color.RED; } @@ -24,11 +25,7 @@ public class Malus extends ObjetGraphique { @Override void Afficher(Graphics g) { if (actif) { - if (dejaCapture) { - g.setColor(Color.black); - } else { - g.setColor(this.couleur); - } + g.setColor(dejaCapture ? Color.BLACK : this.couleur); g.fillRect((int)Math.round(x), (int)Math.round(y), (int)taille, (int)taille); } } @@ -40,10 +37,8 @@ public class Malus extends ObjetGraphique { } if (compteurFrames >= 250 && !actif) { - actif = true; dejaCapture = false; - x = 800; double hauteurLigne = 300; @@ -67,20 +62,12 @@ public class Malus extends ObjetGraphique { double vitesseLigne = monJeu.gestionnaireNiveau.getVitesseScroll(); x -= vitesseLigne; - double centreX = x + (taille / 2.0); - - if (centreX <= monCercle.x && centreX > monCercle.x - vitesseLigne) { - - double hautCercle = monCercle.y - monCercle.getRayon(); - double basCercle = monCercle.y + monCercle.getRayon(); - - if (y > hautCercle && (y + taille) < basCercle) { - - if (!dejaCapture) { - monJeu.vies -= 1; + if (!dejaCapture) { + for (Joueur joueur : joueurs) { + if (joueur.verifierCollisionCollectible(x, y, taille, vitesseLigne)) { + joueur.retirerVie(); dejaCapture = true; - monJeu.invincibiliteRouge = true; - monJeu.compteurInvincible = 0; + break; } } } @@ -90,4 +77,4 @@ public class Malus extends ObjetGraphique { } } } -} \ No newline at end of file +} diff --git a/src/MenuPrincipal.java b/src/MenuPrincipal.java index 716f04f..4e12862 100644 --- a/src/MenuPrincipal.java +++ b/src/MenuPrincipal.java @@ -13,7 +13,6 @@ import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingConstants; -// Classe qui représente le menu principal du jeu (affiché au lancement). public class MenuPrincipal { private JFrame fenetre; @@ -25,33 +24,36 @@ public class MenuPrincipal { this.jeu = jeu; } - // Construit et affiche le panneau du menu dans la fenêtre public void afficher(String pseudoActuel) { - JPanel panneau = new JPanel(new GridLayout(6, 1, 10, 10)); + JPanel panneau = new JPanel(new GridLayout(7, 1, 10, 10)); JLabel titre = new JLabel("LINEA", SwingConstants.CENTER); champPseudo = new JTextField(pseudoActuel, 15); - JButton boutonJouer = new JButton("Jouer"); + JButton bouton1Joueur = new JButton("1 Joueur"); + JButton bouton2Joueurs = new JButton("2 Joueurs"); JButton boutonClassement = new JButton("Classement"); JButton boutonQuitter = new JButton("Quitter"); - boutonJouer.addActionListener(new ActionListener() { + bouton1Joueur.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - jeu.lancerPartie(champPseudo.getText()); + jeu.lancerPartie(champPseudo.getText(), false); + } + }); + + bouton2Joueurs.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + jeu.lancerPartie(champPseudo.getText(), true); } }); boutonClassement.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - - // 1. On récupère les scores depuis la BDD via l'objet 'jeu' String scores = jeu.getGestionnaireBDD().getTopScores(); - - // 2. On affiche le résultat dans la petite fenêtre popup JOptionPane.showMessageDialog(fenetre, scores, "Meilleurs Scores", JOptionPane.INFORMATION_MESSAGE); } }); @@ -65,12 +67,12 @@ public class MenuPrincipal { panneau.add(titre); panneau.add(champPseudo); - panneau.add(boutonJouer); + panneau.add(bouton1Joueur); + panneau.add(bouton2Joueurs); panneau.add(boutonClassement); panneau.add(boutonQuitter); - // panneau centré dans la fenêtre - JPanel conteneur = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 150)); + JPanel conteneur = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 130)); conteneur.add(panneau); fenetre.setContentPane(conteneur);