From 63a15fc6c7605138f9085f7fd877520fc785e7ff Mon Sep 17 00:00:00 2001 From: Simoes Lukas Date: Thu, 16 Oct 2025 16:23:43 +0200 Subject: [PATCH] fin tp3 --- .../TP03/01_Luminance/JParallelogramme.java | 1 - .../02_Chaine/ControleurParallelogramme.class | Bin 0 -> 2274 bytes .../02_Chaine/ControleurParallelogramme.java | 45 +++++++++++ DEV3.2/TP03/02_Chaine/CouleurList.class | Bin 0 -> 1202 bytes DEV3.2/TP03/02_Chaine/CouleurList.java | 72 ++++++++++++++++++ DEV3.2/TP03/02_Chaine/Fenetre.class | Bin 0 -> 1196 bytes DEV3.2/TP03/02_Chaine/Fenetre.java | 39 ++++++++++ DEV3.2/TP03/02_Chaine/Iterateur.class | Bin 0 -> 789 bytes DEV3.2/TP03/02_Chaine/Iterateur.java | 32 ++++++++ DEV3.2/TP03/02_Chaine/JParallelogramme.class | Bin 0 -> 1539 bytes DEV3.2/TP03/02_Chaine/JParallelogramme.java | 46 +++++++++++ DEV3.2/TP03/02_Chaine/Main.class | Bin 0 -> 322 bytes DEV3.2/TP03/02_Chaine/Main.java | 6 ++ .../ControleurParallelogramme.class | Bin 0 -> 2274 bytes .../03_Tableau/ControleurParallelogramme.java | 45 +++++++++++ DEV3.2/TP03/03_Tableau/CouleurList.class | Bin 0 -> 1061 bytes DEV3.2/TP03/03_Tableau/CouleurList.java | 49 ++++++++++++ DEV3.2/TP03/03_Tableau/Fenetre.class | Bin 0 -> 1196 bytes DEV3.2/TP03/03_Tableau/Fenetre.java | 39 ++++++++++ DEV3.2/TP03/03_Tableau/Iterateur.class | Bin 0 -> 808 bytes DEV3.2/TP03/03_Tableau/Iterateur.java | 32 ++++++++ DEV3.2/TP03/03_Tableau/JParallelogramme.class | Bin 0 -> 1539 bytes DEV3.2/TP03/03_Tableau/JParallelogramme.java | 46 +++++++++++ DEV3.2/TP03/03_Tableau/Main.class | Bin 0 -> 322 bytes DEV3.2/TP03/03_Tableau/Main.java | 6 ++ 25 files changed, 457 insertions(+), 1 deletion(-) create mode 100644 DEV3.2/TP03/02_Chaine/ControleurParallelogramme.class create mode 100644 DEV3.2/TP03/02_Chaine/ControleurParallelogramme.java create mode 100644 DEV3.2/TP03/02_Chaine/CouleurList.class create mode 100644 DEV3.2/TP03/02_Chaine/CouleurList.java create mode 100644 DEV3.2/TP03/02_Chaine/Fenetre.class create mode 100644 DEV3.2/TP03/02_Chaine/Fenetre.java create mode 100644 DEV3.2/TP03/02_Chaine/Iterateur.class create mode 100644 DEV3.2/TP03/02_Chaine/Iterateur.java create mode 100644 DEV3.2/TP03/02_Chaine/JParallelogramme.class create mode 100644 DEV3.2/TP03/02_Chaine/JParallelogramme.java create mode 100644 DEV3.2/TP03/02_Chaine/Main.class create mode 100644 DEV3.2/TP03/02_Chaine/Main.java create mode 100644 DEV3.2/TP03/03_Tableau/ControleurParallelogramme.class create mode 100644 DEV3.2/TP03/03_Tableau/ControleurParallelogramme.java create mode 100644 DEV3.2/TP03/03_Tableau/CouleurList.class create mode 100644 DEV3.2/TP03/03_Tableau/CouleurList.java create mode 100644 DEV3.2/TP03/03_Tableau/Fenetre.class create mode 100644 DEV3.2/TP03/03_Tableau/Fenetre.java create mode 100644 DEV3.2/TP03/03_Tableau/Iterateur.class create mode 100644 DEV3.2/TP03/03_Tableau/Iterateur.java create mode 100644 DEV3.2/TP03/03_Tableau/JParallelogramme.class create mode 100644 DEV3.2/TP03/03_Tableau/JParallelogramme.java create mode 100644 DEV3.2/TP03/03_Tableau/Main.class create mode 100644 DEV3.2/TP03/03_Tableau/Main.java diff --git a/DEV3.2/TP03/01_Luminance/JParallelogramme.java b/DEV3.2/TP03/01_Luminance/JParallelogramme.java index fa5105a..1657a1a 100644 --- a/DEV3.2/TP03/01_Luminance/JParallelogramme.java +++ b/DEV3.2/TP03/01_Luminance/JParallelogramme.java @@ -7,7 +7,6 @@ import java.util.ArrayList; public class JParallelogramme extends JComponent { private List listeCouleurs; - private List listePolygones; public JParallelogramme(List listeCouleurs) { this.setPreferredSize(new Dimension(280, 60)); diff --git a/DEV3.2/TP03/02_Chaine/ControleurParallelogramme.class b/DEV3.2/TP03/02_Chaine/ControleurParallelogramme.class new file mode 100644 index 0000000000000000000000000000000000000000..b18344d48a8386b790e5d2e58235da0c71bcb9dc GIT binary patch literal 2274 zcmX^0Z`VEs1_pD6RxSo<24hYJDFzb|Vam>6#>K$GV9dp!&0r29EI?dKE(R+GYi;KSg{#o))_&(074 zQXj~{5X8<9%+3(P&JfDTz?+jL-?$=sV}<Jh}O$#i`CY znaSCyDU1wq8VF~mmZj#E==*}?T|rE1khQ$QC5g$|zKI23+t?Yx*crkZ86c*(=9Q!t zflT2B8|qq-SpwogBm;_4i;F>AUa(|PYEEh*n9miQUs{x$>Xr#|yqt4>UP)0tC~yN3 zixP8kQgiatixP8lQ}sZ>$HSn^5W&MB%OJKC&TJ5o!w|*D zAmEgrUs7CBlvv=KT9T2UQq0fBkjuf4$HS1%P{7Vm$iq;?P|U+n0y3hMhoOw2oSmV9 zhoO=of{{TK?li~n5Z8+2)Pj=C{5&3pDuzr(1|ip?qSVqNg_Kf-;>zNZ!z*%A85tyT zdY+L%0Bl-LVqUtwe^ORzatR}Y3|I)1ppaq;lnhhzQi~WFB(X_@Ba)Fp2rO4xl9{9L zS&~|mSdw4F$iS=tieR4f)RGAQyx`=b)YLq%peG{(NH7v1$eW&85|CMungb3(Mg|cL zPftxm!U2m~Gcs@^Wer9Kj!d{sVj57@C@uiyhm6ExztoBnu)R@?3@mwIjtERWlK(;Z zB(<STwk@xFj`~k%2kCw1kmC6yn&-eEoo;%)FA|lA_ea zT#$+BsU<<6M9Pt#TH+1~0rvFN5~rNfR4#^Uh8j?YFU`%&OUz47Rj^WEWMmM}P0UVp z&d*CuED6sn$#BlkD=taQD*?L-7AO!GloVy=rCT#H2!maPYBwVTdjZHLIeBQl35Mtb z#SB|fYHog6DkB3sw5VWYU;#x0DEu{jywLKCH6w!nx)>t^dr@jZVrCvFfK!W#*coa; zDY=o6K?Uq4usbvJ%JQ>Q^&u8RJm!{|T#{c@$ECK;;kvBZE8x z0|OI-0s|AMNMc}MU}IopP-akJU}8{ZU|=w2U}9iqU|`_a+RnhJrM;DbNlRxd1M@}( z1_nk3H3kL-AqEx(1_oXR76v{BP6mDkJ_bRkk?IVL3>plY42&Ry7$q547}yyY7$)sz zV2Rw$!0M}`y^VoQdm97$HUWN-noxEUD^Fz{Hh zNwVo~W8j_1pd-m<#j=TkPm*mL1HXW128b3A@W@C2F$4wJGZJ<&2r)2hV-Q~ce}^Q? zF$Qsv!ICW77(~LgwlFYnV-VfOAhw)=$9EHhgplMm2H}kij0_A6tqdIu;tWh+KiM(x zGcYiSGH@`6F^DpVGe|H`_G`rz{buX#m=D3&cMRXzyn4)3=F>++g#{CXBsex07#I;D42lqtd5jEtgq3MAFf!;9R;JCs$Y4NNnGORpgCW>OMhp!M e3=CWhj0|-QO$_x6k_@g43=AN*yD=~_xB~z@;VVD@ literal 0 HcmV?d00001 diff --git a/DEV3.2/TP03/02_Chaine/ControleurParallelogramme.java b/DEV3.2/TP03/02_Chaine/ControleurParallelogramme.java new file mode 100644 index 0000000..30af283 --- /dev/null +++ b/DEV3.2/TP03/02_Chaine/ControleurParallelogramme.java @@ -0,0 +1,45 @@ +import java.awt.*; +import javax.swing.*; +import java.awt.event.MouseListener; +import java.awt.event.MouseEvent; +import java.util.List; +import java.util.ArrayList; + +public class ControleurParallelogramme implements MouseListener { + + private CouleurList listeCouleurs; + private Fenetre fenetre; + + public ControleurParallelogramme(CouleurList listeCouleurs, Fenetre fenetre) { + this.listeCouleurs = listeCouleurs; + this.fenetre = fenetre; + + } + + public void mouseClicked(MouseEvent e) { + try { + Robot robot = new Robot(); + Color couleurPixel = robot.getPixelColor(e.getXOnScreen(), e.getYOnScreen()); + Color aSupprimer = null; + for (Color couleur : this.listeCouleurs) { + if (couleur.equals(couleurPixel)) { + aSupprimer = couleur; + System.out.println("Luminance : " + (couleur.getRed()*21 + couleur.getGreen()*72 + couleur.getBlue()*7)); + } + } + if (aSupprimer != null) { + this.listeCouleurs.remove(aSupprimer); + this.fenetre.getP().repaint(); + } + } catch (AWTException exception) { + System.err.println("Erreur du système"); + } + + } + + + public void mouseEntered(MouseEvent e) {} + public void mouseExited(MouseEvent e) {} + public void mousePressed(MouseEvent e) {} + public void mouseReleased(MouseEvent e) {} +} \ No newline at end of file diff --git a/DEV3.2/TP03/02_Chaine/CouleurList.class b/DEV3.2/TP03/02_Chaine/CouleurList.class new file mode 100644 index 0000000000000000000000000000000000000000..a954fc6e9ad785929c540d54ba443000923d07e2 GIT binary patch literal 1202 zcmX^0Z`VEs1_pBmeJ%!024zkL76ug%p~}vn#>K$Gpbiq&U}wTn*Y{7#N=+`YW@O+D&P>lsEGaEYWn^FuakXY-U@tDs zEKAHQVPxR-an3IV>GjDh2B{T7=G%n0TH9GOGO*cX=4F=HF)}b~XofK|usG+Zq%tz_ z`();&`jzG;r51%GCgr3uGKgwmS`X5|rV-+54Pr1Srlc@3@CKJ8CTII57C^PJ6{Y6p zm*LVM#mE5BAH~SPky(;jlvt8q#K<6~p$W09v?Mb}-xDfs&B!2)RRZP}M;liwh(6>n zvcnWY5&;{Yl#>cGgDW_{v?w{%EfeHt0i^KL0|h=0gAju-4+A#?4-W%Bg8(A~HPs=>j`mReYvm{ZKiAfSO9Th^Lk z42lda44e#%3|tIM3@jiwFfcOkGB7YOG4L_4fSd#83o@`WFoK-Qz{nuNz`$V4z{J4F zz`($-wVi=ci*YLh6Nq5m$iTqB$RNtVz#zoH!oa}5&A`II!@$YF%fQFL2R1;AfeCH^ z6Wjo8Tm}d*urLTRa54xn@G%HO-6qb!$RNQ0GpK-pg@KuYfk9Vm3j@<}25v2oS<4v| zw0w28Ffbou;095?%m07T+0DQbslAc3^BNFC zdm97WOa?72utQ|P^cDstkY7PUTNs$PGB7V^-~a_36U!Qyiw!_7-on6ij6n{{f|w(q z1L1;nv8(~HeV6|~&%6d4VW2R#W8i0CU{GRUXHaI~WKd@iVbEZZX3%6%W6)wSVbEo; zWYA}@W-w;3WiVlIVK8NgVK8S%XRu(%WUyi=WUvMMm5+g)Q;UTW;$3ZasApvu7#U<4 r+Ka(ar{zaE5A=XJCS|6c`l2&Qt;bhjZdM literal 0 HcmV?d00001 diff --git a/DEV3.2/TP03/02_Chaine/CouleurList.java b/DEV3.2/TP03/02_Chaine/CouleurList.java new file mode 100644 index 0000000..d0f3766 --- /dev/null +++ b/DEV3.2/TP03/02_Chaine/CouleurList.java @@ -0,0 +1,72 @@ +import java.awt.*; +import javax.swing.*; +import java.util.List; +import java.util.Iterator; + +public class CouleurList implements Iterable { + + protected E valeur; + protected CouleurList suivant; + + public CouleurList() { + this.valeur = null; + this.suivant = null; + } + + public CouleurList(E element) { + this.valeur = element; + this.suivant = null; + } + + public void add(E element) { + if (this.valeur == null) { + this.valeur = element; + } else { + CouleurList actuel = this; + while (actuel.suivant != null) { + actuel = actuel.suivant; + } + actuel.suivant = new CouleurList<>(element); + } + } + + public boolean remove(E element) { + if (this.valeur == null) { + return false; + } + + // Cas 1 : suppression de la tête + if (this.valeur.equals(element)) { + if (this.suivant != null) { + this.valeur = this.suivant.valeur; + this.suivant = this.suivant.suivant; + } else { + // Cas spécial : un seul élément + this.valeur = null; + } + return true; + } + + // Cas 2 : suppression dans le reste de la liste + CouleurList actuel = this; + while (actuel.suivant != null) { + if (actuel.suivant.valeur != null && actuel.suivant.valeur.equals(element)) { + // suppression du suivant + actuel.suivant = actuel.suivant.suivant; + return true; + } + actuel = actuel.suivant; + } + + return false; // élément non trouvé +} + + + @Override + public Iterator iterator() { + return new Iterateur(this); + } + +} + + diff --git a/DEV3.2/TP03/02_Chaine/Fenetre.class b/DEV3.2/TP03/02_Chaine/Fenetre.class new file mode 100644 index 0000000000000000000000000000000000000000..1f0fad91c439ac1334e8df05d0dd2b891347e11e GIT binary patch literal 1196 zcmX^0Z`VEs1_pD6KrRLr230NwNd`3#q0Y{r0ire88ML?<*ch}y936HBT`mSr232+j zJuU`rkaBJYeJ%zA219lRBQ6Gh24j%42|I%+7lROk87G4zgE>2c1s8)TgC$7B3S^2k zJA(})17iUrgOHC`Kw?p1PEKl0etJ=2Zf>eIBLkaFW?p8A9U}v?hGrNe1B-KhN-84* zzfWdfs$XetQfg61Vp2{jBLi=6Nn&!gZ(;$I&yt>662QnHqM?b+RIcFs(xT*4w@i>$ z9=FuI)RLl9y{yEtL>>ki23Z~kTLwEG273lOMg}2}XoY@pd1hX^zL#53Vs0uAg9C#j zBZDwVMnAEpam6}`vHdH{v2Pt&HLXxOLK2XnsV9p@M;K(4( z;Kv}r5X~UTkjWs$P{AO^P{$z4(8VCnFpEKvVKIXeg8~BsgCqmfe+DZCc6J6yb_Pxc z1_pKpZbk-%UkuI+j0}nlN|1nJkY!+GU}RumU listeCouleurs = new CouleurList<>(); + + int r, g, b; + Random aleatoire = new Random(); + + for (int i = 0; i != 10; i++) { + r = Math.abs(aleatoire.nextInt()) % 255; + g = Math.abs(aleatoire.nextInt()) % 255; + b = Math.abs(aleatoire.nextInt()) % 255; + listeCouleurs.add(new Color(r, g, b)); + } + + this.p = new JParallelogramme(listeCouleurs); + + p.addMouseListener(new ControleurParallelogramme(listeCouleurs, this)); + + this.add(p); + } + + public JParallelogramme getP() { + return this.p; + } +} \ No newline at end of file diff --git a/DEV3.2/TP03/02_Chaine/Iterateur.class b/DEV3.2/TP03/02_Chaine/Iterateur.class new file mode 100644 index 0000000000000000000000000000000000000000..dd36a186eb005edda955070d27b62d33cfe6c2c2 GIT binary patch literal 789 zcmX^0Z`VEs1_pBmZ7v2*1{qEU4hC6H1~~?KE(Q(;1$G8SE(TVRupEODJA*Pig9c^LQ^)OZ-U z8F<(k)Oi>*7&Lhpgc(E_85BUW`e5_?@`Fp0GhB00b5rw5Tq}}O3raHc^LQAv7N zIN|0oG6;b6AbEt5K?p1aHU^?FzX%*4VT=siNU^}kz*d$BiV{!^fVCi*V$I0FUR;`4 zmY7$X85kHC8H5-Zz-k#7xEWX&co;Ytco`T$eunC^Vqj!oWME(r*V@9s zbc{g|L~UVUKE}Y#vYdg1c@5YykRfbfWr7T%3=9mc3{0X9AbnyC;tWh+`$M7jt7vUw zV420hy_|OzyxJUGDv|nO9KE&HlU0E literal 0 HcmV?d00001 diff --git a/DEV3.2/TP03/02_Chaine/Iterateur.java b/DEV3.2/TP03/02_Chaine/Iterateur.java new file mode 100644 index 0000000..0a042e1 --- /dev/null +++ b/DEV3.2/TP03/02_Chaine/Iterateur.java @@ -0,0 +1,32 @@ +import java.awt.*; +import javax.swing.*; +import java.util.List; +import java.util.Iterator; +import java.util.NoSuchElementException; + +public class Iterateur implements Iterator { + + private CouleurList actuel; + + public Iterateur(CouleurList debut) { + this.actuel = debut; + } + + @Override + public boolean hasNext() { + return (this.actuel != null && this.actuel.valeur != null); + } + + @Override + public T next() { + if (!hasNext()) { + throw new java.util.NoSuchElementException(); + } + T valeur = this.actuel.valeur; + this.actuel = this.actuel.suivant; + return valeur; + } + +} + + diff --git a/DEV3.2/TP03/02_Chaine/JParallelogramme.class b/DEV3.2/TP03/02_Chaine/JParallelogramme.class new file mode 100644 index 0000000000000000000000000000000000000000..3fe4a049791f04e582494b236d2c3218b5aad741 GIT binary patch literal 1539 zcmX^0Z`VEs1_pD6crFG}1}%05Z7v2T1|2R25e8jO1`!55E(RqAeGu0GL>Pj&Mj)0k zh%fuuxDi8&B-h-Np;RI%}FgS zDrRKh^?|Z|GK)*B85uZ(Gt=`DOG=AU85!h}&Re85!7Y zGV?M^>=+pYG?3L=Ylbm0usG+Zq%tz_`();&`jzG;r51%GCgr3uGAN;_#bPcg;9>A&@Zw?cX7J%* z@MZAhVen@N;9&>^5kU;W>FMg}pEmJ0pi^31$+eJ`Yt6a-0t9SI9ZMh2#6PnhdVOEPoxJxfxH5=-)n z7#Wx~K+(af;pqvY1&UKk0*X@8Qj3aGQ-U+AQW+V;?;g?d3>MEeX#|DaimE>&eK#nVwqWk(!yFQNqZ;k(Qa06O@`;P(sC;k%2uUvDh!QqJ)uwB@axAz*OcW=B4ZVCuOB3gYpwM$hv_1oXYh4 zJVpi%jcCtkh?Sf!jzQk>?m>=`j0^&Z(1G}Zk%2pk3o?^gh7;nfq{{M36zEy z7#SoO7#NrsBpH|)7#XA(q#2kPWEdD2>=;-Xm>3usq_nm(Fly~)V2TuEln}7l&cM8l zfkjJuD+B9Buqm<(3=BdHEDQ_`+zc!XJPaZXd<>Ed{7_Tn7#JDk859^8L1r?lGq5sn zFfcHz(cZ?u=Bu@hfqf=}q>k1$299kEoI1?RTH6@7w6-yDZ)4zL-@_HjEFk9}$s%Cn zAIT~p;vdPz?C%E_X7-O{VfK$?1u6B9WCK%HELvL_Shq3oTCqy9?quL&WSGg|4r1{$ zG8|wKuwv7ZWCK~EE6KvXjX_Xn6N3wGCk6oq1_ogURt8Z9Q2rBP5NA+gkYcc8kY)&BkYgxjkY}i5P+(|eP-N&} zP-2+Cpu#YdL6u<Cs8B`h6pb;U listeCouleurs; + + public JParallelogramme(CouleurList listeCouleurs) { + this.setPreferredSize(new Dimension(280, 60)); + + this.listeCouleurs = listeCouleurs; + } + + @Override + public void paintComponent(Graphics pinceau) { + Graphics secondPinceau = pinceau.create(); + + if (this.isOpaque()) { + secondPinceau.setColor(this.getBackground()); + secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight()); + } + + int[] x = {30, 50, 20, 0}; + int[] y = {0, 0, this.getHeight(), this.getHeight()}; + + + for (Color couleur : this.listeCouleurs) { + secondPinceau.setColor(couleur); + secondPinceau.fillPolygon(x, y, 4); + secondPinceau.setColor(Color.DARK_GRAY); + secondPinceau.drawPolygon(x, y, 4); + + for (int j = 0; j != 4; j++) { + x[j] += 25; + } + } + + } + + public CouleurList getListeCouleurs() { + return this.listeCouleurs; + } +} \ No newline at end of file diff --git a/DEV3.2/TP03/02_Chaine/Main.class b/DEV3.2/TP03/02_Chaine/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..04767172ca9acd6808f50405523f567f17342f41 GIT binary patch literal 322 zcmX^0Z`VEs1_pBmF)ju+27Y!10WJn627VAB$j%_d&LGUlz-E(~msw)R$iS?j8OF%K z;+&t7%E-X)lbM(5SDKrYS`?C)l#|NHz>=Gona9W=rV;Ivl~|UjpOcuEt{+@dl$n=q z4bsRJoL^d$oa&YdQq1X_n3<;sQpdx<&cMOQ!0wisms(Pk%EKVSAj-(V0+MHB5CExw znB3vA#xXE5a56A3$TBc8FfuSO zuxf2*VBE;Sz`)4B#lXP81{MS<;b!20D%E3PVqjumVBp)$z!bTif!Rl!Wg7zvLJuDU bGXnzyGXn<$3j;3$D+40~F9QPu69XRrAlEgc literal 0 HcmV?d00001 diff --git a/DEV3.2/TP03/02_Chaine/Main.java b/DEV3.2/TP03/02_Chaine/Main.java new file mode 100644 index 0000000..2768c3d --- /dev/null +++ b/DEV3.2/TP03/02_Chaine/Main.java @@ -0,0 +1,6 @@ +public class Main { + public static void main(String[] args) { + Fenetre fenetre = new Fenetre(); + fenetre.setVisible(true); + } +} \ No newline at end of file diff --git a/DEV3.2/TP03/03_Tableau/ControleurParallelogramme.class b/DEV3.2/TP03/03_Tableau/ControleurParallelogramme.class new file mode 100644 index 0000000000000000000000000000000000000000..b18344d48a8386b790e5d2e58235da0c71bcb9dc GIT binary patch literal 2274 zcmX^0Z`VEs1_pD6RxSo<24hYJDFzb|Vam>6#>K$GV9dp!&0r29EI?dKE(R+GYi;KSg{#o))_&(074 zQXj~{5X8<9%+3(P&JfDTz?+jL-?$=sV}<Jh}O$#i`CY znaSCyDU1wq8VF~mmZj#E==*}?T|rE1khQ$QC5g$|zKI23+t?Yx*crkZ86c*(=9Q!t zflT2B8|qq-SpwogBm;_4i;F>AUa(|PYEEh*n9miQUs{x$>Xr#|yqt4>UP)0tC~yN3 zixP8kQgiatixP8lQ}sZ>$HSn^5W&MB%OJKC&TJ5o!w|*D zAmEgrUs7CBlvv=KT9T2UQq0fBkjuf4$HS1%P{7Vm$iq;?P|U+n0y3hMhoOw2oSmV9 zhoO=of{{TK?li~n5Z8+2)Pj=C{5&3pDuzr(1|ip?qSVqNg_Kf-;>zNZ!z*%A85tyT zdY+L%0Bl-LVqUtwe^ORzatR}Y3|I)1ppaq;lnhhzQi~WFB(X_@Ba)Fp2rO4xl9{9L zS&~|mSdw4F$iS=tieR4f)RGAQyx`=b)YLq%peG{(NH7v1$eW&85|CMungb3(Mg|cL zPftxm!U2m~Gcs@^Wer9Kj!d{sVj57@C@uiyhm6ExztoBnu)R@?3@mwIjtERWlK(;Z zB(<STwk@xFj`~k%2kCw1kmC6yn&-eEoo;%)FA|lA_ea zT#$+BsU<<6M9Pt#TH+1~0rvFN5~rNfR4#^Uh8j?YFU`%&OUz47Rj^WEWMmM}P0UVp z&d*CuED6sn$#BlkD=taQD*?L-7AO!GloVy=rCT#H2!maPYBwVTdjZHLIeBQl35Mtb z#SB|fYHog6DkB3sw5VWYU;#x0DEu{jywLKCH6w!nx)>t^dr@jZVrCvFfK!W#*coa; zDY=o6K?Uq4usbvJ%JQ>Q^&u8RJm!{|T#{c@$ECK;;kvBZE8x z0|OI-0s|AMNMc}MU}IopP-akJU}8{ZU|=w2U}9iqU|`_a+RnhJrM;DbNlRxd1M@}( z1_nk3H3kL-AqEx(1_oXR76v{BP6mDkJ_bRkk?IVL3>plY42&Ry7$q547}yyY7$)sz zV2Rw$!0M}`y^VoQdm97$HUWN-noxEUD^Fz{Hh zNwVo~W8j_1pd-m<#j=TkPm*mL1HXW128b3A@W@C2F$4wJGZJ<&2r)2hV-Q~ce}^Q? zF$Qsv!ICW77(~LgwlFYnV-VfOAhw)=$9EHhgplMm2H}kij0_A6tqdIu;tWh+KiM(x zGcYiSGH@`6F^DpVGe|H`_G`rz{buX#m=D3&cMRXzyn4)3=F>++g#{CXBsex07#I;D42lqtd5jEtgq3MAFf!;9R;JCs$Y4NNnGORpgCW>OMhp!M e3=CWhj0|-QO$_x6k_@g43=AN*yD=~_xB~z@;VVD@ literal 0 HcmV?d00001 diff --git a/DEV3.2/TP03/03_Tableau/ControleurParallelogramme.java b/DEV3.2/TP03/03_Tableau/ControleurParallelogramme.java new file mode 100644 index 0000000..30af283 --- /dev/null +++ b/DEV3.2/TP03/03_Tableau/ControleurParallelogramme.java @@ -0,0 +1,45 @@ +import java.awt.*; +import javax.swing.*; +import java.awt.event.MouseListener; +import java.awt.event.MouseEvent; +import java.util.List; +import java.util.ArrayList; + +public class ControleurParallelogramme implements MouseListener { + + private CouleurList listeCouleurs; + private Fenetre fenetre; + + public ControleurParallelogramme(CouleurList listeCouleurs, Fenetre fenetre) { + this.listeCouleurs = listeCouleurs; + this.fenetre = fenetre; + + } + + public void mouseClicked(MouseEvent e) { + try { + Robot robot = new Robot(); + Color couleurPixel = robot.getPixelColor(e.getXOnScreen(), e.getYOnScreen()); + Color aSupprimer = null; + for (Color couleur : this.listeCouleurs) { + if (couleur.equals(couleurPixel)) { + aSupprimer = couleur; + System.out.println("Luminance : " + (couleur.getRed()*21 + couleur.getGreen()*72 + couleur.getBlue()*7)); + } + } + if (aSupprimer != null) { + this.listeCouleurs.remove(aSupprimer); + this.fenetre.getP().repaint(); + } + } catch (AWTException exception) { + System.err.println("Erreur du système"); + } + + } + + + public void mouseEntered(MouseEvent e) {} + public void mouseExited(MouseEvent e) {} + public void mousePressed(MouseEvent e) {} + public void mouseReleased(MouseEvent e) {} +} \ No newline at end of file diff --git a/DEV3.2/TP03/03_Tableau/CouleurList.class b/DEV3.2/TP03/03_Tableau/CouleurList.class new file mode 100644 index 0000000000000000000000000000000000000000..72c723d9c3bf384ab8933d3508c4cc22e5d70b37 GIT binary patch literal 1061 zcmX^0Z`VEs1_pBm4K4;I203;Hc}@m)1_cmDk)1(_i-DCvnVms}ok5k6fxRp-C$+Sw zn2|v^+9xZqEKxrvF)v-;KPf9Uxx|{0fipNWJuk7Ov?!I4fh9V`)tZrk%_cK1v&4>( zfmuT{jFExGIX@+pk%8YQGcVPzG&d==C?qi{CzX*wR0GpMkOnr55LasugE=uJg^__b zxFj(-+c&WQs*SBEH8;Num;NY528jMBMh1?|lGLKalKdh@1~Cmyh-IZEnK}BNP;qNU z25GDkHX*LocGipxjyA4V5PitLw!;)c5&;{Yl#>cGgDW_{v?w{%EfeHt0q6WuP)-?4q6@tP6jR>1~mpTMg~r>ktM06MIhDcj11gJrZ6%HA@qV3 zf&-T=wXifXrDzmK&$dG;W8NjrR(QyV|kbsPK@Nx#u7AD5!{~v;kX9BxWih&K}1_o{h zF$NI^aRzAy2?jX^Q3e$TX$BDn1_mw$=06NfjMBdtSdpw1We|hJFqW~C1@ZT>q|9d!2eH6hS(XH&;1*`a<^P|6#6Wl-OA2E!%Nnpt z*D2>%|!u86+4ap{`eCU}j)sU|`_f&A=L|wVi=&13c>3z!Ex8PfIZ{ NL0QraGGG_U0swAB%b)-N literal 0 HcmV?d00001 diff --git a/DEV3.2/TP03/03_Tableau/CouleurList.java b/DEV3.2/TP03/03_Tableau/CouleurList.java new file mode 100644 index 0000000..6fc595a --- /dev/null +++ b/DEV3.2/TP03/03_Tableau/CouleurList.java @@ -0,0 +1,49 @@ +import java.awt.*; +import javax.swing.*; +import java.util.List; +import java.util.Iterator; +import java.util.Arrays; + +public class CouleurList implements Iterable { + + protected E[] valeurs; + + public CouleurList() { + this.valeurs = (E[]) new Object[10]; + } + + public CouleurList(E element) { + this.valeurs = (E[]) new Object[10]; + this.valeurs[0] = element; + } + + public void add(E element) { + for (int i = 0; i != this.valeurs.length; i++) { + if (this.valeurs[i] == null) { + this.valeurs[i] = element; + break; + } + } + } + + public boolean remove(E element) { + for (int i = 0; i != this.valeurs.length; i++) { + if (this.valeurs[i] != null && this.valeurs[i].equals(element)) { + for (int j = i; j != this.valeurs.length-1; j++) { + this.valeurs[j] = this.valeurs[j+1]; + } + this.valeurs[this.valeurs.length - 1] = null; + return true; + } + } + return false; + } + + @Override + public Iterator iterator() { + return new Iterateur(this); + } + +} + + diff --git a/DEV3.2/TP03/03_Tableau/Fenetre.class b/DEV3.2/TP03/03_Tableau/Fenetre.class new file mode 100644 index 0000000000000000000000000000000000000000..1f0fad91c439ac1334e8df05d0dd2b891347e11e GIT binary patch literal 1196 zcmX^0Z`VEs1_pD6KrRLr230NwNd`3#q0Y{r0ire88ML?<*ch}y936HBT`mSr232+j zJuU`rkaBJYeJ%zA219lRBQ6Gh24j%42|I%+7lROk87G4zgE>2c1s8)TgC$7B3S^2k zJA(})17iUrgOHC`Kw?p1PEKl0etJ=2Zf>eIBLkaFW?p8A9U}v?hGrNe1B-KhN-84* zzfWdfs$XetQfg61Vp2{jBLi=6Nn&!gZ(;$I&yt>662QnHqM?b+RIcFs(xT*4w@i>$ z9=FuI)RLl9y{yEtL>>ki23Z~kTLwEG273lOMg}2}XoY@pd1hX^zL#53Vs0uAg9C#j zBZDwVMnAEpam6}`vHdH{v2Pt&HLXxOLK2XnsV9p@M;K(4( z;Kv}r5X~UTkjWs$P{AO^P{$z4(8VCnFpEKvVKIXeg8~BsgCqmfe+DZCc6J6yb_Pxc z1_pKpZbk-%UkuI+j0}nlN|1nJkY!+GU}RumU listeCouleurs = new CouleurList<>(); + + int r, g, b; + Random aleatoire = new Random(); + + for (int i = 0; i != 10; i++) { + r = Math.abs(aleatoire.nextInt()) % 255; + g = Math.abs(aleatoire.nextInt()) % 255; + b = Math.abs(aleatoire.nextInt()) % 255; + listeCouleurs.add(new Color(r, g, b)); + } + + this.p = new JParallelogramme(listeCouleurs); + + p.addMouseListener(new ControleurParallelogramme(listeCouleurs, this)); + + this.add(p); + } + + public JParallelogramme getP() { + return this.p; + } +} \ No newline at end of file diff --git a/DEV3.2/TP03/03_Tableau/Iterateur.class b/DEV3.2/TP03/03_Tableau/Iterateur.class new file mode 100644 index 0000000000000000000000000000000000000000..11d2838ec73dc93c1e8a4f2ffce0e946af53c53c GIT binary patch literal 808 zcmX^0Z`VEs1_pBm9WDk=202a!4hDG;p}@(Y$e_fx*&Y;4@z{ViQ&Y;T9pvKOi z&d9);lUZDn%E-X$#0pd14pRssQd*LkqwiUgT9jClUj*|DS8#r5QF5wVCdgTQ5ZTny zB0Z3`JPd*i8axc#3_Lsx{0su@44OO)S`6Ae45AETj0_4OCHi1P{qloLlQUd%Qgc)D zN?a?FQwvHm^Ya)PIN|0oG6;Z`BYA|8K?p1aHUXkAzX%*4VT=siNKwMbz+RRJil1Ue z2H|LkUy#hPW>93{VBln6WZ+_8VqgL}mw}Oimw|zSiGh!S3FLAH1_ovZMg~C!AqGYU zVFm^UW3WmF27ayW42)XZTN#+Nn71-8Z)9L#U}O+sU|hR#~9dImNT$0uK_y(WF8w> zwJ?J?0|Nsq1CxvcBLgFY1cM|46WBdI46I-U%39kPSZ6VC?`B|&+|IzhA7*Ie76#@h wmV~Vg%tjmFX7VvGGcYhnFt9U7GVn7 implements Iterator { + + private CouleurList liste; + private int indice; + + public Iterateur(CouleurList liste) { + this.liste = liste; + this.indice = 0; + } + + @Override + public boolean hasNext() { + return this.indice < 10 && this.liste.valeurs[indice] != null; + } + + @Override + public T next() { + if (!hasNext()) { + throw new java.util.NoSuchElementException(); + } + return this.liste.valeurs[this.indice++]; + } + +} + + diff --git a/DEV3.2/TP03/03_Tableau/JParallelogramme.class b/DEV3.2/TP03/03_Tableau/JParallelogramme.class new file mode 100644 index 0000000000000000000000000000000000000000..3fe4a049791f04e582494b236d2c3218b5aad741 GIT binary patch literal 1539 zcmX^0Z`VEs1_pD6crFG}1}%05Z7v2T1|2R25e8jO1`!55E(RqAeGu0GL>Pj&Mj)0k zh%fuuxDi8&B-h-Np;RI%}FgS zDrRKh^?|Z|GK)*B85uZ(Gt=`DOG=AU85!h}&Re85!7Y zGV?M^>=+pYG?3L=Ylbm0usG+Zq%tz_`();&`jzG;r51%GCgr3uGAN;_#bPcg;9>A&@Zw?cX7J%* z@MZAhVen@N;9&>^5kU;W>FMg}pEmJ0pi^31$+eJ`Yt6a-0t9SI9ZMh2#6PnhdVOEPoxJxfxH5=-)n z7#Wx~K+(af;pqvY1&UKk0*X@8Qj3aGQ-U+AQW+V;?;g?d3>MEeX#|DaimE>&eK#nVwqWk(!yFQNqZ;k(Qa06O@`;P(sC;k%2uUvDh!QqJ)uwB@axAz*OcW=B4ZVCuOB3gYpwM$hv_1oXYh4 zJVpi%jcCtkh?Sf!jzQk>?m>=`j0^&Z(1G}Zk%2pk3o?^gh7;nfq{{M36zEy z7#SoO7#NrsBpH|)7#XA(q#2kPWEdD2>=;-Xm>3usq_nm(Fly~)V2TuEln}7l&cM8l zfkjJuD+B9Buqm<(3=BdHEDQ_`+zc!XJPaZXd<>Ed{7_Tn7#JDk859^8L1r?lGq5sn zFfcHz(cZ?u=Bu@hfqf=}q>k1$299kEoI1?RTH6@7w6-yDZ)4zL-@_HjEFk9}$s%Cn zAIT~p;vdPz?C%E_X7-O{VfK$?1u6B9WCK%HELvL_Shq3oTCqy9?quL&WSGg|4r1{$ zG8|wKuwv7ZWCK~EE6KvXjX_Xn6N3wGCk6oq1_ogURt8Z9Q2rBP5NA+gkYcc8kY)&BkYgxjkY}i5P+(|eP-N&} zP-2+Cpu#YdL6u<Cs8B`h6pb;U listeCouleurs; + + public JParallelogramme(CouleurList listeCouleurs) { + this.setPreferredSize(new Dimension(280, 60)); + + this.listeCouleurs = listeCouleurs; + } + + @Override + public void paintComponent(Graphics pinceau) { + Graphics secondPinceau = pinceau.create(); + + if (this.isOpaque()) { + secondPinceau.setColor(this.getBackground()); + secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight()); + } + + int[] x = {30, 50, 20, 0}; + int[] y = {0, 0, this.getHeight(), this.getHeight()}; + + + for (Color couleur : this.listeCouleurs) { + secondPinceau.setColor(couleur); + secondPinceau.fillPolygon(x, y, 4); + secondPinceau.setColor(Color.DARK_GRAY); + secondPinceau.drawPolygon(x, y, 4); + + for (int j = 0; j != 4; j++) { + x[j] += 25; + } + } + + } + + public CouleurList getListeCouleurs() { + return this.listeCouleurs; + } +} \ No newline at end of file diff --git a/DEV3.2/TP03/03_Tableau/Main.class b/DEV3.2/TP03/03_Tableau/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..04767172ca9acd6808f50405523f567f17342f41 GIT binary patch literal 322 zcmX^0Z`VEs1_pBmF)ju+27Y!10WJn627VAB$j%_d&LGUlz-E(~msw)R$iS?j8OF%K z;+&t7%E-X)lbM(5SDKrYS`?C)l#|NHz>=Gona9W=rV;Ivl~|UjpOcuEt{+@dl$n=q z4bsRJoL^d$oa&YdQq1X_n3<;sQpdx<&cMOQ!0wisms(Pk%EKVSAj-(V0+MHB5CExw znB3vA#xXE5a56A3$TBc8FfuSO zuxf2*VBE;Sz`)4B#lXP81{MS<;b!20D%E3PVqjumVBp)$z!bTif!Rl!Wg7zvLJuDU bGXnzyGXn<$3j;3$D+40~F9QPu69XRrAlEgc literal 0 HcmV?d00001 diff --git a/DEV3.2/TP03/03_Tableau/Main.java b/DEV3.2/TP03/03_Tableau/Main.java new file mode 100644 index 0000000..2768c3d --- /dev/null +++ b/DEV3.2/TP03/03_Tableau/Main.java @@ -0,0 +1,6 @@ +public class Main { + public static void main(String[] args) { + Fenetre fenetre = new Fenetre(); + fenetre.setVisible(true); + } +} \ No newline at end of file