From 7f2d998310acd471e693c904a84f607050f7d0e4 Mon Sep 17 00:00:00 2001 From: pourchot Date: Wed, 20 Sep 2023 11:29:37 +0200 Subject: [PATCH] 20 Septembre --- DEV2.1/TP7:Evenements/Attente.java | 1 + DEV2.1/TP8/MonInt.class | Bin 0 -> 2170 bytes DEV2.1/TP8/MonInt.java | 98 ++++++++++++ DEV2.1/TP8/v0/Carte.class | Bin 0 -> 2076 bytes DEV2.1/TP8/v0/Carte.java | 150 ++++++++++++++++++ DEV2.1/TP8/v0/EnsembleCarte.class | Bin 0 -> 1447 bytes DEV2.1/TP8/v0/EnsembleCarte.java | 142 +++++++++++++++++ DEV2.1/TP8/v0/Joueur.class | Bin 0 -> 1154 bytes DEV2.1/TP8/v0/Joueur.java | 95 +++++++++++ DEV2.1/TP8/v0/Table.class | Bin 0 -> 1038 bytes DEV2.1/TP8/v0/Table.java | 123 ++++++++++++++ DEV2.1/TP8/v0/TestCarte.java | 85 ++++++++++ DEV2.1/TP8/v0Memory.zip | Bin 0 -> 9692 bytes .../TP2:Transitions/Galerie/Changement.class | Bin 0 -> 660 bytes .../TP2:Transitions/Galerie/Changement.java | 23 +++ DEV3.1/TP2:Transitions/Galerie/Galerie.class | Bin 0 -> 745 bytes DEV3.1/TP2:Transitions/Galerie/Galerie.java | 32 ++++ .../TP2:Transitions/Galerie/Listeimage.class | Bin 0 -> 841 bytes .../TP2:Transitions/Galerie/Listeimage.java | 15 ++ DEV3.1/TP2:Transitions/Galerie/Main.class | Bin 0 -> 918 bytes DEV3.1/TP2:Transitions/Galerie/Main.java | 20 +++ DEV3.1/TP2:Transitions/Galerie/image1.jpg | Bin 0 -> 5835 bytes DEV3.1/TP2:Transitions/Galerie/image2.jpg | Bin 0 -> 4724 bytes DEV3.1/TP2:Transitions/Galerie/image3.jpg | Bin 0 -> 8454 bytes DEV3.1/TP2:Transitions/Galerie/image4.jpg | Bin 0 -> 19600 bytes DEV3.1/TP2:Transitions/Galerie/image5.jpg | Bin 0 -> 3802 bytes SAE | 1 - Vote.java | 20 +++ 28 files changed, 804 insertions(+), 1 deletion(-) create mode 100644 DEV2.1/TP8/MonInt.class create mode 100644 DEV2.1/TP8/MonInt.java create mode 100644 DEV2.1/TP8/v0/Carte.class create mode 100644 DEV2.1/TP8/v0/Carte.java create mode 100644 DEV2.1/TP8/v0/EnsembleCarte.class create mode 100644 DEV2.1/TP8/v0/EnsembleCarte.java create mode 100644 DEV2.1/TP8/v0/Joueur.class create mode 100644 DEV2.1/TP8/v0/Joueur.java create mode 100644 DEV2.1/TP8/v0/Table.class create mode 100644 DEV2.1/TP8/v0/Table.java create mode 100644 DEV2.1/TP8/v0/TestCarte.java create mode 100644 DEV2.1/TP8/v0Memory.zip create mode 100644 DEV3.1/TP2:Transitions/Galerie/Changement.class create mode 100644 DEV3.1/TP2:Transitions/Galerie/Changement.java create mode 100644 DEV3.1/TP2:Transitions/Galerie/Galerie.class create mode 100644 DEV3.1/TP2:Transitions/Galerie/Galerie.java create mode 100644 DEV3.1/TP2:Transitions/Galerie/Listeimage.class create mode 100644 DEV3.1/TP2:Transitions/Galerie/Listeimage.java create mode 100644 DEV3.1/TP2:Transitions/Galerie/Main.class create mode 100644 DEV3.1/TP2:Transitions/Galerie/Main.java create mode 100644 DEV3.1/TP2:Transitions/Galerie/image1.jpg create mode 100644 DEV3.1/TP2:Transitions/Galerie/image2.jpg create mode 100644 DEV3.1/TP2:Transitions/Galerie/image3.jpg create mode 100644 DEV3.1/TP2:Transitions/Galerie/image4.jpg create mode 100644 DEV3.1/TP2:Transitions/Galerie/image5.jpg delete mode 160000 SAE create mode 100644 Vote.java diff --git a/DEV2.1/TP7:Evenements/Attente.java b/DEV2.1/TP7:Evenements/Attente.java index 9ea5b52..9a472af 100644 --- a/DEV2.1/TP7:Evenements/Attente.java +++ b/DEV2.1/TP7:Evenements/Attente.java @@ -1,6 +1,7 @@ import java.awt.*; import javax.swing.*; import java.awt.event.*; +import java.lang.* public class Attente extends JPanel implements WindowListener{ diff --git a/DEV2.1/TP8/MonInt.class b/DEV2.1/TP8/MonInt.class new file mode 100644 index 0000000000000000000000000000000000000000..99b981c276a89ae9512a8739f3d6cfa7d199575d GIT binary patch literal 2170 zcmZuxSyL2O6#njPJu@^iG%DcQF~$r7h>1&7L{UT~fpI}m+_0IsVq?=i_Cjg$n3q(g z@|dcWRVnjk9`X=P98#ewzUMckl6-f1WI(N&x_$0hzI)Dh&Y8de{qrvXhp?Q-UX13@ zjnnEllf_sbXEC1V<(!7|d1x5T;)424WbwJuf04zcx=*QyvWAO!6fmmcQWlr%ALIZKCW?9*`shjsL!B+%0W zIsK+h#Bd#~)W@O?6Y?;+VIz#LU@MJ2a=Q$^*+hAK9V*WWZcx z&e9AbJ7^RUL^bILp&i;XdTf%}!1UaPhYDS^lxDx8=b=j7VVWkJ6;mgW4t>uKlzD*K zN0CKJ*dSL%_j%{V{*v8T(&56>P}A{9;SAvb$FEhzTIR~`Yan2VNTASixj4TlDlV6k-*X7x^ao!hSzDDd$E4_nog|5s@0^+?HF8- z@t%lS)$BKSY|H!nIfy%o6YC#(J8WIy(@%m>axIcx#PYYq3ESS#C2n!ZIB6}ZU2YJt zQ7xd=l#|1O*pNrFEVU3FEr!R`v~#PfG9YW!wV_k9716*Ax`_|?m$R3Den}+MvQSE> zeE|wRYHWGeAk;MQ9OUgF?MZ$+N-Geh?XQq14ZK3~1yut3c^XJ5GtUBY=)@*!gc^`0 zzz+;p0QdTh)E`J+Fa3_hNJ*Xjbz~d`xC(7{1z96kN1lcxKSmo5I_OGn=TXNdKKl|K zPto%x_`!~6Xj?^r!JV&FMu|p7+mNBWjfHH7j-BYmF8-Ro`Vo{HQf#8TQ_O$JJ2q>e4dRu)WI70#8?(wnYhPa|rhMlf)L<^>shh-EzCD1MD^@GZaJ<0*dRH}2m&dRWg1v|$8W zaT0rQit{vzV>pd5oWT^&D;URZoP&i6L@N{T3K1{iD_kb(HR8?^`8vMC4Wi#7{v2Pp zgJ-yl=ZsRF+lS153`%P_rs4S74?@Fm?)=(;EOQxYcI;52UqGkPUB`z{p{1T9mHZ7I Xt?`Q+oohUiMnWG|<8YGiC2;D0>4)6Y literal 0 HcmV?d00001 diff --git a/DEV2.1/TP8/MonInt.java b/DEV2.1/TP8/MonInt.java new file mode 100644 index 0000000..9ec608d --- /dev/null +++ b/DEV2.1/TP8/MonInt.java @@ -0,0 +1,98 @@ +// notez le s apres Object. Permet entre autre de stipuler qu'un objet o n'est pas null avec la methode Objects.requireNonNull(o, "message d'erreur detaille"); +import java.util.Objects; +/* + * Sorte de Int du pauvre a laquelle on ajoute un nom sous forme textuelle. + * + * Classe donnee a titre d'exemple pour illustrer les ingredients techniques de la prog defensive. + * et les assertions java + */ +public class MonInt { + // un entier + private int valeur ; + // son nom sous forme textuelle + private String nom ; + + public MonInt(int n, String s){ + this.valeur = n; + this.nom = s; + } + /** + * division du pauvre. + * + * + * @param c le diviseur par lequel on souhaite diviser this + */ + public void divise (MonInt c){ + Objects.requireNonNull(c, "la classe denominateur ne peut pas etre null"); + int avant = this.valeur; + + this.valeur = this.valeur / c.getValeur(); + this.nom = "(" + this.nom + " divise par " + c.getNom() +")"; + assert(this.valeur*c.getValeur() == avant); // NB. un assert qui ne marche pas tout le temps. + } + /** + * Un getter superstitieux. + * retourne une exception si la valeur vaut 13. + */ + public int getValeur(){ + if (valeur == 13) throw new IllegalStateException("Comme disait Sacha Guitry, je ne suis pas superstitieux mais on ne sait jamais."); + return valeur; + } + public String getNom(){ + return nom; + } + /** + * @return String representant l'entier. + */ + public String toString(){ + return this.getValeur() + " " + this.getNom(); + } + /** + * C'est un peu moche mais on peut pour simplifier mettre des tests manuels dans un main dans chaque classe. + * C'est plutot mieux que de mettre des print dans chaque methode car vous etes plus sur de la stabilite de vos tests + * (vous pouvez rejouer les tests plus tard). + * + * Idealement on utilise un outil dedie comme JUnit qui favorise au maximum cette automatisation. + * + * @param args pas de parametre en ligne de commande prevu. + */ + public static void main(String[] args) { + MonInt c3 = new MonInt(3,"trois"); + MonInt c4 = new MonInt(4,"quatre"); + MonInt c9 = new MonInt(9,"neuf"); + MonInt c13 = new MonInt(13,"treize"); + System.out.println(c3.toString()); + System.out.println(c4.toString()); + System.out.println(c9.toString()); + c9.divise(c3); + // 3 + System.out.println(c9.toString()); + c3.divise(c4); + // 0 + System.out.println(c3.toString()); + // tester des exceptions pas pratique + // Si on veut tester plusieurs exceptions + // il faut attraper et verifier que c'est le bon type d'exception. + // ici manuellement en regardant le message. + try { + System.out.println(c13.toString()); // toucher au nbre 13 avec getValeur() + } + catch(Exception e){ + System.out.println(e); + } + + try{ + c9.divise(c3); //division par 0 + } + catch(Exception e){ + System.out.println(e); + } + try{ + c9.divise(null); //division par null + } + catch(Exception e){ + System.out.println(e); + } + + } +} diff --git a/DEV2.1/TP8/v0/Carte.class b/DEV2.1/TP8/v0/Carte.class new file mode 100644 index 0000000000000000000000000000000000000000..745636a72f72a6d01defe31d67b7acdd8614a1b8 GIT binary patch literal 2076 zcmaJ?Yi|@)7=F&~Y-hU;r7W~i+R_0p>~4V~iiH*^r2m}Bm+5SS ziJ}tk@e(zDfcSw#6V&)YQCcI3e&{!Ul=z%EQ@c&kWOFXh`@YY6owI-a{revPo<=c+ zPV_aR75!>Cq?W@;97$mSN0S&daV&|U6q0y0iQ^_tq+p>hMXi(S^js3dYJXlWCzCjp zL_UcT6QfGybR*8-YzpTvrmo{^Ij^o0CME?My=h+#Ies7o#IS%l@6Nf?C3U+X&@k_m zWXDO(OP+0`r}S$m5@c62&6LkkhMQcnssA=Q+Rd6 zsYXhvq6{XM{lqh&N>C{lOR^qifTIFdP#Ft+*DK~LUQu9ECYzsi=AE9B;}v_fq+cMp zti|e>c!2?y9oG|R&0Jioo+a~?2?mxLtJM60JmH2RhXL=quyZVTJcWx>XF3p>yy zFi>*rf-050blVQ(Tp)eB>deh8eJ^e4@#s6{rSAe?+McwlvKA<*z4Swf)Ji227cIPq zmjwF$Wx871S@G<7rCg|#NkPs`aK)X={s)P`j+Oj}OC?qBLBCilOD{Nntstv`TVdjz zI#7n?L_*tBj&#*kewPHcYNY~;;CM`{PD5bxiW^<#V>P!lBYg``Vy}glahcPik}kWp zx;iXpjfrbcfpp}{o{_d5Bbx>Vr*MV!5=acGN~%B}Gcj$UfEl*Lg2W{YyHxdeBBQRa z2sE#Ra(a4J7J^lfj!t0XLt0HVv~?>zXE;Owb){1l*bt(%z%BJ?#yNo|UtX=bz8tN1 zqwJQzflS@(Xtn-2BpSZ@d5n|@^N1Q;b(?tW%3NTAe@n%&IC!iIZYvE@UULozFriU!yo*8IC=hTnAv_D4J-v5y!9vLzJ?^ z5#4nBMhnn9QY3wRQiB_${ovkK|OkaS^FMb9KNY3ZRBT(6|lLxC0~pBS~VR z+ii>(eEUqCrQ368!5H%xr|dlTViH+OO&DFxO-K3IA&2fLmQL=1!h~|B_;eZ#A$XB1 zr<1Fy!b$p4svB}TFdYL+pt9Ftq{6(W(aZ@~E;k{TH?ijdkAgd5T$H~a2Bk@RBhs$> zu%;HVF1LWD1*}gua|tWGfDH>s|D+hgOm$?lyz$G7NL&_FMYca8NpDovOz0*$mZ41= zGBn>EB+@NJB5EDIroI|R-ijEXuze56yBzsG6HlR$e_{KzTXC3fRky#rkJc$;5u5XO zv86jqpiMyuLL-EBtw2g^l+bPsQF-f%4MBB_WD4i8eE}V71=^g%${^xb20XUkil&2x zqR;4VW6JH5D?K{Lt^jW^lk1$$H_?H&SlGAOlN&gQcW@Z*veob56yE3Xe1OaN5Ht7) z9zMo3e1g~UDW#v`CO*g4_yXVH%dlcSh&{kpFibqdF6*DFU9al?YLsKptH$5}B{3ZQ E2a5{Gf&c&j literal 0 HcmV?d00001 diff --git a/DEV2.1/TP8/v0/Carte.java b/DEV2.1/TP8/v0/Carte.java new file mode 100644 index 0000000..3b24116 --- /dev/null +++ b/DEV2.1/TP8/v0/Carte.java @@ -0,0 +1,150 @@ +import java.util.Objects; + +// Copyright Florent Madelaine, (3 juin 2020) + +// florent.madelaine@u-pec.fr + +// Ce logiciel est un programme informatique simulant une petite partie du jeu de Memory + +// Ce logiciel est régi par la licence CeCILL soumise au droit français et +// respectant les principes de diffusion des logiciels libres. Vous pouvez +// utiliser, modifier et/ou redistribuer ce programme sous les conditions +// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA +// sur le site "http://www.cecill.info". + +// En contrepartie de l'accessibilité au code source et des droits de copie, +// de modification et de redistribution accordés par cette licence, il n'est +// offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, +// seule une responsabilité restreinte pèse sur l'auteur du programme, le +// titulaire des droits patrimoniaux et les concédants successifs. + +// A cet égard l'attention de l'utilisateur est attirée sur les risques +// associés au chargement, à l'utilisation, à la modification et/ou au +// développement et à la reproduction du logiciel par l'utilisateur étant +// donné sa spécificité de logiciel libre, qui peut le rendre complexe à +// manipuler et qui le réserve donc à des développeurs et des professionnels +// avertis possédant des connaissances informatiques approfondies. Les +// utilisateurs sont donc invités à charger et tester l'adéquation du +// logiciel à leurs besoins dans des conditions permettant d'assurer la +// sécurité de leurs systèmes et ou de leurs données et, plus généralement, +// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. + +// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez +// pris connaissance de la licence CeCILL, et que vous en avez accepté les +// termes. + +/** + * Classe représentant une carte de Memory + */ +public class Carte { + + /** + * Permet de savoir combien on a de cartes en tout. + * Pas vraiment clair qu'on veuille s'en servir ici. + * C'est purement pour des raisons pédagogiques de rappel de ce que veut dire un attribut de classe. + * + * Je ne rentre pas dans les détails de la destruction d'objets. + * Il faut lire la doc à propos de Objects.finalize() + */ + static int nbreCarte; + + /** + * False ssi caché + */ + private boolean visible; + + /** + * pour pouvoir apparier des cartes. + */ + private int valeur; + + /** Constructeur de carte. + */ + public Carte(int valeur){ + this.nbreCarte ++; + this.visible=false; // caché par défaut + this.valeur=valeur; + } + + // NB. Moralement, les cartes ne devraient pas être cachées. + // dans cette version on ne fait rien mais on voudrait idéalement que ce ne soit pas possible + /** + * Prédicat permettant de tester le fait que deux cartes ont la même valeur + * @param Carte la carte à comparer à this. + * @return true si elles ont la même valeur. + * @throws NullPointerException si la carte passée en paramètre ou this est null. + * @throws IllegalArgumentException si l'argument n'est pas visible + * @throws IllegalStateExeption si this n'est pas visible + */ + public boolean egale(Carte c){ + Objects.requireNonNull(c, "la carte à tester passée en paramètre ne peut pas être null"); + Objects.requireNonNull(this, "la carte qu'on veut comparer (this) ne peut pas être null"); + if(!c.visible){ + throw new IllegalArgumentException("carte en argument non visible"); + } if (!this.visible){ + throw new IllegalArgumentException ("carte courante non visible"); + } + return c.valeur == this.valeur; + } + + public boolean getVisible(){ + return visible; + } + + /** + * Méthode inversant la visibilité d'une carte. + */ + public void toggleVisible(){ + this.visible = ! this.visible; + } + + /** + * @return String representant la carte (version longue) + * @see toString + */ + public String toStringLong(){ + return this.toString() + " parmi " + this.nbreCarte; + } + + /** + * @return String representant la carte. + */ + public String toString(){ + return "une carte " + (this.visible ? "visible" + " de valeur " + this.valeur: "cachée"); + } + + /** + * C'est un peu moche mais on peut pour simplifier mettre des tests manuels dans un main dans chaque classe. + * C'est plutôt mieux que de mettre des print dans chaque méthode car vous êtes plus sûr de la stabilité de vos tests + * (vous pouvez rejouer les tests plus tard). + * + * Idéalement on utilise un outil dédié comme JUnit qui favorise au maximum cette automatisation. + * @param args pas de paramètre en ligne de commande prévu. + */ + public static void main(String[] args) { + Carte un = new Carte(1); + System.out.println(un.toString()); + Carte deux = new Carte (2); + System.out.println(deux.toString()); + Carte unBis = new Carte(1); + System.out.println(unBis.toString()); + + un.toggleVisible(); + System.out.println(un.toString()); + unBis.toggleVisible(); + System.out.println(unBis.toString()); + System.out.println(un.egale(unBis)); + unBis.toggleVisible();//true + System.out.println(unBis.toString()); + + System.out.println(un.toString()); + deux.toggleVisible(); + System.out.println(deux.toString()); + System.out.println(!un.egale(deux));//not false + + Carte bad = null; + un.egale(bad); + } +} + + diff --git a/DEV2.1/TP8/v0/EnsembleCarte.class b/DEV2.1/TP8/v0/EnsembleCarte.class new file mode 100644 index 0000000000000000000000000000000000000000..ab7d3e5a4c8790ec2698326076cbb5f7d402be23 GIT binary patch literal 1447 zcma)5ZBG+f6n<_yFvBp2R>1Xr)YYA~U|rN*wJcWf4K3(yU0D3Gd!bhxEmJa`nvMU2 zA7K3A2Tj}(H8FlR@egTydG2(IpmAd;XU;wMobx>A<-Y##{3U=BxM^cIMok>Ik-}&X zcHx8;C-w0cEq>MFlug@d6K8DL7`0H;-!Xmjo7ToHoYmiw7U#5iq8F1muf+uu7cE?} zF@%zZ%O<8wToEuA>p`S~rohhf9eGa{nvq{Cl>OkYs$Q0j+Z7cR1$rv}QXr#ds00pv z%WteaDZ@w=$8|uk5UThnAf^Pm$Na#L#s$(|c2>ZctXG+;pEzo!xxApl8*-sWOIlW| z0=Ac=%HCvXsFv&ZcxOeS3>vpoDBybK3qeCIGp3E1_-_d7t3-0~?zCJhA%Pv=XqJOL*z3T>0S8A= zcHn6-t;G@i)QQ^wJkj)PRb5lBTUBl({aQ`A4rXx8!FBwuwLjRYVYfXf8AR?G*LEXr`^9@_TLuh+f<0a)|h@wJy+`EKIT z$<0Nw{B^2BovFqf+$n)L=55)SQU9_;LXo=>#D~pWkkn=z-~-#u7n$N8CkcUl@o7KL z94hrL+PDIgKk{@MX==b=ZVe*$0;%~mr2m7Fqv(3V3xUIw85oq~l*iGJvlu{$IyWLo zQ(&4DJ+|lOpQ6k7hrzk0F!C*QKUzmCcFN0?pJV(qdatZPhQ)zA! z8gIA-YZa#w)m+6$o~E8v9M-0h_;y#K^0q%u6K_r9A&j)fO2yT7GdFMxc}f$hcPN#( zhI(Za&9UXFHT~?%~HbY~r@Z>)eJoK%mCnFXJ2nNYqiqO3ZZ&Qtxrp)W5=8 MoFv&}aoo?J0N7MBHUIzs literal 0 HcmV?d00001 diff --git a/DEV2.1/TP8/v0/EnsembleCarte.java b/DEV2.1/TP8/v0/EnsembleCarte.java new file mode 100644 index 0000000..7761cb9 --- /dev/null +++ b/DEV2.1/TP8/v0/EnsembleCarte.java @@ -0,0 +1,142 @@ +import java.util.LinkedHashSet; + +// Copyright Florent Madelaine, (3 juin 2020) + +// florent.madelaine@u-pec.fr + +// Ce logiciel est un programme informatique simulant une petite partie du jeu de Memory + +// Ce logiciel est régi par la licence CeCILL soumise au droit français et +// respectant les principes de diffusion des logiciels libres. Vous pouvez +// utiliser, modifier et/ou redistribuer ce programme sous les conditions +// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA +// sur le site "http://www.cecill.info". + +// En contrepartie de l'accessibilité au code source et des droits de copie, +// de modification et de redistribution accordés par cette licence, il n'est +// offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, +// seule une responsabilité restreinte pèse sur l'auteur du programme, le +// titulaire des droits patrimoniaux et les concédants successifs. + +// A cet égard l'attention de l'utilisateur est attirée sur les risques +// associés au chargement, à l'utilisation, à la modification et/ou au +// développement et à la reproduction du logiciel par l'utilisateur étant +// donné sa spécificité de logiciel libre, qui peut le rendre complexe à +// manipuler et qui le réserve donc à des développeurs et des professionnels +// avertis possédant des connaissances informatiques approfondies. Les +// utilisateurs sont donc invités à charger et tester l'adéquation du +// logiciel à leurs besoins dans des conditions permettant d'assurer la +// sécurité de leurs systèmes et ou de leurs données et, plus généralement, +// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. + +// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez +// pris connaissance de la licence CeCILL, et que vous en avez accepté les +// termes. + + + +/** + * classe abstraite pour gérer les opérations sur les ensembles de carte qu'on trouve au memory + * + */ +public abstract class EnsembleCarte { + /** + * La structure de donnée utilisée pour stocker les cartes dans la partie Collection de java.util. + * En gros, c'est un ensemble (répétition interdite) qui liste les éléments dans un ordre stable. + * La doc de java.util a propos de AbstractSet (ancêtre de LinkedHashSet) + * (...) all of the methods and constructors in subclasses of this class must obey the additional + * constraints imposed by the Set interface (for instance, the add method must not permit addition + * of multiple instances of an object to a set). + */ + private LinkedHashSet contenu = new LinkedHashSet(); + + /** + * nbre de Cartes de l'ensemble. + * + */ + private int nbreCarte; + + /** + * Constructeur d'Ensemble vide. + */ + public EnsembleCarte(){ + this.nbreCarte=0; + } + + /** + * Ajoute une carte à l'ensemble. + * @param c une carte + * @return true si la carte est ajoutée à l'ensemble + * @throws NullPointerException si la carte est null + * @throws IllegalStateException si la carte ne peut pas être ajoutée car elle est déjà présente dans l'ensemble + */ + protected boolean add(Carte c){ + this.nbreCarte++; + return contenu.add(c); + } + + /** + * Enlève une carte à l'ensemble. + * @param c une carte + * @return true si la carte est retirée à l'ensemble + * @throws NullPointerException si la carte est null + * @throws IllegalStateException si la carte ne peut pas être enlevéé car elle n'est pas présente dans l'ensemble + */ + private boolean remove(Carte c){ + this.nbreCarte++; + return contenu.remove(c); + } + + /** + * Permet de transférer une paire de carte (par exemple depuis la table vers un joueur) + * Si ces cartes sont toutes les deux visibles + * @param target destination du transfert + * @param c1 première carte + * @param c2 seconde carte + * @return true en cas de succès, false sinon + * @throws NullPointerException si un élément passé en paramètre est null. + * @throws IllegalArgumentException si les cartes ne sont pas toutes les deux visibles + * @throws IllegalStateException si this ne contient pas les deux cartes. + */ + public boolean transfer(EnsembleCarte target, Carte c1, Carte c2){ + return this.contenu.contains(c1) && this.contenu.remove(c1) && target.add(c1) && this.contenu.contains(c2) && this.contenu.remove(c2) && target.add(c2); + } + + + public String toString(){ + // Stringbuilder is the most efficient method of building a String like datastructure incrementally. + StringBuilder sb = new StringBuilder(" de taille " + this.contenu.size() + ", contenant : \n"); + for (Carte c : this.contenu){ + sb.append(" _ " + c.toString() +"\n"); + } + return sb.toString(); + } + + + // tests obsolètes [serait OK si classe n'était pas abstraite] + + // public static void main(String[] args) { + + // Carte un = new Carte(1); + // Carte deux = new Carte (2); + // deux.toggleVisible(); + // Carte unBis = new Carte(1); + + // Carte deuxBis = new Carte(2); + + // EnsembleCarte e1 = new EnsembleCarte(); + // System.out.println(e1.add(un) && e1.add(deux)); + // System.out.println(e1.toString()); + + // EnsembleCarte e2 = new EnsembleCarte(); + // System.out.println(e2.add(un) && e2.add(unBis)); + // System.out.println(e2.toString()); + + // e1.transfer(e2,un,deuxBis); + // System.out.println(e1.toString()); + // System.out.println(e2.toString()); + + // } +} + + diff --git a/DEV2.1/TP8/v0/Joueur.class b/DEV2.1/TP8/v0/Joueur.class new file mode 100644 index 0000000000000000000000000000000000000000..f3a1cf3056db622000a0f7719f0d3d51638f390c GIT binary patch literal 1154 zcmZuwOHUI~7(KTwo#`;V%CkNYRCL-3RX|0G52%1(c?1vyOw2$>GNhd$Wr}g*&YgRg z?sTh0X<`$9fIrH3?vxY(H}{p7_xTE1NM&$LLJVq6y1%i%S5Qt`X z%>y%)H=Ui-vRAa79lF9}wqtt_1loCsw<# zwQFsAY58rXXdPI2Im+Yj)2w<$)7gI|?L9{JMAzw~GHcbMmv6F*Z&@H9_eB;Y=g4_p zr^3k)H|KS91-A@_Hbmu8lr_eur9^)f=yx(Tl$^sLVs$mV?3NH$+V(|V|k=FyO3 zb&}Q9Y~h+ssi1}BL`T(_8Venwb&bf3OGusjoeDLMonKS2}Irq-)&tKnv09ZlE#5kr^m@#4Erh!=#2}}>*mddx) ziLF+)fvjT88JIU=sTvD2gIGY$#3J%)yJTQlKrgwz8$J?<+u4dhVm+uyfswN7%guIU zPc~mUdmfRvQ>zJ>c6r@thO(G_Enqa|k@RHqG)xJ->Qwg?IuHh1Vbk^N0!cetK5&kl zyyy7!d=D-1wua;S0vGMw^QX#KmD4=K|jmrWYun`!J~2 zJy~&EZZs6#IXsj;=aRGk(ZD&VZ%Q?8KU4jUp0fS170L$Z9JE7$$zH7+`tAqOU% z2J0rGg1=!t#GxX2oaE$bA20R}WHl^iE6DJ<$N2>TIw*o9<0N+(X2Gn@bs@fR!M9*E z5o289ceG4|Q)X23>%`TGJ~!V*>=Rc#z7hojq4p4Y+`_^gTc>dtnFfu=5O?izah>!0Q<)h(cwGKuj(pXyK;n)fGr~3kid2fww rB;VsL`>$gb@AyZ0SVaRR_*h4P4ZOz|TG&B|H#j2e1HDhNHipb^M0db0 literal 0 HcmV?d00001 diff --git a/DEV2.1/TP8/v0/Table.java b/DEV2.1/TP8/v0/Table.java new file mode 100644 index 0000000..1c1cc57 --- /dev/null +++ b/DEV2.1/TP8/v0/Table.java @@ -0,0 +1,123 @@ +import java.util.LinkedHashSet; + +// Copyright Florent Madelaine, (3 juin 2020) + +// florent.madelaine@u-pec.fr + +// Ce logiciel est un programme informatique simulant une petite partie du jeu de Memory + +// Ce logiciel est régi par la licence CeCILL soumise au droit français et +// respectant les principes de diffusion des logiciels libres. Vous pouvez +// utiliser, modifier et/ou redistribuer ce programme sous les conditions +// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA +// sur le site "http://www.cecill.info". + +// En contrepartie de l'accessibilité au code source et des droits de copie, +// de modification et de redistribution accordés par cette licence, il n'est +// offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, +// seule une responsabilité restreinte pèse sur l'auteur du programme, le +// titulaire des droits patrimoniaux et les concédants successifs. + +// A cet égard l'attention de l'utilisateur est attirée sur les risques +// associés au chargement, à l'utilisation, à la modification et/ou au +// développement et à la reproduction du logiciel par l'utilisateur étant +// donné sa spécificité de logiciel libre, qui peut le rendre complexe à +// manipuler et qui le réserve donc à des développeurs et des professionnels +// avertis possédant des connaissances informatiques approfondies. Les +// utilisateurs sont donc invités à charger et tester l'adéquation du +// logiciel à leurs besoins dans des conditions permettant d'assurer la +// sécurité de leurs systèmes et ou de leurs données et, plus généralement, +// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. + +// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez +// pris connaissance de la licence CeCILL, et que vous en avez accepté les +// termes. + + + +/** + * Classe gérant la table de jeu du Memory dans le modèle + * Pour l'instant ne gère pas le tour des joueurs. + * Devrait probablement le faire un jour. + */ +public class Table extends EnsembleCarte { + + /** + * Constructeur de Table vide (seul constructeur pour l'instant) + */ + public Table(){ + } + + /** + * Nécessaire de la rendre publique car on a un parti pris que on commence avec une table vide à laquelle on ajoute des cartes. + * On pourrait alternativement faire un constructeur qui fabrique les cartes ou bien qui prend une collection de cartes. + * Ça n'aurait pas la vertu pédagogique de montrer qu'on peut surcharger une méthode en élevant les droits en java. + * + * Par délégation mais en rendant publique la méthode (pour l'initialisation en fait). + * @param c Carte à ajou + * @return true si la carte est ajoutée à l'ensemble + * @throws NullPointerException si la carte est null + * @throws IllegalStateException si la carte ne peut pas être ajoutée car elle est déjà présente dans l'ensemble + */ + @Override + public boolean add(Carte c){ + return super.add(c); + } + + /** + * révèle une carte. + * @param c une carte à révèler + * @throws NullPointerException si la carte est null + * @throws IllegalArgumentException si la carte n'est pas sur la table + * @throws IllegalStateException si la carte est déjà révélée + */ + public void reveler(Carte c){ + c.toggleVisible(); + } + + /** + * cache une carte. + * @param c une carte à cacher + * @throws NullPointerException si la carte est null + * @throws IllegalArgumentException si la carte n'est pas sur la table + * @throws IllegalStateException si la carte est déjà cachée + */ + public void cacher(Carte c){ + c.toggleVisible(); + } + + + public String toString(){ + return "Table " + super.toString(); + } + + + public static void main(String[] args) { + // c'est un peu moche mais on peut pour simplifier mettre des tests manuels dans un main dans chaque classe. + // C'est plutôt mieux que de mettre des print dans chaque méthode car vous êtes plus sûr de la stabilité de vos tests (vous pouvez rejouer les tests plus tard). + + // Les cartes + Carte un = new Carte(1); + Carte deux = new Carte (2); + Carte unBis = new Carte(1); + Carte deuxBis = new Carte(2); + + + // la Table + Table t = new Table(); + t.add(un); + t.add(deux); + t.add(unBis); + t.add(deuxBis); + + System.out.println(t); + + t.reveler(un); + t.reveler(unBis); + + System.out.println(t); + + } +} + + diff --git a/DEV2.1/TP8/v0/TestCarte.java b/DEV2.1/TP8/v0/TestCarte.java new file mode 100644 index 0000000..9862dd2 --- /dev/null +++ b/DEV2.1/TP8/v0/TestCarte.java @@ -0,0 +1,85 @@ +import static org.junit.Assert.assertTrue; // import static : une facilité offerte depuis java5 (pas besoin de mettre le préfixe) +import static org.junit.Assert.assertFalse; // +import org.junit.Test; + + +/** + * Une classe pour faire des tests sur la classe Carte avec JUnit + */ +public class TestCarte { + + // un test pour Junit4 c'est une méthode avec l'annotation @Test devant une méthode avec un type de retour void. + @Test + public void egaleSiIdentiquesEtVisible() { + Carte un = new Carte(1); + un.toggleVisible(); + // on peut stipuler que des choses sont normalement égales (il faut charger de manière statique les Assert si on veut éviter d'avoir à écrire de quelle classe on parle) + assertTrue(un.egale(un)); + } + + // le nom du test doit être le plus explicite possible + @Test + public void egalSiMemeValeurEtVisible() { + Carte un = new Carte(1); + un.toggleVisible(); + Carte unBis = new Carte(1); + unBis.toggleVisible(); + assertTrue(un.egale(unBis)); + } + + @Test + public void pasEgalSiPasMemeValeurEtVisible() { + Carte un = new Carte(1); + un.toggleVisible(); + Carte deux = new Carte(2); + deux.toggleVisible(); + assertFalse(un.egale(deux)); + } + + // un test pour Junit4 qui cherche à vérifier qu'il y a bien une exception + @Test(expected = NullPointerException.class) + public void egalPasFaitPourNull(){ + Carte bad = null; + Carte un = new Carte(1); + un.egale(bad); + } + + // un autre test pour Junit4 qui cherche à vérifier qu'il y a bien une exception + @Test(expected = IllegalArgumentException.class) + public void egalPasFaitPourParametreNonVisible(){ + Carte un = new Carte(1); + un.toggleVisible(); + Carte deux = new Carte(2); + un.egale(deux); + } + + // un autre test pour Junit4 qui cherche à vérifier qu'il y a bien une exception + @Test(expected = IllegalStateException.class) + public void egalPasFaitPourCarteThisNonVisible(){ + Carte un = new Carte(1); + Carte deux = new Carte(2); + deux.toggleVisible(); + un.egale(deux); + } + + //Le monde est mal fait et parfois c'est le test qui est faux. + //Notez que je suis vraiment méchant car ce test est satisfait au début avec le code proposé... + //Moralité : faites des tests très simples et faites vous relire! + @Test + public void egalTestMalFait(){ + Carte un = new Carte(1); + un.toggleVisible(); + Carte deux = new Carte(2); + deux.toggleVisible(); + un.toggleVisible();//copié collé de la mort + assertFalse(un.egale(deux)); + } + + // si on ne met pas l'annotation arobase test, le test n'est jamais pris en compte. + // c'est juste une méthode annexe qui n'est pas appellée comme dans n'importe quelle classe. + public void autreTestMalFait(){ + assertFalse(true); + } + + +} diff --git a/DEV2.1/TP8/v0Memory.zip b/DEV2.1/TP8/v0Memory.zip new file mode 100644 index 0000000000000000000000000000000000000000..dbf238d4cb4d1b1ef8292857c58d5429273a7ca4 GIT binary patch literal 9692 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 X!7Ir@K>mS%{C!b?0swhrfBgF&Z`0Jw literal 0 HcmV?d00001 diff --git a/DEV3.1/TP2:Transitions/Galerie/Changement.class b/DEV3.1/TP2:Transitions/Galerie/Changement.class new file mode 100644 index 0000000000000000000000000000000000000000..bdf31cfa34c3c8c4d94110b4b2e9ceb00d5fe40b GIT binary patch literal 660 zcmZuvO-~b16g{sq?a=8!3s@^v(E2%4WsGrQ0&&ws0~!1X1{Q97?L6_}eAHnI{1-Rf zxwa;lxbO$~qm1Vj5;n}@ynFB5bMAQ`fB*gd1K=4RyQpHZiYsVVaTP5C*IX>2ZQ#0r z8xEEotO!&#bgGLN0+zqJD`5AsND0(KovPQPq_6V#vLCZD_erIy$W<@aUq>our@v_k zvpal_ku0ZF#I5A64$GrS`6l|a9!5j|$hTm{#1_ZP$u20UP5<*Z1`9O{fs z>o-`_>bnU_6Ic`2Pft;9+hZ&-wm<%a&9yYf$_&HrXqjqsR&7+qaI9&3!L963=@gC` yTbhntqc70uEC(;pWt(}2!+n}~f(D*r9vggRTWI1f-&lj)HcI{?jm=M07XAaG6M|O& literal 0 HcmV?d00001 diff --git a/DEV3.1/TP2:Transitions/Galerie/Changement.java b/DEV3.1/TP2:Transitions/Galerie/Changement.java new file mode 100644 index 0000000..fd699ac --- /dev/null +++ b/DEV3.1/TP2:Transitions/Galerie/Changement.java @@ -0,0 +1,23 @@ +import java.awt.*; +import javax.swing.*; +import java.util.*; + +public class Changement{ + + static public void fenetreCliquer(int LR){ + Main.pan.remove(Listeimage.liste[Listeimage.index]); + if (LR==1){ + Listeimage.index+=1; + if(Listeimage.index==-1){ + Listeimage.index=5; + } + }else { + Listeimage.index-=1; + if(Listeimage.index==6){ + Listeimage.index=0; + } + } + Main.pan.add(Listeimage.liste[Listeimage.index]); + Main.pan.repaint(); + } +} \ No newline at end of file diff --git a/DEV3.1/TP2:Transitions/Galerie/Galerie.class b/DEV3.1/TP2:Transitions/Galerie/Galerie.class new file mode 100644 index 0000000000000000000000000000000000000000..9f50586a9d7b98cfe91ea57344cc408341280a30 GIT binary patch literal 745 zcmah`%We}v5UjD+S!Y?tBnE?n$&-f@B=*9M$Hg)z$UzZ_0!Jox#~!j?!|piA?;sAG zxdg<458#^+qGkyoq@ZY|eob|CP0zO5kruSqVquNha;s^bVx2u+Zwh)`vRMM>di} zNo=&~?mI5L?}#efR`(7z^_zeCJBgLl^*Mk>=*e~Dp}^zN`CoVV$pdXY>y{t zPad0G$P*n)YUHk)AEJzD9}6KCu@qt%OFmXYtm1}(e+pEXbI{``J2J^2db*_(i4~e> z>F=7%N+PL39Ae1!+o{L6xVDi&()dZlT5ssI2fEbyek@>Yr(i lyq%i<3UlhgZpHrJqW%kO5H@>0tV!71`LIR8YPq6IKLOuagD?O9 literal 0 HcmV?d00001 diff --git a/DEV3.1/TP2:Transitions/Galerie/Galerie.java b/DEV3.1/TP2:Transitions/Galerie/Galerie.java new file mode 100644 index 0000000..7585119 --- /dev/null +++ b/DEV3.1/TP2:Transitions/Galerie/Galerie.java @@ -0,0 +1,32 @@ +import java.awt.*; +import javax.swing.*; +import java.awt.event.*; +import java.util.*; + +public class Galerie extends JPanel implements MouseListener{ + + public Galerie(){ + super(); + } + + public void mouseClicked(MouseEvent e){ + int x = e.getX(); + if (x <= this.getWidth()/5){ + Changement.fenetreCliquer(0); + }else if(x >= (this.getWidth()/5)*4){ + Changement.fenetreCliquer(1); + } + } + + public void mouseEntered(MouseEvent evenement){ + } + + public void mouseExited(MouseEvent evenement){ + } + + public void mousePressed(MouseEvent evenement){ + } + + public void mouseReleased(MouseEvent evenement){ + } +} diff --git a/DEV3.1/TP2:Transitions/Galerie/Listeimage.class b/DEV3.1/TP2:Transitions/Galerie/Listeimage.class new file mode 100644 index 0000000000000000000000000000000000000000..72dd0d9b029eefb020c61efca39b7bd9d05b53e4 GIT binary patch literal 841 zcmZva-EPxB5QWdivAuDercIji*Ot=Kk`_p4et^=78ziJu5nLEmvU-7>)QTLr4oXwn z2jGUs!MTW_f(PKC5VLmIMxr-!#^3DDo}KmYKR3GCZHK1VIKn6QG zl<=72iO{DUHKBEmXF_*58bX^Qv_xp@c&_6GgXWz&19z8Uu{(4=JD2sd3ojVd54%p! z_4j4HA(N&|S~6)fsJ?eLaTzMdH}_Dz;KaRTU>(|Y;04~~HG@*!K4Qqe8J*D1V%H1Y zcju=)cl^QW`9%0Z-@jgISflfC-+k)|PAloG$aGB@HnEEP45k0glb?TKN8Gd19|a6X zeCOKm(?D#0DZ-wKMO0+15!aSd(u~Qil(b@UJ0Gk zBYxi-y8Q{ctVUCdp*0!P`1i$VuDN^>VVyW0(Cd}ySJ1(QW6C(lXQbpVQt}ijIf<0a zL`r^0Ghkw96xZl$g_M!1J2S9vlrTC1&?2Z&^Yvuucc@eWzFr|?UqP`;*%{Osv?=ri zafxyXG9=0;$dss%pgD<({3rESLg<#A4Uw~KHALRBwGai%)6Mi literal 0 HcmV?d00001 diff --git a/DEV3.1/TP2:Transitions/Galerie/Listeimage.java b/DEV3.1/TP2:Transitions/Galerie/Listeimage.java new file mode 100644 index 0000000..04c5d5b --- /dev/null +++ b/DEV3.1/TP2:Transitions/Galerie/Listeimage.java @@ -0,0 +1,15 @@ +import java.awt.*; +import javax.swing.*; +import java.awt.event.*; +import java.util.*; + +public class Listeimage{ + + static JLabel image1 = new JLabel(new ImageIcon("image1.jpg")); + static JLabel image2 = new JLabel(new ImageIcon("image2.jpg")); + static JLabel image3 = new JLabel(new ImageIcon("image3.jpg")); + static JLabel image4 = new JLabel(new ImageIcon("image4.jpg")); + static JLabel image5 = new JLabel(new ImageIcon("image5.jpg")); + static JLabel[] liste = {image1, image2, image3, image4, image5}; + static int index=0; +} \ No newline at end of file diff --git a/DEV3.1/TP2:Transitions/Galerie/Main.class b/DEV3.1/TP2:Transitions/Galerie/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..6431783a67409eb5e4755756954ed1ec812991ef GIT binary patch literal 918 zcmZuvYflqF6g|_|w#!lq^74U5eQiOh#kWOGtifQ4nABj@Pt!7xA=_QD-GcF72}wyL z@dx;m{9rt@t%AYL=H5GZ?m73&o%!+W+jju>@Z82IW^*XuN)B@<+Q{RoSzfb|!*yeB z7<1EtYkbL=d1DrgnYD1sKz4kj_>U>p+`$`0=bkzE;3I~iSH*S+>MJ@0n;@?W2{ijaR znhj1wg)y1U(hc3w{d;sjmNxj-3VeA$0$DSDMp<()^hxlNF-1Gg)eOC$PtPAgd}SbT zo;K4@@(EtRMaHIdKZXLe10)WR>>>630O?WumdfI9-Na# zMd|_^*chg&Jc<~>0<|wueU-{zP9_~Z2$lO literal 0 HcmV?d00001 diff --git a/DEV3.1/TP2:Transitions/Galerie/Main.java b/DEV3.1/TP2:Transitions/Galerie/Main.java new file mode 100644 index 0000000..9dc9a82 --- /dev/null +++ b/DEV3.1/TP2:Transitions/Galerie/Main.java @@ -0,0 +1,20 @@ +import java.awt.*; +import javax.swing.*; +import java.util.*; + +public class Main{ + + static JFrame fenetre = new JFrame(); + static Galerie pan = new Galerie(); + + public static void main(String[] args) { + + pan.add(Listeimage.image1); + fenetre.setSize(250, 250); + fenetre.setLocation(250, 250); + fenetre.addMouseListener(pan); + fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + fenetre.setContentPane(pan); + fenetre.setVisible(true); + } +} \ No newline at end of file diff --git a/DEV3.1/TP2:Transitions/Galerie/image1.jpg b/DEV3.1/TP2:Transitions/Galerie/image1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d402162b883e94c12f1235cdf45010df5a1da3e3 GIT binary patch literal 5835 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 CdX%RC literal 0 HcmV?d00001 diff --git a/DEV3.1/TP2:Transitions/Galerie/image4.jpg b/DEV3.1/TP2:Transitions/Galerie/image4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..939d68644793c1c0a44aaba381dc2c5186c768dd GIT binary patch literal 19600 zcmYhibyOV96E?am%i;ugXIb2x;O_1gJh($}cX#(J4hin=8f38mK?4c);t~Sn^83Df z&$-oq^z>Ans+l=6-CgxO^Kbp%E&y9ePEihkfB*m>yfwhTO+X|76^x9Bhf9Emi$_R6 zKtxPIOiV;XOiDpYOhov5NQA) zTrMP9Nlh@Gg*$gx8orcPS<}!Zo#i6I9*;-*m1px3G9j;Yc*O7s{LKj|0^olE{(lkP zydZ**z;8NU8~_61TQo2b@y!T;_`e7CzX-Tok{~=y3-?Rfu(UVdi+f1iSNL>NT0E8> z|26;^Z>DcnH~?|LpJ=)09BmC=;&9Az7nk>{S5ultA}q&t+B74?;vZ1s?Z`{u?24u; zYLOULT6tRvJji#Wt?Be$Iyl9J1T9^BlHl@KK)m&AZUQ#y7RCPiEpo1!6~$De1r>YI zgdq0hVu@vZheK6b#)cv7X$RgUiMdb?HgU9ze%>Xc&V;>3M|GUbcO5kr4jzVz$R9W zV`95bQuRM*>K=oj2+Y2wgoUB-eKg?rAT++N=6I#LIWd^_h15J1Sl~T|hQW~$T;Vxj zU(J}EASZ+I6m+l7K9 zxorF#Bf6SYFRAYz6{~6G2IGhd4T9+`$p3baHowCg5qd-s{yv>dQ;Wo^&NiG71L_i0 zERg_FhV|~pP!PZ??dR3!s(P1gPdUYxvwacwd$`1j9uROuhb{ysH5q3AvPCZ~{sbI~ zf1TEGM53;N46QV3^00`(lS5I7Ol(W7dIf|pDMQ4SrsqI$3Emxz2?*={MVAJ)saOH1 zw(>lWRHWWa1Nmk4O?ntqg*xBw>KKpO3rO7=>d)i+MmcAx##SRh_{3)`3a7$6GQ@V%&@A5DG%w^&S5lnwNk54Dko0#NmfE1Xoj2`DvUcf~s>^arco zzK>2TTQ^f%Q*}+RHH9;*E;HjYqe`~{@Ttd#c5$z14w~;=d+eTOj!YJC^GqXX?huB| zjL8Pbc#&sy20n!r{SC1A@95~V-dPgH)r`<|_;)&hF+Vf6g*lr*g+CQ59U|%7cAIy9 zJ8nfn`~CQ<+3V^&@5Y)?CFdzObd@S)m@e$Hc6OFo2_G;TXd&oXjZg*nfSBii`rF|;e6V*Xoiv!H;dmR6> z_mZB7SuSp^GL6VA2z<-XYxa`jB29l&M7KuG+{q|F;G9PL$gb||w zNiLNg!gD`$!+OsgjzGsoRM3RI4{nrh?GFLS=bK5As`A?#axJ{;mJc>7q9eCyaJzEc zV*eeuNmFIW9W$-PdQw%>H+cJgBP38)-ok=zN)?(eb93=5x3XBJ7DqkIYnV%HQSHKD zcQ@{2Bagl7IqUXvWhB-|L$j9HL%zUNr~wR@D3CipQG7KykXGoNGWq*t(N9KIBKAV) zeSJ7vjt5poU;%BIlifkBj+1J%15Ma5%Wk*+VvCCQuXyGKF(@NUt4OvN6q}`5eq1Ap zKnQoKsHkWsq}&)rr%7}8TA`53;M<4?_-o!^*t*F+Lq9o9oYMXK`MtbkJ&e6H+YZu@ z2tfMJNdoVpU8Jw+aYP}vu=An(M+$`SlJFlusAjk8o!||<^Ir0q~-I$~~LjbC|ABo}7S z)ggmP4ygpD-#sOfJI<==nqVSH)32vngHk1W%Q6#FrTly{6N-ho-(A4}Mj*r%5M z0Rp;QR&xQyWNm*73W{Hd3Qu%S+CBE*Rd|=NBBlUFX8Q;#xN*^cMzjp1OXEh$iHN=i zf=iCivUa?i-NA6ZEGT(GnaI7fa=bP z+vW6#^CzNKZEPx$H*%K$k2YdNlGV-8Jx7TpFXW4!dc)=(ZpF2{YYFWN#W2}&;){lk z-2S>it@mT&!k@l5ikPd@=ar&QQl9Xj@jptflN8CgSV!!*;^g`I;eWr@4c;Z&1++kjKb;eP#a?eZj}2GXQ#??bl9 zJKpvRw<;?TLY3CpyHTZOIm;OaF%`aTp{0YEkbULhjdbzcz3)SdYKe%-eq1XO-J|*~ zGLOVpcw&*mw__M->v3g-ssv^^0&QigLZ$7jv!%deMKYIDmOgAXoC;z5xoSUf;k$$1 z9P*S>czTOKmNN^4f+a}a12WbwFnAP`*f6B*z@JezF*Yv5Sd(6Dr^Tl#?AlNR{RaT7 z0|u~{Rq%ZKu97rX$3ygvx_ul{JYzv9DcUoqKV&gRmS|sHj>?zSG)5_8P}994sNp~RUi9XzW@lQP2xkVYIq>I}YyVrRJt0*QYSz)=KLpC$f{~p^{{t`xv7`#NrLO{h z1gx!~_^O&hkExk#koBUr&kPVe$&BwnD!l5veBZ)i_YOg2jG{^^4KtHRqwnH(XI(@g zFI)y+(#n4!2Draewh5LLS33+xsduSLw9jxVh_xg-3LUN@-i>)XwdPLi2Ydw`;{Ddz z`eCJ=S1uDnvdaR z9-mKqot9VXp#!4ip23{42Pf$kzOkaBFWVg<;;*z11vh< zf3QtaaoCWfcKngUrrOXzf5d8z`7!RSijq*to9ZbuT-VIP9Xg3lP*OiX?%v0rj6T2V zC@!xc-a6{mq|Wsvzl9UmtgJwi6ni$hU`r0Xi0MOJ`DNR234aHGQ7WHz@JFRNi@3a{ zTA$hhcp0E347{NLY(kLn_E3$=m#wgA2NiL#UWd7ojDTgt&1T7C&l&ehE*M0@ml7fW zt*k@lebr3=xKn@9&|Th|U{D`sQUspev< zYx(>G_)a);uI{Y(Wo`Y+I1j$LH((Q$A~9N=F7-0NTgH_r2}GK;Np?UYZNo_HNq&NM zsT`YEOO#Jl6(JC2g_=JAFa6Ey+R~IqiW8t`Yy|FwZ3PL5z1PZ2Hu-(d!X3hKU7Sz_ zYM+uB@{3v~?ePGXirXn_blKNdQ!(Rcc3r((J%=ns+VW!vl8Yqr9&|fnts_m_?!9zE z96|&9SM9IBmf;pX2a72*GZMYefhzkrx<+VIMFLPti}ZTW1==1KcKcYwW)-2B(h!6Dm0>@-{!twILw zVz^Ytpa`U0`jj`JHZ5K74`82;aW%WykDZqtA~_SYq^M6TcORRokmnkS)#5H*JyAZv zn`p$&92(A^e68|_KoTw5*&|%8od=Irlz(f7ymOOm+OH%S!3pZN4FAr-qnI4gCHyHD zgsree{O3Yo{AYal6RXvy7jFZ<$VSLkUT%a~@nYln=zeppUcdhD?yY|N8!Qo+u95|? zrD+MP0;ldPFT!yhoKm{F<0G=~G1Qi4^7zM|PkiO)it=Hehl|?#5H8HCXoMkFSh)IF z)y&2suFpWFKqY-xuEnr(?!fzK9Co?c?q+PN}Z6V!b_~)|hQf~}zo%rxvWFrI;q;#@)L(>tZxtO8ClszQb27(Y4lRZe` zJ_r9H#jtqXXJAK`OeXIVxMox)_u^J-S` zs(f}Dsa#m%XSE9Q8`c#*5)9F9ueP}>HedFUAs<0-xMG~}rP6O3)AePEZ?%KjHuNf6 z*=MC#{g1!xxU$xAua{2A{MFS=M15I~Jd?0QhAK-jrk!Z4tMRxIauHt|EifBN>Ok*D z6)vyl!wI9!e_NQN6^#EXjqTeFykf7~M{-oRcY_@z$@ga`KQeulL23=-0^RelxvCBr z4m-|1oYgj9@Q$-qvFBXbAKtJqw>i_$5fBc&`^b25^pQPwXN?8 zbD6F7(P9zVlz_2k$rd&TBgPQG#;6Ii|M2DI8$X*_kZ|Z`v?(u@a^vjB!0(cpr`#+$ zeD+bMC|X`dBwY>2W&O|XM~Gt_`hI|-A zOwW>Qu2|CTiX$ov;9A@_LyZFG2Xl+AJ>!L|gG${E`4ASDU*u1?47%uJ@~gfVz^H7g ze!at%!)=;7ERhC8<~DA;2t`ixQ&NYbFoj@Ewh1|;&x+wZ%8;?1xyZe!q1!gxF${A{ z`(|fW71f89Q{#1UEsU>{w9VI60T4IO7+YNFDi?9L%Vhapo^?!l;<6uP>(sStd4uObK!l6HOCdXQp2qPT8i z;pKE!WR%T+J73j3&nC?wU&4J@QA+TR92Wku;U9o8(M`wOznGMkZDwFYt$O2=`yaJO zGkY=I_}1`SO^EVvEVu37yN3y^g$c6Rp67uOMee4ApIK1n;?f*=O#-4hPK4}NTmadm za9G>bs(o8hV=m>uS7|!~zVm?poU{Y)GcjdqvxRNeXzP@VxV|6mhl)`bDWfC1T=XG`9D){sXWRu|eBl zT^kjAf`k6?D8e#Dpc4&sYIt24KvAGcY%?AUf0BJK$oUbz2<~x@Md3=rZot$m#q~iG z9?X~lOtr7~{mE^l5^pQ8AIdQW9nRS6njcA{hI^a+bpgIGR8L47(H)rG8R}M>{052+ zpcF>Q!*vtF$m$85&m?icKMn2#bF?kkS{sgCmB|~OQpFM2EI6AGTR+7;Up0D3(4G=$ zLe{?-1~LTl>MPkWNJWX1Ni2CYEqikha`vtfi8dyWsa_C}b36%M|5e|>mO2ZSC(WAOa}c?Vmy%_}q{8OCOa0UvD7GC#(Nmeg<$+eQ^D2ACL3laa zKt6p$HpfR%nlCe5nGKr49#`4@}upYC!W*wzf5Mnk90D9LC)x}Y6) zgN{(6)9CUsNrgX_t_B&az!V}l_QzEBqq5OG5B?!&lS9@_U=*jwacQPbqY^ww2H~L) ze{NRfRKgmULGVTh2qQsy&&f+{-?vT2e^22&zlf|p&OVFDEE)E*N(I>!!k^U{TcdFt z>f+*GV7H`NCVlV2Yw0<6BceJ_rMc+Aw_1iiU3x;zf_LPI(QJTdu1L$@w7$2F&PEmg zd5U(6_wOxbS5&_;i*B8G{)buNI8FMgaCEtE9WE`?!RB+er~F%=V}demut?9sj1ttk zmNp~~!Fu_rs8&SB@GlsU$eDH2PW}?HkLAEG^3p^)=Am-}?o~>d6&T^F{n|TNE*1*7 zt3+~s_PPIQ8Xh^6M~KpsCj($%y2}7XHh#Mm{zCw^P-EOGK^rUwaLf?LU*LF11^Y^$ z;h&`hCqSZnXXZ z&fNaKru{Jqgxd;#@4jlw}czuK|dBWw>S^HxHuEt_kA;PP{7Tnv(zO806Wmg3LKZsYRFMVF?? zQIA2;`jSGEx1_Z1NLF&?i8hBVV0bB~A zJgVVCIG0}^hgp&A)mmyg1tEU%Rjj%qFq@T0wFU{sHQ&dt3;|YY^Sp_k9jf|G&P|;^ zXH7gO-^p-YiR#rthJ)lE$O%(yd(P? za|)=Ay>_i0KM>JmXN{6xfBDO^%S@$7?_mI@6~9qHx8>8TzIdKaNP;2+m--nhEdfTF zK8IT0g(cVeh6*}U+?cR?rJDv*=n?R|eq>5&rACpBF4sXoths1Jti&$0-zhAZuIv

KLGICFlMQ zRY35Z0;Fp!*XqbpO7%1hi5bn-(6Tc)A!1WvD_OUz(GsnB20DAvrkDTW1?T%GFzb+# zAi|OQi4TPde<=!}F^mRj?E?re2CjlcMKe5OJ7>N~bb)O#doRl9;vYz^Ug(z-l%R;& z3CE63iZs!6I79_IxIWFNT(!SL&^!YsIK+6cJxrq2N00J(K6BI9ql`0U3ouL@Q}qA< zw)eoxwXSr8j1h^RS|_J3lD^SNA-BFC#Pa6L42~W@H_zx|BI=grb}@D^K7p>t}B zsXp#qwjEV{ov#MSE3|pOv=|;|{QO(q6Vl2?=C;j)AFx8wgbru!!&$MC7^Z2wdWanJ zIAtqjuz8c=J7h{fg9Ot(gad+a&1z&){o)dELEn97D))tp4{#Q}h;XOe!<;$bUwzh; zw3ySw3N*~yA)SyDTTy2o#QyaKY$C*U)30CR{sD0IEt@rkiB~l2Q8AIcvaIME{GwvJ zHk}v-!q;rRON_2jp$)zN#C+OlK%)%XHmC_}MXldD8URVWLi(0xZ z&E*Fm52E{|&T{E&Tt{e<=+{YF_4V~l-m$a~X&Vbq!-NF_SIGowbVY*?=*13f>cua7 zKqW96vcv%Qu|RHQEkF1 z-uy8WRH8U0MB;~B%+t*%;pmuh_!pePx55V`br=vWTe&v;Hm}Kc40= zR-G124vR7s^vGmAU8yWwK}*1eLcv$!9AD@!9A&Z=TbAlH*GUBE%GL8`mTD1c!L$gd zus;^C>~y&@(8a>j&V2B^+Gnc+#on)hx^=SKJX`|ePYDuj^zZ0D!IZ8l z#M-V>?0|v4a~}N(q{lveuR(<5(hO<^(|K@r^4fPCJ163sutHtZ`RYl!vnR$NsJ39w zot*aU91R8{GP^R9C8$Vb>I%yTPgL#)O^*;CN2dIEu@s@VVgE!(pFf?%zDf9x2i|qZ_i;}2d0b>QaT8X(UVSmxb)2sq98lRps+d6B zYP9fvoR_f^eckvQfo=fV-t5klt2(VJ#E#H7(iE0W-`@91F?%;|`}HLfOSpt3IGFIA zg{QnKwr-6u1wpO22%$AU9$2ZGTD}*Xh(Zh*Luar(CWkK}|NhZT^}?D1SCcjiDoo78 z<3nGX3FhBAQ@`+1Ogb1Fy*<5c_U7Iv{SoXNybxPK2-1E(B3EAF!~sw}U)!OK5*`;3 zIBN7pd0o|=J(7?_$fO#T06BC}Z+`8?i?!}9^NKs%X|@^U2FPe0Kx}qFtBSFR8UUA% zz8wlX!Fi;38ozG+pz7fos;0*II-);Ev5Ei%Q@0H5{NvBs?3#?Zo1=!YF=L7Y5fm^2Ys`NgP{%*uLKW z{u3rpidl;<-^?`f&^MV#oqLNQw@*>Yku-X=f(Lg&Z8T%S1cxxudM{}Z!P({Ot90%b zJGTdzM}%Q!k=Z)lSqA}Ads>fm2?S(S{VBT-7p!dDn;w2XjQ2A|4rJu5aNIglDR!Oq%hZmXgNP8%v+ST!BV)xvcDIa(Q>}DNf%=^#M)B)tHR%7RPG`3p z$%eM*10;*pJJqmQLf3$L!jmlAQi0R#JH)5UZk%TP9+74H&#$xYt%1m$ncDDD8yl(a z%#G3`4#MjVm7w=lww%0D*DU9o6Ky|DKIT*@m{K86uP7vC0Q`Hd&xY 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 Qzf`&(5;%P$^YHus07RYpegFUf literal 0 HcmV?d00001 diff --git a/SAE b/SAE deleted file mode 160000 index 12188da..0000000 --- a/SAE +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 12188daa2226d67c8e71cacb6b2d8e635cb12d4c diff --git a/Vote.java b/Vote.java new file mode 100644 index 0000000..e239f24 --- /dev/null +++ b/Vote.java @@ -0,0 +1,20 @@ +import java.awt.*; +import java.sql.*; + +public class Vote{ + public static void main(String[] args) { + try{ + Class.forName("org.mariadb.jdbc.Driver"); + try{ + Connection cnx = new DriverManager.getConnection("jdbc:mariadb://dwarves.arda.lan/pourchot","pourchot","A1B2C3"); + try{ + PreparedStatement ps=cnx.prepareStatement("SELECT ("); + }catch(SQLException){ + cnx.close(); + } + }catch(SQLException){ + } + }catch(ClassNotFoundException){ + } + } +} \ No newline at end of file