From d8b2ef6e490d5e379876e14958ad66f2cfe407e6 Mon Sep 17 00:00:00 2001 From: isma9533 Date: Thu, 26 Mar 2026 00:33:46 +0100 Subject: [PATCH 1/3] regroupement bouton dans la classe boutonManager.java --- projet_linea/src/BoutonsManager.java | 149 +++++++++++++++++++++++++ projet_linea/src/CadreDeConnexion.java | 88 +-------------- projet_linea/src/Cercle.java | 19 +++- projet_linea/src/Jeu.java | 11 +- projet_linea/src/Segment.java | 5 + 5 files changed, 182 insertions(+), 90 deletions(-) create mode 100644 projet_linea/src/BoutonsManager.java diff --git a/projet_linea/src/BoutonsManager.java b/projet_linea/src/BoutonsManager.java new file mode 100644 index 0000000..3d4287a --- /dev/null +++ b/projet_linea/src/BoutonsManager.java @@ -0,0 +1,149 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.List; + +public class BoutonsManager { + + // Méthode pour créer le bouton des scores utilisateur + public static JButton creerBoutonScores(JFrame fenetre, int utilisateurId) { + JButton boutonScores = new JButton("Voir mes scores"); + + // Style + boutonScores.setBackground(Color.BLACK); + boutonScores.setForeground(Color.WHITE); + + // Position + boutonScores.setBounds(300, 20, 160, 30); + + // Action au clic + boutonScores.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + List scores = GestionBDD.recupererScoresUtilisateur(utilisateurId); + int meilleurScore = GestionBDD.recupererMeilleurScoreUtilisateur(utilisateurId); + + StringBuilder message = new StringBuilder(); + message.append("Meilleur score : ").append(meilleurScore).append("\n\n"); + message.append("Tous les scores :\n"); + + for (int score : scores) { + message.append(score).append("\n"); + } + + JOptionPane.showMessageDialog( + fenetre, + message.toString(), + "Mes Scores", + JOptionPane.INFORMATION_MESSAGE + ); + } + }); + + return boutonScores; + } + + // Méthode pour créer le bouton de connexion + public static JButton creerBoutonConnexion(JTextField userField, JPasswordField passField, JFrame cadre) { + JButton loginBtn = new JButton("Entrer"); + loginBtn.setBackground(new Color(70, 130, 180)); // Bleu acier + loginBtn.setForeground(Color.WHITE); + loginBtn.setFocusPainted(false); + loginBtn.setAlignmentX(Component.CENTER_ALIGNMENT); + + loginBtn.addActionListener(e -> { + String user = userField.getText(); + String pass = new String(passField.getPassword()); + int userId = GestionBDD.verifierConnexion(user, pass); + + if (userId != -1) { + cadre.dispose(); + Jeu jeu = new Jeu(userId); + jeu.demarrer(); + } else { + JOptionPane.showMessageDialog(cadre, "Acces refuse"); + } + }); + + return loginBtn; + } + + // Méthode pour créer le bouton "Créer un compte" + public static JButton creerBoutonCreerCompte(JFrame cadre) { + JButton createBtn = new JButton("Créer un compte"); + createBtn.setBackground(new Color(70, 130, 180)); + createBtn.setForeground(Color.WHITE); + createBtn.setFocusPainted(false); + createBtn.setAlignmentX(Component.CENTER_ALIGNMENT); + + createBtn.addActionListener(evt -> { + JFrame createFrame = new JFrame("Creation de compte"); + createFrame.setSize(800, 600); + createFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + createFrame.setLocationRelativeTo(null); + + JPanel createPanel = new JPanel(new GridBagLayout()); + createPanel.setBackground(new Color(30, 30, 30)); + createFrame.add(createPanel); + + Box createBox = Box.createVerticalBox(); + + JLabel createTitre = new JLabel("CREATION DE COMPTE"); + createTitre.setForeground(Color.WHITE); + createTitre.setFont(new Font("Arial", Font.BOLD, 24)); + createTitre.setAlignmentX(Component.CENTER_ALIGNMENT); + + JTextField newUserField = new JTextField(15); + newUserField.setMaximumSize(new Dimension(250, 30)); + + JPasswordField newPassField = new JPasswordField(15); + newPassField.setMaximumSize(new Dimension(250, 30)); + + JButton createAccountBtn = creerBoutonCreerCompteFinal(newUserField, newPassField, createFrame); + + createBox.add(createTitre); + createBox.add(Box.createVerticalStrut(30)); + createBox.add(new JLabel("Nouveau utilisateur :")); + createBox.add(newUserField); + createBox.add(Box.createVerticalStrut(15)); + createBox.add(new JLabel("Mot de passe :")); + createBox.add(newPassField); + createBox.add(Box.createVerticalStrut(30)); + createBox.add(createAccountBtn); + + createPanel.add(createBox); + createFrame.setVisible(true); + }); + + return createBtn; + } + + // Méthode pour créer le bouton "Créer" dans la fenêtre de création de compte + private static JButton creerBoutonCreerCompteFinal(JTextField newUserField, JPasswordField newPassField, JFrame createFrame) { + JButton createAccountBtn = new JButton("Créer"); + createAccountBtn.setBackground(new Color(70, 130, 180)); + createAccountBtn.setForeground(Color.WHITE); + createAccountBtn.setFocusPainted(false); + createAccountBtn.setAlignmentX(Component.CENTER_ALIGNMENT); + + createAccountBtn.addActionListener(e -> { + String newUser = newUserField.getText(); + String newPass = new String(newPassField.getPassword()); + + if (!newUser.isEmpty() && !newPass.isEmpty()) { + boolean success = GestionBDD.creerUtilisateur(newUser, newPass); + if (success) { + JOptionPane.showMessageDialog(createFrame, "Compte créé avec succès !"); + createFrame.dispose(); + } else { + JOptionPane.showMessageDialog(createFrame, "Erreur lors de la création du compte."); + } + } else { + JOptionPane.showMessageDialog(createFrame, "Veuillez remplir tous les champs."); + } + }); + + return createAccountBtn; + } +} \ No newline at end of file diff --git a/projet_linea/src/CadreDeConnexion.java b/projet_linea/src/CadreDeConnexion.java index 0cbb2eb..4628e9c 100644 --- a/projet_linea/src/CadreDeConnexion.java +++ b/projet_linea/src/CadreDeConnexion.java @@ -30,11 +30,7 @@ public class CadreDeConnexion extends JFrame { JPasswordField passField = new JPasswordField(15); passField.setMaximumSize(new Dimension(250, 30)); - JButton loginBtn = new JButton("Entrer"); - loginBtn.setBackground(new Color(70, 130, 180)); // Bleu acier - loginBtn.setForeground(Color.WHITE); - loginBtn.setFocusPainted(false); - loginBtn.setAlignmentX(Component.CENTER_ALIGNMENT); + JButton loginBtn = BoutonsManager.creerBoutonConnexion(userField, passField, this); // 4. Ajout des composants avec des espaces (Struts) box.add(titre); @@ -48,91 +44,11 @@ public class CadreDeConnexion extends JFrame { box.add(loginBtn); box.add(Box.createVerticalStrut(10)); - JButton createBtn = new JButton("Créer un compte"); - createBtn.setBackground(new Color(70, 130, 180)); - createBtn.setForeground(Color.WHITE); - createBtn.setFocusPainted(false); - createBtn.setAlignmentX(Component.CENTER_ALIGNMENT); + JButton createBtn = BoutonsManager.creerBoutonCreerCompte(this); box.add(createBtn); panel.add(box); // Ajoute la boîte au centre du GridBagLayout - // 5. Logique du bouton - loginBtn.addActionListener(e -> { - String user = userField.getText(); - String pass = new String(passField.getPassword()); - int userId = GestionBDD.verifierConnexion(user, pass); - - if (userId != -1) { - dispose(); - Jeu jeu = new Jeu(userId); - jeu.demarrer(); - } else { - JOptionPane.showMessageDialog(this, "Acces refuse"); - } - }); - - createBtn.addActionListener(evt -> { - JFrame createFrame = new JFrame("Creation de compte"); - createFrame.setSize(800, 600); - createFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - createFrame.setLocationRelativeTo(null); - - JPanel createPanel = new JPanel(new GridBagLayout()); - createPanel.setBackground(new Color(30, 30, 30)); - createFrame.add(createPanel); - - Box createBox = Box.createVerticalBox(); - - JLabel createTitre = new JLabel("CREATION DE COMPTE"); - createTitre.setForeground(Color.WHITE); - createTitre.setFont(new Font("Arial", Font.BOLD, 24)); - createTitre.setAlignmentX(Component.CENTER_ALIGNMENT); - - JTextField newUserField = new JTextField(15); - newUserField.setMaximumSize(new Dimension(250, 30)); - - JPasswordField newPassField = new JPasswordField(15); - newPassField.setMaximumSize(new Dimension(250, 30)); - - JButton createAccountBtn = new JButton("Créer"); - createAccountBtn.setBackground(new Color(70, 130, 180)); - createAccountBtn.setForeground(Color.WHITE); - createAccountBtn.setFocusPainted(false); - createAccountBtn.setAlignmentX(Component.CENTER_ALIGNMENT); - - createBox.add(createTitre); - createBox.add(Box.createVerticalStrut(30)); - createBox.add(new JLabel("Nouvel utilisateur :")); - createBox.add(newUserField); - createBox.add(Box.createVerticalStrut(15)); - createBox.add(new JLabel("Mot de passe :")); - createBox.add(newPassField); - createBox.add(Box.createVerticalStrut(30)); - createBox.add(createAccountBtn); - - createPanel.add(createBox); - - createAccountBtn.addActionListener(e -> { - String u = newUserField.getText().trim(); - String p = new String(newPassField.getPassword()); - if (u.isEmpty() || p.isEmpty()) { - JOptionPane.showMessageDialog(createFrame, "Utilisateur et mot de passe requis"); - return; - } - - boolean ok = GestionBDD.creerUtilisateur(u, p); - if (ok) { - JOptionPane.showMessageDialog(createFrame, "Compte cree avec succes."); - createFrame.dispose(); - } else { - JOptionPane.showMessageDialog(createFrame, "Échec : le nom d'utilisateur existe deja ou erreur."); - } - }); - - createFrame.setVisible(true); - }); - setVisible(true); } } diff --git a/projet_linea/src/Cercle.java b/projet_linea/src/Cercle.java index cea411a..2d45f36 100644 --- a/projet_linea/src/Cercle.java +++ b/projet_linea/src/Cercle.java @@ -36,6 +36,9 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl //sol du cercle protected double sol = 600; + + // Mode triche : désactive la gravité + protected boolean modeTriche = false; //------------------------------------------------------------------------- // METHODES //------------------------------------------------------------------------- @@ -115,10 +118,12 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl void Animer() { // pas est à prendre comme un "delta t" - // chute libre - vitesse = vitesse + 9.81 * pas; + if (!modeTriche) { + // chute libre + vitesse = vitesse + 9.81 * pas; + } - // impulsion + // impulsion (toujours appliquée, même en triche ?) if (montee==true) { vitesse = vitesse - impulsion *pas; } @@ -147,6 +152,14 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl public void resetVitesse(){ vitesse = 0; } + + // Méthode pour activer/désactiver le mode triche + public void setModeTriche(boolean triche) { + this.modeTriche = triche; + if (triche) { + this.vitesse = 0; // Réinitialiser la vitesse quand on active le triche + } + } diff --git a/projet_linea/src/Jeu.java b/projet_linea/src/Jeu.java index eca9cf5..0ad17ba 100644 --- a/projet_linea/src/Jeu.java +++ b/projet_linea/src/Jeu.java @@ -138,6 +138,8 @@ public class Jeu implements KeyListener, ActionListener{ if(keyCode==32){//touche espace modeTriche =!modeTriche; labTriche.setVisible(modeTriche); //afficher ou cacher le label + demiCercleAvant.setModeTriche(modeTriche); + demiCercleArriere.setModeTriche(modeTriche); } } @@ -194,7 +196,7 @@ public class Jeu implements KeyListener, ActionListener{ ecran.requestFocusInWindow(); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - javax.swing.JButton boutonscores = BoutonScoresUtilisateur.creerBouton(fenetre, utilisateurId); + javax.swing.JButton boutonscores = BoutonsManager.creerBoutonScores(fenetre, utilisateurId); this.ecran.add(boutonscores); @@ -287,6 +289,13 @@ public class Jeu implements KeyListener, ActionListener{ this.ecran.traiterBoucleAnimation(); this.laLigne.actualiserSegCourant(); + // Mode triche : centrer le cercle sur le milieu du segment courant + if (modeTriche && this.laLigne.getSegCourant() != null) { + double milieuY = this.laLigne.getSegCourant().getMilieuY(); + this.demiCercleAvant.y = milieuY; + this.demiCercleArriere.y = milieuY; + } + // 2. On vérifie si la ligne traverse bien le cercle boolean verification = this.laLigne.estDansCercle(this.demiCercleAvant); diff --git a/projet_linea/src/Segment.java b/projet_linea/src/Segment.java index 9dd6abf..60374da 100644 --- a/projet_linea/src/Segment.java +++ b/projet_linea/src/Segment.java @@ -32,6 +32,11 @@ public class Segment extends ObjetGraphique { // Hérite de la classe ObjetGraph yLong = yyLong; } + // Méthode pour obtenir la position Y au milieu du segment + public double getMilieuY() { + return y + yLong / 2; + } + //------------------------------------------------------------------------- // Redéfinition de la méthode Afficher, spécifiquement pour la classe //------------------------------------------------------------------------- From 00b84dd3ac12a6be613d7083ad214f6ef160d0df Mon Sep 17 00:00:00 2001 From: llample3 Date: Fri, 27 Mar 2026 13:22:42 +0100 Subject: [PATCH 2/3] init: update creation table --- projet_linea/UserScoreBDD.db | Bin 20480 -> 20480 bytes projet_linea/bin/Background.class | Bin 438 -> 438 bytes projet_linea/bin/BonusMalus.class | Bin 1898 -> 1898 bytes .../bin/BoutonScoresUtilisateur$1.class | Bin 1978 -> 1978 bytes .../bin/BoutonScoresUtilisateur.class | Bin 1047 -> 1047 bytes projet_linea/bin/CadreDeConnexion.class | Bin 5689 -> 5689 bytes projet_linea/bin/Cercle.class | Bin 2684 -> 2684 bytes projet_linea/bin/GestionBDD.class | Bin 8204 -> 8204 bytes projet_linea/bin/Jeu.class | Bin 6980 -> 7090 bytes projet_linea/bin/Ligne.class | Bin 3541 -> 3541 bytes projet_linea/bin/LineaAppli.class | Bin 409 -> 409 bytes projet_linea/bin/Niveau.class | Bin 993 -> 1246 bytes projet_linea/bin/NiveauxDataConnect.class | Bin 5858 -> 5858 bytes projet_linea/bin/ObjetGraphique.class | Bin 942 -> 942 bytes projet_linea/bin/Segment.class | Bin 1303 -> 1303 bytes projet_linea/bin/ZoneDessin.class | Bin 4313 -> 4313 bytes projet_linea/bin/bddInit.class | Bin 1135 -> 1308 bytes projet_linea/src/CadreDeConnexion.java | 2 +- projet_linea/src/Jeu.java | 4 ++++ 19 files changed, 5 insertions(+), 1 deletion(-) diff --git a/projet_linea/UserScoreBDD.db b/projet_linea/UserScoreBDD.db index 2fd78b4b404f355f7c8c71cd97e38e357fdc42ef..ccbc43fd4dab570fb9afdd5168df4093ac3e7cf0 100644 GIT binary patch delta 96 zcmZozz}T>Wae_1>`$QRMM)r*fOZd5%`Oh=(f8@WWae_1>+e8^>Mz)O!OZYjM`0q3Df8@WvSm|BIiIY4cNiX#oJ2;1&M> diff --git a/projet_linea/bin/Background.class b/projet_linea/bin/Background.class index 3a23fc0f75049761f53eddeee99ee286da0150bb..121fc1c23291ff15f411aa7083da1c98b0a40818 100644 GIT binary patch delta 17 ZcmdnSyp5UT)W2Q(7#J9AH*&0F1OPu#24DaH delta 17 ZcmdnSyp5UT)W2Q(7#J8_Hgc?E1OPvD24?^O diff --git a/projet_linea/bin/BonusMalus.class b/projet_linea/bin/BonusMalus.class index b92e91b6de3a845f983738ef48a10a7f9b3fe05d..f77d9f87953448bb8e9847b803fddd9f38d867b2 100644 GIT binary patch delta 17 ZcmaFG_ll3>)W2Q(7#J9AH*zGg0{}*e2ABW< delta 17 ZcmaFG_ll3>)W2Q(7#J8_HgY7f0{}*>2A==` diff --git a/projet_linea/bin/BoutonScoresUtilisateur$1.class b/projet_linea/bin/BoutonScoresUtilisateur$1.class index aa7e8f074097bd40acceeda3993fbce1fde72b58..8703d7b1a45aada7907549f4ee4dcd9258887281 100644 GIT binary patch delta 17 ZcmdnRzl)#a)W2Q(7#J9AH*#!Z2LM4w28sXx delta 17 ZcmdnRzl)#a)W2Q(7#J8_HgarY2LM5829W>& diff --git a/projet_linea/bin/BoutonScoresUtilisateur.class b/projet_linea/bin/BoutonScoresUtilisateur.class index 7efbf4843b8f122425494bde1f9703fcc7c8cd63..a70cc618d7ebabb4e22e54e03bbcc539c88e5096 100644 GIT binary patch delta 17 ZcmbQvF`a|s)W2Q(7#J9AH*)Z^002771&{y$ delta 17 ZcmbQvF`a|s)W2Q(7#J8_HgfQ@0027g1(yH- diff --git a/projet_linea/bin/CadreDeConnexion.class b/projet_linea/bin/CadreDeConnexion.class index 72bf9ee613ba733246abf3bec9a463a70b56edf2..83b5d19e5319102cb6ef5e74810498ba3cd689fe 100644 GIT binary patch delta 17 Zcmdm~vr~uT)W2Q(7#J9AH*y$?0RTgq22cP1 delta 17 Zcmdm~vr~uT)W2Q(7#J8_HgXt>0RTh223G(8 diff --git a/projet_linea/bin/Cercle.class b/projet_linea/bin/Cercle.class index 50abd3c95db0776416a40de2ecf608979f2cb177..66ae0ba3407bf2fb31ecc27218de97a69708e0b3 100644 GIT binary patch delta 17 Zcmew(@<)W@)W2Q(7#J9AH*%D40RTy)2HgMv delta 17 Zcmew(@<)W@)W2Q(7#J8_Hgc430RTzI2IK$$ diff --git a/projet_linea/bin/GestionBDD.class b/projet_linea/bin/GestionBDD.class index 3f9acdfc813a38a3ab685179fa9ca8a1f7680454..178e6e9611a325deff037705fa5004c24e034cd1 100644 GIT binary patch delta 17 YcmeBi=yBjU^>5cc1_lP(jT|fr06+o-`v3p{ delta 17 YcmeBi=yBjU^>5cc1_lO~jT|fr06--M0ssI2 diff --git a/projet_linea/bin/Jeu.class b/projet_linea/bin/Jeu.class index 9872cd2234cd527f04886ccf9ab3c54c9afbb5a7..bfd28c107279aa497e6e54920424fc8708ad26d9 100644 GIT binary patch delta 3525 zcmZWs33yc175>j`Z!)==Oct^ck`O{jCc#t?0zp8suo=RVffz(&l03smmVf>td`ZPi+}wrUlm=gy1?{R&@lw{y?^?|=St z?#uCsk5xKe`0ntN0H)Fn2OK@7RtM%`zJ>;ZW0oEY`vU&z+FF4HC?({z26a8?@wRm6 zi^IMSU&tHQyMm3r87(2*AJ)~@MFNe=G;7GTu{99X2aPl=mU~T^6&{o%fN+^WE=D-8 z6w5SRPDpL=t<}9<>ubGXZ%x4O*IUB^S75pP!c=NsiWLH0w8$cJd0rc?(x4MuS9{lb zD>}UX_KL<0p|HMMpdBlv-&{af%kAdjwhs6;td{%DS>^yb<%{N`{2;;_LWH!Ty>;tb z^-gtNfiCH^WY9V}+R`v-10ks{802df%w$L%x`t~BnQGtqiqJYApE`Gbbl(E6pBcCY z*9lyYh_uw&s$I(g9LVDPvuMa!02Ymtt z4iOS~u3Eul^0ksV{I7J0^8JLsVH}ZnX_X1T639^Qo|3O>we~$YCh%)K^Y}=67TI3M zNeyqv=?S^!H}RHSo{(vITi_kJAz_x~w7_5F@dUTM8y^aMgpcKy31fKhiNHVbsT}Q? zFtQt;3;Yw$5Cr3x8EEYaDJ?tT!M_CljW6Z3j1aJsJE}?gbt~d3j|fD6)UgIVRcQW3k8kCS&m=3?$?8QP+46hXaWZ$ zIVq!~QqUv?JDDk7;tR9L^m<>r%8jj5C1?t6=A30`HG!@UPOBO{*s4O{rm2FaDcv}D zV|-CDeTkqMYTCs#_?d>NkY@(`ZFZ`WcP3TZuc10lIhrY7PP%|*%X3NNY)+ah=u%nf zETQ>wg)?O9rba;?dD5A0St6)Oo^g(_H49owm&^R*LfaLBmeZATR&s%TD|rRA@LdAQ zBZ}Gt%|od|ah0HUB?&F4cY1yPa4HAL$BD}|W`A-s1*F4OX$#X@jk@G4SE+Uzts~r1 zBKNzpvGGM*xGVT#+bnTx7C;L2nhP2QLCP{M=I_&@kI^{Jjn zKkECj@CZE3hp=Rxdw3t3sKMQj=B9pJ*@xQ4(3l+Yg5;o`?1k| z5Ve+mY*O1G7!*2Gon+!a}lY1D&FZ-~Ur}n1qGjKq4TG-~*YTp5v;KN2l5X3GQp2c(AG2=MDP>-TaKAct&sYVlO_`#?{ z3ubYxpTisK5$4BdBO0(7^KlbDS2trJZp9)ltqZW7ckDnjc3~Oz@oRDr%W(u(vUe|D zfR5ML!#h}o57EKpVKou_l*F3L!WtThAYI6B#bku34qbRQ!cZ2$u404%oZyk_@gv5? zvIVCZ@bl3-yv?p(WayjW#BcChSQx@yyo3Vo?c);nJG=}l!*JmD_ycTsg&kGEa*nTV z(O6v?JQ~+>ZiC6^FbUT9WQ1omY>h4upZQ0;%D;d%)PK!`cTb76{Kno#R1+PW4lmYk(speJC(?)No6*(aXa$I zF`X5-16BMcJ+H1n21x%iV3gC>xX4UUT68MD&=J$snWw1}+UjBU_L+WNoJq+oA^HAgrqR1IUF)W565+&FMI)iLQ+XsUXCa_Zz z|ByP#6qOpAasQF1=Zx6mpl6DECj1qpY{$$~C1X;|_rz1Rp0TS`V9x&*??x^j>T^V5 z(+2*omN_#&D^nc=%@v+6p2C+3N|7XPE;*Ge`py|CR{J!Lt zr%`o3sXCiRv$)W*5feLSh{c&mVZ0x47Jtk+{R!*+QxxJejKSxeC10WzUom@MV}*x5 zDg5|`Yt&h$?mKM5Io!@FyPK=cE;64-U-zKYx~V=|R<O53$ z(zL_0Qax@5hN82ai35#-Mn!Pa803%}dHkhQOk??`7od{AZDw$JU&LQDO*E1JoT!A4 zs`&G1Dwq3d*hJG2*-DpSJI&_r<~iu4x!6aS!e9ahs4+^@MbWZ!VlZka@Gh-ldUCLr zI*`ShFGdZm#weC{7}fEfisUd@&hoh$`M*K>85Bl4#V}JRFPdl#1-Z?4a(6wa$%g3f SYw0?kRNsf!(1_GjF6Ep-25eT9 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 delta 17 ZcmbQqJd>H@)W2Q(7#J8_HgZg41OPjl1`q%M diff --git a/projet_linea/bin/Niveau.class b/projet_linea/bin/Niveau.class index ff7abfa27583999faf1965418191f155086b7e9e..a8339c103b3c40e10f58e0359aad7d6130d25021 100644 GIT binary patch literal 1246 zcmZvaU2hUW6o%j78@jZV0zyk$s#RgTmU^xAhQx#fF%iT4vYp^Gu$b+_uku0@HzvmT z1N>3Ob7o0wVfJFr$Ig2`p4mTtfBpt=jh9&@1TsUllI}8#ltAg$UAf(v>rcDyC%4iI z1rq8;K=cKY{$egr9{fKt3IpX&UkO+%70SCiIZ#ty3KaawNKWU{5AOuhYVJ-cc`#qj zLiKs3JU5ifVB{?V$`-xFazx>0by~T|zAc?Yt zT^!K(?anw4fvSZxGVDFFkVTHYhJ}2bJF-xSy<-bI@z+xeR-8MtP()5(Z=ifRT+Syl z_~=e}?($&axwEkwD2~_3RQO2|f!rV_OrX+J8TN@M4MRjT6b%__rQO-yg4)pc@dL6& zR@{S|<9adQ8oBRGh)eXL_mFa7v{(k7e5-i$op`!SzE_+PjU@dX^k*<8@)8V5TSBBQ z0n(Q6XiIRkB{XDnRACo;^e$2Ki}ajz>>t>-k0MlTCqm6Wj!?I&sR)O5BORe>S2Gb# z>_#?1>zl6jnBLFmT0rnqggsAHx$XhgZD1d#DB~$b7pUL~o%#^>!8v95arFE`d%QtH zd%Oeh=kPUCUG{j7wDx!t-o@c-ro9DC@O-^Vmn>IH+uu?7LQVoaVn!$HdIT#zupU96 zjSgiP!+mk>>xQ^#6x+tm_07&LqxixoKHLwvGd7hXU8bMG|&N(ew7cJxH0j; zAK;HNp4pmOmkr6iGjq>9+Gfx2lu$NMF|iAiwTaqDI}*sLg@738@}7wr>V*3%PoO#e$2biG<-4yn zsA*zf6POzn%Jo`~mFr7gXq!0Dg^E9)O4pNqxYo}{COVq5pgh}6fF~wSHE`dHmZAEz zRE{0WD405{AgMnxai%+}&MI26FqDC_lma)s(e_BAtha4geDakvEsY zM|-Y`3$6@DRDm*$s0?otEkLW+-zH)|>$3;Db5PxJzqCL}^XY8`4tRXOy(aBqVfg=k zmFX%99QjV^nRf5|xzZlsoI2*{y1_{Ic*<#~l1wv_Ozo3Qv6D=RlT0a@OW>M#%y`b* zg8e1tf%P52I*DOegBVq-8>3;h^D$ahrx4@NY8PW1TOA`t_bc%NPZ*!0%xEHyDo=a- z)%Z!&X>)_dHF3e)C0ay3#k0Tv*ku;%Dp=oOe7>hDCXYvq7o@!#?jf}LB?Ubt=tU-L tBh9Lp?PWq+X{esEpE)7^D_* z0#i@qwygGL_^7(peWH4)z{K@{+OGw&^W}~}ZYlCr0a@f79K(dbWFrVwbGX%2@w)8x zl|Zo(^<=*z<3P*f%Ut?6NCfhYF`UOxIr4a(jv=}}mh>}~Ljf(=aw`8JR6HbPya?>~(ZohiQqFllU7Ty<_-b>^S zUkCG=x;4<@`k_u|!NFx*A+S# zEqt+;-aZxGt;E4sxW<wf^H`hSPwTPlanwgs#e>)su>EeExcdIYD6R1cYr;{+yoqn-buU5@+1toJ9THj2d;IMpzxS)Nue@8ZnQs65Bn;)Pwj zN3nc`|J+Ml-N-&iwf#FjyQj4twK?w>l(cYzLY9Kvyt<2T=6)sC4DRB4EHVMj?HUyB3zQVo;Xp jvqD{m7Il0}yzgjn64}?dBP>kuYgky!(YQfH2CM%9qoX(> delta 706 zcmY*WOHUI~6#njX;I?Hd&_Z8O9RV$mK71iU#o8i;fAfeg5sO z@FRhf9H$hh2-uHUc#MI!P2I4XhSS89f@#dy`)o!&%Mi8qrD(v1S7&4 zKWt?vgDl561?O?W&P!ptDv7;I4C$iQ5o*2F*1tRT)P`ns)TU5P2eyT2wRF?byQXGX z880p~B;6F>HWYqO0rF4X;sdYEey^G@tL+IacEZtu3)kWLVTh#axRutq47-SfB zr>R(4{ppse)dj~YjaX|mN``JR$ZM^Jpr}o%SMKiAgt?{Fn#9OD>Gn%ccJC^^pR*(| z=LPA!Mkqm+ksX*n0((ymL!M4Y2E6d$Izr?-p+AU~$v*VtK7nrseMcDDbiEVg-CF2l zC x(eM)T_6s?=yg|$zM2MXrK8E{ Date: Fri, 27 Mar 2026 13:28:45 +0100 Subject: [PATCH 3/3] init: maj --- projet_linea/src/LineaAppli.java | 1 + 1 file changed, 1 insertion(+) diff --git a/projet_linea/src/LineaAppli.java b/projet_linea/src/LineaAppli.java index 08ecd84..b9e6085 100644 --- a/projet_linea/src/LineaAppli.java +++ b/projet_linea/src/LineaAppli.java @@ -9,4 +9,5 @@ public class LineaAppli { } + }