From 05540c73a63718cc98df16425ab5a3254daa0a51 Mon Sep 17 00:00:00 2001 From: matthew-java Date: Tue, 3 Feb 2026 13:50:27 +0100 Subject: [PATCH] first commit --- .idea/.gitignore | 10 ++ .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/vcs.xml | 7 + jeu.iml | 11 ++ linea/Cercle.java | 130 ++++++++++++++++ linea/Jeu.java | 146 ++++++++++++++++++ linea/Ligne.java | 84 ++++++++++ linea/LineaAppli.java | 14 ++ linea/ObjetGraphique.java | 56 +++++++ linea/Segment.java | 59 +++++++ linea/ZoneDessin.java | 104 +++++++++++++ out/production/jeu/.idea/.gitignore | 10 ++ out/production/jeu/.idea/misc.xml | 6 + out/production/jeu/.idea/modules.xml | 8 + out/production/jeu/.idea/vcs.xml | 7 + out/production/jeu/jeu.iml | 11 ++ out/production/jeu/linea/Cercle.class | Bin 0 -> 2336 bytes out/production/jeu/linea/Jeu.class | Bin 0 -> 2358 bytes out/production/jeu/linea/Ligne.class | Bin 0 -> 1910 bytes out/production/jeu/linea/LineaAppli.class | Bin 0 -> 475 bytes out/production/jeu/linea/ObjetGraphique.class | Bin 0 -> 760 bytes out/production/jeu/linea/Segment.class | Bin 0 -> 1295 bytes out/production/jeu/linea/ZoneDessin.class | Bin 0 -> 2266 bytes 24 files changed, 677 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 jeu.iml create mode 100644 linea/Cercle.java create mode 100644 linea/Jeu.java create mode 100644 linea/Ligne.java create mode 100644 linea/LineaAppli.java create mode 100644 linea/ObjetGraphique.java create mode 100644 linea/Segment.java create mode 100644 linea/ZoneDessin.java create mode 100644 out/production/jeu/.idea/.gitignore create mode 100644 out/production/jeu/.idea/misc.xml create mode 100644 out/production/jeu/.idea/modules.xml create mode 100644 out/production/jeu/.idea/vcs.xml create mode 100644 out/production/jeu/jeu.iml create mode 100644 out/production/jeu/linea/Cercle.class create mode 100644 out/production/jeu/linea/Jeu.class create mode 100644 out/production/jeu/linea/Ligne.class create mode 100644 out/production/jeu/linea/LineaAppli.class create mode 100644 out/production/jeu/linea/ObjetGraphique.class create mode 100644 out/production/jeu/linea/Segment.class create mode 100644 out/production/jeu/linea/ZoneDessin.class diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..7bc07ec --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Environment-dependent path to Maven home directory +/mavenHomeManager.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..89ee753 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..700f04e --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..8306744 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/jeu.iml b/jeu.iml new file mode 100644 index 0000000..b107a2d --- /dev/null +++ b/jeu.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/linea/Cercle.java b/linea/Cercle.java new file mode 100644 index 0000000..746fda0 --- /dev/null +++ b/linea/Cercle.java @@ -0,0 +1,130 @@ +package linea; + +import java.awt.BasicStroke; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.geom.Arc2D; + +public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercle + // Hérite de la classe ObjetGraphique + // Ne pas oublier qu'il y a des propriétés et méthodes reçues par l'héritage + + + //------------------------------------------------------------------------- + // PROPRIETES + //------------------------------------------------------------------------- + protected double rayon = 30; + protected double depY = 0; // déplacement + + // début et fin de l'arc, en degrés + protected double debut = 0; + protected double fin = 360; + + // Est-ce que le joueur est en train d'appuyer sur "up" + protected boolean montee = false; + + // Vitesse du cercle + protected double vitesse = -1.0; + + // Un pas pour l'application des forces, permet de régler + // un peu la jouabilité + protected double pas = 0.2; + + // Valeur de la force (norme) appliquée lorsque le joueur appuie sur up + protected double impulsion = 25; + + + //------------------------------------------------------------------------- + // METHODES + //------------------------------------------------------------------------- + + //------------------------------------------------------------------------- + // Constructeurs de la classe + //------------------------------------------------------------------------- + public Cercle(){ + x=400; + y=200; + } + + public Cercle(double debutArc, double finArc){ + x=400; + y=200; + debut = debutArc; + fin = finArc; + } + + + //------------------------------------------------------------------------- + // Méthode d'accès en lecture au rayon, peut être utile + // par exemple pour la classe qui vérifiera si la ligne passe dans le + // cercle + //------------------------------------------------------------------------- + public double getRayon(){ + return rayon; + } + + + //------------------------------------------------------------------------- + // Méthode qui note que up a été appuyée + // -> le booléen permet de ne plus être tributaire + // de la vitesse de répétition du clavier + //------------------------------------------------------------------------- + public void Monter(){ + montee = true; + } + + + //------------------------------------------------------------------------- + // Méthode qui note que up a été relâchée + //------------------------------------------------------------------------- + public void ArreterMonter(){ + montee = false; + } + + + + //------------------------------------------------------------------------- + // Redéfinition de la méthode Afficher, spécifiquement pour la classe + //------------------------------------------------------------------------- + @Override + void Afficher(Graphics g) { + // choix de la couleur et de l'épaisseur + Graphics2D g2D = (Graphics2D) g; + g2D.setStroke(new BasicStroke(5.0f)); + g.setColor(this.couleur); + + // dessin de l'arc + g2D.draw(new Arc2D.Double(x-rayon/2, y-rayon, rayon, rayon*2, debut, fin, Arc2D.OPEN)); + } + + + //------------------------------------------------------------------------- + // Redéfinition de la méthode Animer, spécifiquement pour la classe + //------------------------------------------------------------------------- + @Override + void Animer() { + // pas est à prendre comme un "delta t" + + // chute libre + vitesse = vitesse + 9.81 * pas; + + // impulsion + if (montee==true) { + vitesse = vitesse - impulsion *pas; + } + + depY = 1/2 * 9.81 + vitesse * pas; + + if (depY<-10) { + depY=-10; + } + if (depY>10){ + depY =10; + } + y+=depY; + } + + + + +} diff --git a/linea/Jeu.java b/linea/Jeu.java new file mode 100644 index 0000000..d972b46 --- /dev/null +++ b/linea/Jeu.java @@ -0,0 +1,146 @@ +package linea; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.Timer; + +public class Jeu implements KeyListener, ActionListener{ + //------------------------------------------------------------------------- + // PROPRIETES + //------------------------------------------------------------------------- + + // Ecran : instance de ZoneDessin, qui contiendra tous les objets graphiques + // et les animera + protected ZoneDessin ecran = new ZoneDessin(); + + // Le cercle : en fait 2 demis-cercles, un qui passera sous la ligne + // un qui passera dessus + protected Cercle demiCercleAvant = new Cercle(90,-180); // celui qui est sur la ligne + protected Cercle demiCercleArriere = new Cercle(90,180); // celui qui est derrière la ligne + + // A FAIRE : ajouter les objets graphiques manquants, s'il y en a + + // Timer : un objet qui émet des événements à un intervalle choisi, + // il sert à donner le pas de l'animation + protected Timer horloge; + + // Une variable qui contiendra le score + protected double score=0; + + // un label qui servira à afficher le score + protected JLabel labScore; + + + //------------------------------------------------------------------------- + // METHODES + //------------------------------------------------------------------------- + + //------------------------------------------------------------------------- + // Constructeur de la classe + //------------------------------------------------------------------------- + public Jeu(){ + // Gestion du score : a réactiver en fin de TP, inutile au début + /* + labScore = new JLabel(); + labScore.setText("

