diff --git a/src/linea/Ligne.java b/src/linea/Ligne.java index cbb8c71..76801b9 100644 --- a/src/linea/Ligne.java +++ b/src/linea/Ligne.java @@ -16,6 +16,9 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique // nb de Segments qui composent la ligne protected int nbSegments = 400; + // amplitude maximale de l'inclinaison verticale des segments (dy) + protected double inclinaisonMax = 30.0; + // position du cercle, pour déterminer quel est le segment courant protected double xCercle = 400; // à modifier @@ -49,7 +52,8 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique for (int i=0; i 600) { dy = -dy; @@ -64,6 +68,19 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique } } + /** + * Définit l'amplitude maximale d'inclinaison (valeur positive). + * Les segments auront un dy dans [-inclinaisonMax, +inclinaisonMax]. + */ + public void setInclinaisonMax(double valeur) { + if (valeur < 0) valeur = -valeur; + this.inclinaisonMax = valeur; + } + + public double getInclinaisonMax() { + return this.inclinaisonMax; + } + //------------------------------------------------------------------------- diff --git a/src/linea/MenuCampagne.java b/src/linea/MenuCampagne.java index df2b056..66f87ac 100644 --- a/src/linea/MenuCampagne.java +++ b/src/linea/MenuCampagne.java @@ -6,8 +6,15 @@ import javax.swing.*; public class MenuCampagne extends JPanel { public MenuCampagne(Jeu jeu) { - setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); - setBackground(new Color(45, 45, 45)); // Même gris foncé + setLayout(new BorderLayout()); + setBackground(new Color(45, 45, 45)); + + CardLayout cartes = new CardLayout(); + JPanel panneauCartes = new JPanel(cartes); + + JPanel listeCampagnes = new JPanel(); + listeCampagnes.setLayout(new BoxLayout(listeCampagnes, BoxLayout.Y_AXIS)); + listeCampagnes.setBackground(new Color(45, 45, 45)); JLabel titre = new JLabel("CAMPAGNES"); titre.setForeground(Color.WHITE); @@ -17,42 +24,74 @@ public class MenuCampagne extends JPanel { JButton btnC1 = creerBouton("CAMPAGNE 1"); JButton btnC2 = creerBouton("CAMPAGNE 2"); JButton btnC3 = creerBouton("CAMPAGNE 3"); - JButton btnC4 = creerBouton("CAMPAGNE 4"); - JButton btnRetour = creerBouton("RETOUR"); - btnC1.addActionListener(e -> System.out.println("Lancement Campagne 1...")); + listeCampagnes.add(Box.createVerticalGlue()); + listeCampagnes.add(titre); + listeCampagnes.add(Box.createRigidArea(new Dimension(0, 40))); - btnC2.addActionListener(e -> { - CampagneAutoroute campagne = new CampagneAutoroute(jeu); - campagne.lancerNiveau1(); - }); + listeCampagnes.add(btnC1); + listeCampagnes.add(Box.createRigidArea(new Dimension(0, 10))); + listeCampagnes.add(btnC2); + listeCampagnes.add(Box.createRigidArea(new Dimension(0, 10))); + listeCampagnes.add(btnC3); + + listeCampagnes.add(Box.createRigidArea(new Dimension(0, 30))); + listeCampagnes.add(btnRetour); + listeCampagnes.add(Box.createVerticalGlue()); + + // ---- Carte : sélection des niveaux ---- + JPanel selectionNiveaux = new JPanel(); + selectionNiveaux.setLayout(new BoxLayout(selectionNiveaux, BoxLayout.Y_AXIS)); + selectionNiveaux.setBackground(new Color(45, 45, 45)); + + JLabel titreNiveaux = new JLabel("CHOISISSEZ UN NIVEAU"); + titreNiveaux.setForeground(Color.WHITE); + titreNiveaux.setFont(new Font("SansSerif", Font.BOLD, 32)); + titreNiveaux.setAlignmentX(Component.CENTER_ALIGNMENT); + + JButton btnN1 = creerBouton("FACILE"); + JButton btnN2 = creerBouton("MOYEN"); + JButton btnN3 = creerBouton("DIFFICILE"); + JButton btnRetourCampagnes = creerBouton("RETOUR AUX CAMPAGNES"); + + selectionNiveaux.add(Box.createVerticalGlue()); + selectionNiveaux.add(titreNiveaux); + selectionNiveaux.add(Box.createRigidArea(new Dimension(0, 30))); + selectionNiveaux.add(btnN1); + selectionNiveaux.add(Box.createRigidArea(new Dimension(0, 10))); + selectionNiveaux.add(btnN2); + selectionNiveaux.add(Box.createRigidArea(new Dimension(0, 10))); + selectionNiveaux.add(btnN3); + selectionNiveaux.add(Box.createRigidArea(new Dimension(0, 30))); + selectionNiveaux.add(btnRetourCampagnes); + selectionNiveaux.add(Box.createVerticalGlue()); + + panneauCartes.add(listeCampagnes, "LISTE"); + panneauCartes.add(selectionNiveaux, "NIVEAUX"); btnRetour.addActionListener(e -> jeu.afficherMenuPrincipal()); - add(Box.createVerticalGlue()); - add(titre); - add(Box.createRigidArea(new Dimension(0, 40))); + ActionListener ouvrirNiveaux = e -> cartes.show(panneauCartes, "NIVEAUX"); + btnC1.addActionListener(ouvrirNiveaux); + btnC2.addActionListener(ouvrirNiveaux); + btnC3.addActionListener(ouvrirNiveaux); + btnC4.addActionListener(ouvrirNiveaux); - add(btnC1); - add(Box.createRigidArea(new Dimension(0, 10))); - add(btnC2); - add(Box.createRigidArea(new Dimension(0, 10))); - add(btnC3); - add(Box.createRigidArea(new Dimension(0, 10))); - add(btnC4); + btnRetourCampagnes.addActionListener(e -> cartes.show(panneauCartes, "LISTE")); - add(Box.createRigidArea(new Dimension(0, 30))); // Espace plus grand avant le retour - add(btnRetour); + btnN1.addActionListener(e -> jeu.lancerNiveau(1)); + btnN2.addActionListener(e -> jeu.lancerNiveau(2)); + btnN3.addActionListener(e -> jeu.lancerNiveau(3)); - add(Box.createVerticalGlue()); + add(panneauCartes, BorderLayout.CENTER); } private JButton creerBouton(String texte) { JButton b = new JButton(texte); - b.setFont(new Font("SansSerif", Font.PLAIN, 18)); // Légèrement plus petit si tu veux + b.setFont(new Font("SansSerif", Font.PLAIN, 18)); b.setAlignmentX(Component.CENTER_ALIGNMENT); - b.setMaximumSize(new Dimension(200, 45)); + b.setMaximumSize(new Dimension(240, 45)); b.setFocusable(false); return b; }