From a470a08504575435cf9e7dce3d1c62fb9013b10c Mon Sep 17 00:00:00 2001 From: matthew-java Date: Tue, 3 Feb 2026 15:45:52 +0100 Subject: [PATCH] game over ok --- gitignore.txt | 52 +++++++----------- out/production/Projet_DEV/linea/Jeu.class | Bin 2694 -> 3055 bytes out/production/Projet_DEV/linea/Ligne.class | Bin 2236 -> 2528 bytes .../Projet_DEV/linea/ZoneDessin.class | Bin 2266 -> 3035 bytes src/linea/Cercle.java | 4 -- src/linea/Jeu.java | 14 ++++- src/linea/Ligne.java | 13 ++++- src/linea/ZoneDessin.java | 26 ++++++--- 8 files changed, 63 insertions(+), 46 deletions(-) diff --git a/gitignore.txt b/gitignore.txt index dc3d74d..a3833f9 100644 --- a/gitignore.txt +++ b/gitignore.txt @@ -1,42 +1,30 @@ -### --- Java / Compilation Générique --- ### -*.class -*.log -*.ctxt -*.mtj.tmp/ -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar -*.idea -*.out - -### --- Dossiers de Build --- ### -target/ +### --- Java / JVM (Fichiers de compilation) --- bin/ build/ out/ -dist/ +target/ +*.class +*.jar +*.war +*.ear -### --- IntelliJ IDEA --- ### +### --- IntelliJ IDEA --- .idea/ -*.iws +.out/ *.iml +*.iws *.ipr -out/ -# Si vous utilisez le plugin Task d'IntelliJ -.idea/tasks.xml -# Si vous utilisez des dictionnaires personnels -.idea/dictionaries -# On ignore les fichiers de cache et les logs d'indexation -.idea/libraries/ -.idea/shelf/ -.idea/workspace.xml -.idea/modules.xml +# On garde parfois .idea/runConfigurations si on veut partager les configs de lancement, +# mais dans le doute, mieux vaut tout ignorer. -### --- Logs et Temp --- ### +### --- Antigravity / Environnements locaux --- +# Dossiers de build spécifiques et logs +.antigravity/ +logs/ *.log +temp/ tmp/ -temp/ \ No newline at end of file + +### --- Système / OS --- +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/out/production/Projet_DEV/linea/Jeu.class b/out/production/Projet_DEV/linea/Jeu.class index 7df82837f02cbfc1fdcfa3c0a0c29cd439264bbd..9d4b2711d63592f204387dabf8beb11eb44fff09 100644 GIT binary patch delta 803 zcmbV~OHUJF6o#L#ozAqwh!u+p#V95w1qBww1tBq@P0&Q++QiLhCW8h+X(3@%0nwaPL^DBnidzQL z7BfM1^*MXkZtJuA-L~U)zE?E%>73qm@Nb=V_dc)BxC?ItRHeOVREUh_tD zF=}~BkqGZ(UHpGirzE~yaoOozidT!%csyPBAE%X)leiy{7Llfk;bckrU_;;%7;h^r zRuEMgQSrXCalEEPugZ9ni4NiUmgot2N@^b&oa}(gO=<3MN2d)5_vvl%0nUxjw2~dd7pa$tmgCJ e-*Hukw|GZ5X4%YKLs+}?0Fvd}iZ5ajVf_zA0GgWs delta 436 zcmbV{yGjE=6o&t^%Q&;6Wn$1RVq>GFSV$TR!CHvV5U~>(M%%|D-&X4$^{JUs(gLa%R2D%5DXH&vDP{g-NpTi4Za z2fMDVYoj9&DEOSXcfBpCTQzg>9*@U312(Xa16Dx?E>rc)ELE>2u6flILgvXr<-0>1 zQKwMGF-{QRlzZ~OF(I6v6_n}7Q&ysQ>pzt9oI>(EBVb5BYf@(a8K40V9?zEpds5gF zT;!jI`-s-0-ci-nZ&-fy`T3Us2C;C({^RZ(g>=c-$l#pH6*5}nXeN6$Qz+XJK$`*y?F@3)AYH-Z zc5KGoGVW2Z1)X{ui|^dV;5wt7(<0jWa^yg9s#p^Dj(q=v9TDu{;GGQCu6R7ou>tfd z*o8iQk*U_0g5B7of5Y1Sdl@#YaU3jZ)04UM%=SSU_b&*WeEV>K6AdzmT?S1*;tCET zq3;q@>#%~u7|~A&osLmFAmc#=58+|`s-U)v;+TR*a9sadXm1H%TtO0#>c0p*l@kgc zhns=TaZ#FrC(uds*-UwyCr&BI;4~#>D8ZMd&TW*RRFLB^X>O!g$nwg(f~h7n$x8|f ziblyiFR_00t7)$t0($w7=L6F|&Re=!8?BenX3Lq`(nu~_$PAcEQKM2xE9Z*(RdKju z7UzgUgcm+AoTpg89BmgB!Aj%&f)uVe6CU`7)uev)> zT6$e~x)2kyeX7@%P6WM< z^e}O?`kXaH$1W)@wzT@eN2JYyC-s^%mcBsoW3XWeC-4*$xaj$PJdI~)?!fchebT-K z6}sJo>Y}P=DUuMzJT6isV=Hz397Q(tV1_VmIIy2~>JsIhxU5fGTT=lBtYCt;XluC} z#Q!0=CDGg$zKQ-L_by{!(mhbe{u+k3<{A!-c7KK=42!snf};#K5r~OCF7~_MO?iv5DX*RE3z5Z5d9j8( z5xsboOk;*9g^Oyn7?L(q?lrvLub@{0F-HH~N3U K1bfR^Y}j6o#KW_IP6Z+A1N0aVTz5XvZH-LMVjTe57epH>5NKN|Tr-gw_}n+6HI> zlurXKP$U+h>82YNs8!e@M6rPY>Y5#Y09C5QUqGq^;oPyq0))i1H21ydp7Wmfoa1}# z<{xf~{ru^tI~hoH0DBsqvf`R>WY^21Qwn z#IQJ_Il1XwHipXA7ef8YzaBo&x6BLDsW2`n6fX+4c!`K$JNTaV58C;9&qNnnC%uB5 zEjY$p)j-lVsf2n{E1N#?HLe9qjr+|fn$L>Ku=AsQU|WRsWubwLgT;{S%AC_}8seJ64Da-6rM zB?;aZrWDqOq=-6ngo5ReR&awO3&Jj=k?(2o`$8IM%RZ97%IKk8>x`8<_ca-BaKKd2 z;NVpMcRZ@N$gKj7D6Wz&hEw5ugYw$OZ=03va<&DP<%DlQ+HaJE4R5 zS8GsR+ql-2CnP;W3o|0BEJ^3dvB0p5pui$#B)!t=oQz{rc(E-!EMDiN!77lejoj`~ zAa?tfG4qaO`iW!z<=@BEglJ$7lj)ASM;g>5iO}c2y%S*7YSFo9RL6T diff --git a/out/production/Projet_DEV/linea/ZoneDessin.class b/out/production/Projet_DEV/linea/ZoneDessin.class index 039fc64c3b65d53c96855da7e82022cbe23e9ebc..0d751f770ee9dec47b05b527235635747875d868 100644 GIT binary patch literal 3035 zcmZuzX;&P_6}?Rl^w6{jlOO&HMI(E-cAE(^P{M?4ZkT|^%fg=b5?S9Xi6Llbngp0KJ8pRq8C`&ckhq*rh3