score : 0

"); + labScore.setBounds(20, 0, 200, 50); + ecran.add(labScore); + */ + } + + + //------------------------------------------------------------------------- + // Méthodes qu'il faut implémenter pour être + // conforme à un KeyListener + //------------------------------------------------------------------------- + + //------------------------------------------------------------------------- + // Appui sur une touche + // -> l'événement est émis lorsqu'on appuie, puis selon le rythme de + // répétition du clavier + //------------------------------------------------------------------------- + @Override + public void keyPressed(KeyEvent e){ + //keyCode 38 : up + // keyCode 40 : down + int keyCode = e.getKeyCode(); + + if (keyCode==38){ // touche "flèche vers le haut" + // On demande aux deux demi-cercle de "monter" + demiCercleAvant.Monter(); + demiCercleArriere.Monter(); + } + } + + //------------------------------------------------------------------------- + // Relâchement de la touche + //------------------------------------------------------------------------- + @Override + public void keyReleased(KeyEvent e){ + // keyCode 38 : up + // keyCode 40 : down + int keyCode = e.getKeyCode(); + + if (keyCode==38){ + // On demande aux deux demi-cercle "d'arrêter de monter" + demiCercleAvant.ArreterMonter(); + demiCercleArriere.ArreterMonter(); + } + } + + //------------------------------------------------------------------------- + // Une méthode que nous n'utilisons pas + //------------------------------------------------------------------------- + @Override + public void keyTyped(KeyEvent e) { + // TODO Auto-generated method stub + + } + + //------------------------------------------------------------------------- + // Démarrage du jeu : + // création de diverses instances et + //------------------------------------------------------------------------- + public void demarrer(){ + // Création d'une fenêtre + JFrame fenetre = new JFrame(); + + Ligne laligne = new Ligne(); + ecran.ajouterObjet(demiCercleArriere); + ecran.ajouterObjet(demiCercleAvant); + ecran.ajouterObjet(laligne); + + + // on indique que c'est le jeu qui traitera les appuis sur une touche + ecran.addKeyListener(this); + ecran.setFocusable(true); + fenetre.setContentPane(ecran); + fenetre.pack(); + fenetre.setLocation(100, 100); + fenetre.setVisible(true); + fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Démarrage du timer, qui rythmera l'animation + horloge = new Timer(40, this); + horloge.start(); + + demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f)); + demiCercleAvant.setCouleur(new Color(1.0f, 0.2f, 0.2f)); + } + + + //------------------------------------------------------------------------- + // Méthode appelée lorsqu'un événement timer se produit + //------------------------------------------------------------------------- + @Override + public void actionPerformed(ActionEvent e) { + + } + +} diff --git a/linea/Ligne.java b/linea/Ligne.java new file mode 100644 index 0000000..da944e1 --- /dev/null +++ b/linea/Ligne.java @@ -0,0 +1,84 @@ +package linea; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.util.ArrayList; + +public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique + // Ne pas oublier qu'il y a des propriétés et méthodes reçues par l'héritage + + //------------------------------------------------------------------------- + // PROPRIETES + //------------------------------------------------------------------------- + + // nb de Segments qui composent la ligne + protected int nbSegments = 400; + + // position du cercle, pour déterminer quel est le segment courant + protected double xCercle = 400; // à modifier + + // segment qui se trouve au niveau du cercle : on le mémorise pour accélérer les traitements + protected Segment SegCourant; + + protected ArrayList listSegments = new ArrayList(); + + + //------------------------------------------------------------------------- + // METHODES + //------------------------------------------------------------------------- + + //------------------------------------------------------------------------- + // Constructeur de la classe + //------------------------------------------------------------------------- + public Ligne(){ + // Valeurs initiales pour la position de la Ligne + double x = 800; + double y = 200; + double dx,dy; + + // Création de la liste de segments qui composent la ligne + Segment s; + for (int i=0; i listeObjets = new ArrayList(); + + //------------------------------------------------------------------------- + // PROPRIETES + //------------------------------------------------------------------------- + + // un booleen qui permet d'arreter l'animation (suspendre) + protected boolean estArrete = false; + + + //------------------------------------------------------------------------- + // METHODES + //------------------------------------------------------------------------- + + //------------------------------------------------------------------------- + // Constructeur de la classe + //------------------------------------------------------------------------- + public ZoneDessin(){ + // on prépare la zone d'affichage + setLayout(new BorderLayout()); + setPreferredSize(new Dimension(800, 600)); + setBackground(new Color(220,170,0)); + } + + + //------------------------------------------------------------------------- + // Ajout d'un objet graphique à la zonde de dessin + //------------------------------------------------------------------------- + public void ajouterObjet(ObjetGraphique unObjet) { + this.listeObjets.add(unObjet); + } + + + //------------------------------------------------------------------------- + // Mettre en pause et redémarrer + //------------------------------------------------------------------------- + public void arreter(){ + estArrete = true; + } + + public void demarrer(){ + estArrete = false; + } + + + //------------------------------------------------------------------------- + // Boucle d'animation : + // - appelée par exemple 25 fois par seconde + // - à chaque appel : + // - on anime (déplace) chaque objet + // - on redessine tout : appel à paintComponent, déclenché par repaint + //------------------------------------------------------------------------- + public void traiterBoucleAnimation(){ + if (estArrete==true) { + return; + } + + // 1. on déplace chaque objet graphique + // A FAIRE : décommenter lorsque cela devienda exécutable, et compléter + + for (ObjetGraphique obj : listeObjets){ + obj.Animer(); + } + // 2. on demande à redessiner, ce qui déclenchera automatiquement + // l'appel à la méthode paintComponent, qui est ci-dessous + repaint(); + } + + + //------------------------------------------------------------------------- + // Dessin, déclenché par le repaint() de la méthode ci-dessus + //------------------------------------------------------------------------- + public void paintComponent(Graphics g) { + // On demande à la super-classe (JPanel) de se redessiner + super.paintComponent(g); + // Puis on ajoute ce qui est spécifique à la classe + // on indique qu'il faut de l'antialiasing + Graphics2D g2D = (Graphics2D) g; + g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); + for (ObjetGraphique obj : listeObjets){ + obj.Afficher(g); + } + // à compléter + } + +} + + diff --git a/out/production/jeu/.idea/.gitignore b/out/production/jeu/.idea/.gitignore new file mode 100644 index 0000000..7bc07ec --- /dev/null +++ b/out/production/jeu/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Environment-dependent path to Maven home directory +/mavenHomeManager.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/out/production/jeu/.idea/misc.xml b/out/production/jeu/.idea/misc.xml new file mode 100644 index 0000000..89ee753 --- /dev/null +++ b/out/production/jeu/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/out/production/jeu/.idea/modules.xml b/out/production/jeu/.idea/modules.xml new file mode 100644 index 0000000..700f04e --- /dev/null +++ b/out/production/jeu/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/out/production/jeu/.idea/vcs.xml b/out/production/jeu/.idea/vcs.xml new file mode 100644 index 0000000..8306744 --- /dev/null +++ b/out/production/jeu/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/out/production/jeu/jeu.iml b/out/production/jeu/jeu.iml new file mode 100644 index 0000000..b107a2d --- /dev/null +++ b/out/production/jeu/jeu.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/out/production/jeu/linea/Cercle.class b/out/production/jeu/linea/Cercle.class new file mode 100644 index 0000000000000000000000000000000000000000..7c54e49f4b3197fbe5194f5dee29861f99bb8d3f GIT binary patch literal 2336 zcmb_cZBr9h6n>T@8;C0e1YgirtWqJU(G<0cN|1oX5)rXc9LjVFOIS&=akD{bwbjn_ zH}rL^|De+uBb|1pwIBMS{VV;_U(o4u?uI0_e(*!Xu;=W#_nv*8=bUr@`1{A70i^J0 z1T6@J5i}5juAw_`7cDbBvvk|?F1coD)xJ})H0bB-qU~MK5EvND=*bH_%U>HJ*cOIi zU_07182;ID%gyF_CghqMPEmuFl6_GFow6yoY?bCEu){#N1VYQ!QpMAg>ksQWcN^Fv zOMw-;C|ma$*oW7MqTm!gi>b9+`Y(T}?Fz#I18>Ow@Vf0;<+7!Z{{E%>zLLXl8aS+y zmCUl9JkvNeWZ;M_wAqDHC119kqMqDnEFU*;LYB3AdeUx$PZ~I-!W&_{tzpM)bKQ)a zcfGi;R<@i-g>jZb))y|CWjj0Pxz3suOg;f2oxypLn{oyRCI>SSoJP{X7%mb_+4B6o zOffKBPvXZ$1~Wn_Wnco6l)yyO`F{Sx>YDQ$s61 zr8bjA)0h17gPAa{Xy~n<%UMn#KIUcxYn#gV`BtqTo(3AQU(%B`M|##Yuq4bPiiMIv z!pjCMtT1uT@|d6Pnv(FU0edTaldI#-GTW$Qn$3QtQdqLw>n15_=$dx2W%DbsWyQ{} z%F@oJ0&G=?8nF9vRHsqg`WmU_5-ANm|6NO@h)o|W+6DE|InT_lrOi@}Of+qItIqOO z(=`hMhQuOsPQ}eyleQ?Z%^%-mQh1K^RIzBe<9U-)#htoedK_RAwy-Fz2+HWw3(9mW z%b`}56Ra#JS6NP|vK&TbIeWAbP)F!|-saoa2+#v2Vw=!n-3V9F7HhAfLmpiW^i;7c z7O0|^{_9or(HyLzpJt$n7|qct;xvgWhQDW`7Oe4^fWhYxf{bDtfkt`r^zd&Vc9Y6p z3}8Rvyh2XlD9+;;uf;g>JYo1?P(YDy0@SGi{gpsNjLrNXKx2o6+#snnAfHw0oOlJu z2||90kcTmalej_>0=f1;9Gzi#5vQ#dU8C*d|E|C$=AI$b z0JBpSe1XsR(S=3y!o*eHK@GKM>uS&9F76Rp2-DcWhZG3-s807cUYR0nKE@CAb>kLI z|5{es`6+sXPtcU*mS4XF~`K^>s$ab8Oc*Wr1P^KDE=pq-kI?oHcnX#Z literal 0 HcmV?d00001 diff --git a/out/production/jeu/linea/Jeu.class b/out/production/jeu/linea/Jeu.class new file mode 100644 index 0000000000000000000000000000000000000000..34032e68eb75443b7b45e088d5b90201914ffab9 GIT binary patch literal 2358 zcmbVNZF3V<6n<`-W<$ErG?bT=GDT2KTO?Wq)Iy~u1X@yBX$`c1xJho?E!*9&*%az4 zisIV`{Ul%g3(nYd#?Cl?cJv=Pj?dlQwjm5Njvun;-h1vn=Q+=L$shmx`Wt{8zKf#` z?HVFFIuI2|EE}sv#xm^1%v5PvmOX*!S<^PXQGxdKKv6@Cmn_qkMrPizWlq*=rX7cd z_Fd?Nu3@*1J?IkH6%W57JaRmm4T5U%fgGp--TzB3I1d>Da1a6Y-wVO>j68Js;Xpua4+=PQB`GdgZ#N zbfwZB)A2lBpqEVo2bC&yR7>%g9w}dzs5}?Sfhe#22NgZ)1uc)KlW3DTC7HBlQN_v#>`-&TbCmPMfK>Mj#0ct znv6VpjVwLZq?dQf^_o$#7;q##uZ$1lf{r{c(m3^5 z6}0V58#ZqoXfm!825ZRmjSgd6$Asb}QZ>qVl$C;xNnByjv{G=&hG#k~pN{nSc;IDP z$2$r|ocf|!Gl@Yxo6#|gcLfgeI42j3y5(gprzWSW(hY4y(lnvr8Y`fg?OAh0rKgBF zRcG@8$I|1iWQ>&+j3z!*#oW|!3-1YNOO9(fiwtzH|86UdzTpvN`F$OR3bLc-8Lp?H zOp>qLE$|wu0*71lPsS$@vy9SA&<8zF#57SbO44H4MS^PYDlnH<>MJGb&IaX> zR7tanhHI*Qco^}P%o=kV)+Q$dO~miWwP}}AL{goBRBKkYI*_(B z+6oYfaW>eD$7-51s-gQ%YOhL58osL-ce86%=Ca$y;k z>Oh(g!|)rDnl8gHk7?;HIPQwF`*b@64DSTg*BVUo1#&av)ZMboo2tWN)}=2w(R_IqE@c!fLH}FhuFiQND9;RTKn!j|o7=#y zb;P+$%=IAIgPslSUq@=^;IMztKe%TdM}OwiHhBE@(j<@}j2^-{h$BdG&K<>RoS_py z58PlC_qY?dk2QW31W)|~QT7fsaQs|f;`mSK9{dHV22N1)Qz$R(zL))k4qW1Qf+Q4> zhf> zI&SdljRtO0^lzdxm#lPlZa_A$#FLad(UVrv3XXOH%cGkxtBA226Rdzk%H1 z#yfAl?M=PwI3q-5#_6@Af5RW)jNx^4NoivsEFbN88;^22{}ic&H$$VF}9ufwK-ZOh{B-FE1PWwnO;3 zL_F5;AwFVuMMoWM_;#8kCoyA3B~>dLKE^8Zh;MG1nY`iTaYj^w5hrUG#^q$EHLT07 zdvb=ImWn4DK5Hn}$T~Yo);R*qr#1OnccY{y#i7>iip5dwKUeVSkWRe;nI_0HQ_9l5 zHOWm{uIy|W){4F%hdq!iW%RdQ zT2i*2*kdSYV{risACe z3s)h+?c%#bDB&Pl4$&GuMn}4e&O>ws(K{c+l|}cs+Np+rg7O^8KjZBnZfpn9pPBGF zA0d9+$W1862&ZojbbGs%DsD~sd;G_Uqyr=Ju442EcW-ukGxG!8N@npJRlGQP`6Cl> zBg5x3TKT-rV%nKjkcIT%ExgMz`}rKi2!?1gjECIab=*b)qj-ut*yF#iaTi&l=b_MM z8V1o`T8?0ol0y4y$dM91LRdkbWT~`%1`}I+_u&b)X(t$GjeY~nXovc%aGemq zj|5&JJn8B23?3o%;^eP0CVJT-AVzO-<}$;Y6Bxq-o=tO3m0?C2rj4w~BO})9kWvvP z=Hn$VyJW}Z)Nu)}f6%L7Lc!wSxWfNdV+hEdQx${^?{XR;=L4)#5~?|}s0Cl2Plg21xqeirRFy!%z#Uj=M#mo6v3DmiFm(7OC zJjh{8on|;6$vBcmbG>dB(`Ws{+FwwgNHeJufp+I9+?XDuMkkYgHzK>zOaxm0sH9C* zCg82H^bz8@gL!5~>RPj#mA~BcDbsO`DqV_S0fKKuu})P$Sx_$ZmJn|%xj~U-z`_UKpVTHIpkyy`-BrX Ipt^v=UyUnSr~m)} literal 0 HcmV?d00001 diff --git a/out/production/jeu/linea/ObjetGraphique.class b/out/production/jeu/linea/ObjetGraphique.class new file mode 100644 index 0000000000000000000000000000000000000000..0f940d57060c6230911f51fb01b57921692fc645 GIT binary patch literal 760 zcmZva-EPxB5QWbsPTZs>ElC>wq0j<}5k%a;MNp(FQF>#+1t@ASH)h*x<;LLH{5%yx z0#yQu2SD&jh_maUwkQ|g-5Jk(Gjn!-{`vL;zz}{F1r%L49!e++tRKmDvKz_SVfV%4 zNQJ3D`I(;Sv@cL>cg8MO1Zp-&zE8V@IEoXeAN=}Vg^N`K@tDybjYgeu1vRX>Sod%d zb%AE2XG&UZx|_&1Q~fqm0&W;*k;)R*4$gCX2GI1dftG;yz;9?gmpxpuo{s{~Abw58 zT0r#k?0BM*S8@{3QxD=$Mq`<1V=tUeI@NQ5REPcujWYclr-D2(8aSJr zv%m`~!ZG9Xo`4Pi1j7FgcYn2BsaH-={fY~p8BoAAt~COI z8-z8`#4TK>5^h%Oa2!$KJk!4O%K4sGq6$)qkns8 y@}>WiA1_V5i+hX8eU>tEl>G_x73n`Rn@+0C_wO!w0{HfQ}$S0z);cVH)WdJA0

;3wEO-Gb1`KsZ6Vr8Pzd{aRIGlH*03o5r`J{j1NZIIB?TzcFlIO zVN7C5!?cbW%nDrWZnt%p_62(OO;;Tj7>u8)PKtv(bj7BBBWw=!e zbnIrMED(t26VD`FLPruQ;+7rbpg^Z6Fuuu0V)<}g$D))HRnC=^8 zVP2+}b=>ZxUvqcOE)%a`!ai@-cTDG%u~TDapkSAbTG4PUx%QF)w`%bP`wM@VpOt#@ zd=f!7-j+`;3<6KtOiwa#kHLbfxm|VlE%i8Fc z=~nIXOT#hhrfWJ>6yCO*PRU%iq;%c86pPYX%(Bxy-T@y1@&Ygl$hLFVK(i6zc!#UE z@G}A?lP3_#$PqL-^d*N7J;FeH8veoqK4dtKu@D3bAja!8iU>2q7{>&Ece$gt!Eg`v zxspU#kLV+bdYKznL<^EAA&Fu^$rIC#@E6S#X{K2;Lz-E>#T?1z70oh%3FXnqXvL!* z#{))wwfm4!``jZ&8gr}2d2;qWe=@1$SHzAnA!qFy=00)m^Jb0lK&g}DVpuJX5kGY# zqR3K&Tcn|BC2vGopXtiW;4#*eGx@IZDaw(?i&H4s6A<9kNYRFf=Hy)`sO;DhXW7|M zGIfG$=c|KfszaWDCp;Y_bQA>Q*Wp=^CX6HuvLorw4B9Pjt2m1j?5f~5^pE0O|541c Ibw#o98$%Vx)c^nh literal 0 HcmV?d00001 diff --git a/out/production/jeu/linea/ZoneDessin.class b/out/production/jeu/linea/ZoneDessin.class new file mode 100644 index 0000000000000000000000000000000000000000..039fc64c3b65d53c96855da7e82022cbe23e9ebc GIT binary patch literal 2266 zcmZ`)-%}G;7(F+MEQD175r6+`QA1Eesnr&&HUz~;2-YYHw&EqZgvGFnyBihTKK9l3 zzV*$SK6FN>hG{#~@wtCPpF7ikq0`o$yIGQ8X&yFv@BQxi&OP6`-~Rf~Prm>d$5(Mg z5H%1pu?=kkJFe-lE8sPJ(1p2 zpPQ1lEGu_ZpXgwC@RVL2w^o$xS&kjY0UXx491+--$Yuv-H2N_U@8De?jp)~1wW!Fg zRIr|s-kz2u4U{0kae*BT(ix}XxN-F3qy|q=UxJ6|NfU!OC9s|7W3u?5>^fDuM8R92 zgZ+fnf}b&w!VoJXON`nbMpY!MrzI}>qXTm~ZrH^8I4jU@`O1~P;|la823o|=hV!GH zIEV8FJ~Z(WMmBT_D!maRU@S>5ub%jUBj)su3no4W9TKyH>D~?ORwf2M5$LTuBB=j_ zD_57ShgB8FC5)NKXa}~XZ5Dv~bmFp!D|*Us)vB~?RycyICbGCjIfI#uv$9HW*<{k! zqEH>U=mpy6Hted4yRkAn-hn)(4O}WKjq==3Ha$iEUu8;Kv}^M6?0hw3 z(}iq)Lf}x-Oq-+oC)FC=o5xKPw=hHbX41J^mz&$?r}LbwZ*SEmj!E1xF^jpnvo^sB z47VI^(~=it{4bt%$0dAb;&UxldwOxvDlREjowju?S(#C;w)m~=IByjrwr3pM^QG<2 z$VydhV{gzu!An%I%C_{YF8zJF#V?I(e<8P3MMp1=(hM1=#BDosYy$b}%7Sul%7qGN zdU8&Y93+`=98SjkC5v+Rgm}%KK_pWy^M)%ou#LdJ#MVg%sJKzJ!>GQkgBT)%enK_c zOKL?A^mXuEsV~QvQ!Q4MHlg&X5H0R3EK{I@&+9lPS3|aU*i>WZax*x5Yf8SOtFG;7<+%~Yi4DbK(c>|Fn2OkH>;;}getS0XG|6#H=x z^ANbtQ3Mh(-G(_X2ICUP?5TWj;~e`vpNgZegEt_PT!%>h3}bd39j_2iMqio`=yQBL&FcH_5hd>38Ei5do81c?^;Jj|{Gw#pc~NntOWb3cyY zIEHWnV>pR2S4|RNS}eihzrZpcgp|feUmq!+`~mU78cyGCBI`B)oIwX$pGN7cM}{ce zg9=uNBVadgb1TsBCIwLo{>Y89ENzN zuGqJTz0ilN;l148kN7~~8}#yp9(j#RQ>SW3KY#N_vW9V;D~hJ3SI~|Lo_>mo=8?cO zKN&ZuMWLZaKUIH74YW=};aOb1oBTlk1;fC(KlzCix|8y$E$}@v=vzOM99+l5;A>1y zoqCC>mnhV5JEWOE9n##xmpaXn*uEI6bNBh1-`{3=mw5MBi+NW5K3Pb9B^LNiDFrN( zWH>}+G|QOI+o;|MJosc4=Xw>7cm~aU2O@vtpn=JN`$5h==4=E{u*Uy5