s4F<%JN z153*9ehUxaK@CYel)eZ(UqfI2KvPY!u|3^^hw+Gkw1pG+Y>k&l05um4#;OSN@=6#9 zWl630oP|e`(U5Q>b59MsIT8co8hWZiiDWV5i;Y$Lxw14dhDi&jlrY;eE(<_@IxuY^ zt4xM3H-zo7!Yw#sA%_{#8Ck}?^$kkSWh8w~3{`;(LB#!RO~tCXwVBb0c07i22Iefx z<2-9uFV8vYQd2w@)7+BE?L0HNcrlZo&t`Jj%v?4c?=w!sA#Z zeG8e~`N_uei?ewetIM0YF_Fg;7M{dYRb_31)iBzW+_tG8+VPWkN*!akXyF+}Rx-1) zVi#5wt4Fb{R97IYN_CO!@{kr*lKxt(tz0PE9wVLCfM$?O{3RfTNe67^oE|CHy3NnGKA zjBg9aL>bSkh(F&rUlDP0p{h~3mcbV-dR?I*_kmV-Ml!anQ;;W2#Dl;>Acy?j( zoQnCXg|Fiq)DtsNUNe%o1(yA`nuL{Xnr6}_Ucie6zGdOt_znfVE%N&Ejv$IJ=55=- zj3XZ)lX-m4!ZnqfS@gx_>P(~nmHUG9RUbN^onS{iO_IhvHwc9rE(oVATiMsupT?Bt z?2;?Ovd<DZ-Drg>t=y&{+G$+3aw%j?V1pBKvxE!{bA(W3RCZ&pzMY-uBBHy1jVf7`>uR8SR_F`W z!N$CD!I7#{h>#3XnBFqwxN9zC&zun(akTn+P}+XnV(uBNBm9yq`}6EqOjgVCN8h~- zb=F!1Gt*0>EJ1vQZEqu-?V#jp_Y?W-Us4&ivQP@xob$?lL7uV|rF$BD-K%87FtV;I z{c%SGfeZ}%i8obUPoF&KjD!sacku+au<{Aqj_>0K(C|Z!TJRDryp1`2IU4_nV_vP1 zCofX|H#o=ZpU+n~x)!|w(}P>k20wtYxP|sxFbDNp=v0p$8u!t-zk=KOdT6mrKit*w z_!bUVa1RYf7rXHHF1)R8VW5KH_o7{Y%;()m@_8rsw;0b}^q?2}8TS#++>d)O#kcG9 zuowyV$E)}W|7-Xueip|z#(Y$c=HUA-c-s-7_l*Wl;)1#vX| zvYzX4`l!9y1`|x~<5>5RmE%njwbdhfZ3hHJ&&LrSB*H^GBD`KlxW*WC#&C=|btYaz z;ysmI1;=wkf5t-^_w3;dKfgZ2*vxPR6E{Bk=U@d>YA+p%*F&rzFiv(SnEh$8cn1Bv z5Qi{}6wcP!I6~&%AP0)4V{tCO;=9EUxBtK}@bJG_4^3UAd{PVAIFVIHxjs0wh0{YH zB0n>H6K8K?p@OA2%=}0k=03hu!+a#MKf&reedD8l(5dHDEDbAJ=(^s8SGFK3C=Tm7 zlPK}`Yy~bspHs#UP+si5oah|g!e#|u=>AHc34d**f^R;M7#>jzdK1M~N3CjgD)?@L zgOgMgc)PaZ30C?^YU?TH_%y$7F7iX<89WNX3wW8MA}=+GOMGskgsWI3hief>Cs~tY z{3(tSoIQkJ<2U5^D$#z68?=#$x}L7%O}s^(OrDsx@eWy4Ty{bKFAf^WM{FMaH^b2I zE`C=flpixS0UuBYDK2A6RL0$r4Az-~%QAZPvMK3SkAiypJr9mXls|B@7W@&40+W`T KOz-_f`~Lxlguy8Q delta 1142 zcmZvbT~iZh6vuzhZjw!wXRr|z5fn-z;3g2H8a3KdUKDw++A643QwSw02?l)Yiy1Gx z=}m{(t9}A!ys(w(W^89VUiS-hrtP&e{R&R2JsX(VVZ3>sbIzXgKmYST`~2DPN7Vl9 z)z7~ILwvJp|KM0`Q*67ExtU33ZmlE-3dOl>aXfRUaAU=$9@D0V9hydVuD(q4HY>JP zbBA(^+5B>@khf`Kw2Y7EwotF;efGPxMte<)gBFK0he^AAMn^csQOyT@=;n=9^^yCX z(U|OGKr={4fcx`8QF_&IOmo~1S;g#9CYP7l3{Gf9707aQ)%CL{22!n-%~Hf5yf-*CK4X~4_^Q6cntZlCU5jRPMBetbVAgd zq?0N6iBHMgr>m34MB(c)uCGbY2JNEQ8Z+__mPP8NJTc|}kEl{b+(*(PC@EG{ zoUw_-8WU@r_BiVc?y+yOYlCNl80$RKfyRKW;{1cxFE-OWFL)P4_e-+o%R(bViqGXG z%~fbRLa|3gxX#p~n9{hqsx-^22s>L6Zg5kk@VVDw{7bXNScQGFL~lvd;5K*Uwk7{d JQRC}C 30) { + gameOver(); + } + } + + public void gameOver() { + horloge.stop(); // On arrête le Timer + ecran.setGameOver(true); // On prévient la zone de dessin } } diff --git a/src/linea/Ligne.java b/src/linea/Ligne.java index 5a4fba9..29f34db 100644 --- a/src/linea/Ligne.java +++ b/src/linea/Ligne.java @@ -34,7 +34,7 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique //------------------------------------------------------------------------- public Ligne(){ // Valeurs initiales pour la position de la Ligne - double x = 800; + double x = 400; double y = 200; double xCourant = x; @@ -93,4 +93,15 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique s.setX(s.getX() - vitesseDefilement); } } + public double getHauteurLigneA(double xCercle) { + for (Segment s : listSegments) { + // Si le segment couvre la position X du cercle + if (xCercle >= s.getX() && xCercle <= (s.getX() + s.xLong)) { + // Calcul de l'interpolation linéaire pour trouver le Y exact sur le segment + double ratio = (xCercle - s.getX()) / s.xLong; + return s.getY() + (ratio * s.yLong); + } + } + return -1; // Hors de la ligne + } } diff --git a/src/linea/ZoneDessin.java b/src/linea/ZoneDessin.java index 03d04e3..0b95dee 100644 --- a/src/linea/ZoneDessin.java +++ b/src/linea/ZoneDessin.java @@ -1,11 +1,6 @@ package linea; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; +import java.awt.*; import java.util.ArrayList; import javax.swing.JPanel; @@ -22,6 +17,8 @@ public class ZoneDessin extends JPanel { // hérite d'une classe du frameWork st // un booleen qui permet d'arreter l'animation (suspendre) protected boolean estArrete = false; + + protected boolean isGameOver = false; //------------------------------------------------------------------------- @@ -96,9 +93,22 @@ public class ZoneDessin extends JPanel { // hérite d'une classe du frameWork st for (ObjetGraphique obj : listeObjets){ obj.Afficher(g); } - // à compléter + if (isGameOver) { + g2D.setColor(new Color(0, 0, 0, 150)); // Fond noir transparent + g2D.fillRect(0, 0, getWidth(), getHeight()); + + g2D.setColor(Color.WHITE); + g2D.setFont(new Font("Arial", Font.BOLD, 50)); + String msg = "GAME OVER"; + int largeurTexte = g2D.getFontMetrics().stringWidth(msg); + g2D.drawString(msg, (getWidth() - largeurTexte) / 2, getHeight() / 2); + } + } + + public void setGameOver(boolean state) { + this.isGameOver = state; + repaint(); } - }