From 289affdb8d2a49f6ebee1347daab619af004c2d1 Mon Sep 17 00:00:00 2001 From: adri Date: Fri, 5 Jan 2018 12:19:46 +0100 Subject: [PATCH] Tete Ok, deplacement corp Ok --- Bonhomme02/BaseBJ.cs | 64 +++++++++++++++++++++++------------------ Bonhomme02/Bras.cs | 9 ++++++ Bonhomme02/Form1.cs | 10 ++++++- Bonhomme02/Jambe.cs | 11 +++++++ Bonhomme02/Pied.cs | 2 +- Bonhomme02/Tete.cs | 68 +++++++++++++++++++++++++++++++++++++++++++- 6 files changed, 133 insertions(+), 31 deletions(-) diff --git a/Bonhomme02/BaseBJ.cs b/Bonhomme02/BaseBJ.cs index c4f9a39..287315c 100644 --- a/Bonhomme02/BaseBJ.cs +++ b/Bonhomme02/BaseBJ.cs @@ -22,14 +22,19 @@ namespace Bonhomme02 { } - public BaseBJ(PictureBox Hebergeur, ref Peau parent, Peau bas, double longueur, double epaisseur, double angle) + public BaseBJ(PictureBox Hebergeur, ref Peau parent, Peau bas, double longueur, double epaisseur, double angle) : this( Hebergeur, ref parent, longueur, epaisseur, angle) + { + this.Bas = bas; + this.Bas.parent = this.Millieux; + + } + public BaseBJ(PictureBox Hebergeur, ref Peau parent, double longueur, double epaisseur, double angle) { this.parent = parent; this.longueur = longueur; - this.Haut = new Peau(Hebergeur, ref parent, longueur/2, epaisseur, angle); - this.Millieux = new Peau(Hebergeur, ref this.Haut, longueur/2, epaisseur, angle); - this.Bas = bas; - this.Bas.parent = this.Millieux; + this.Haut = new Peau(Hebergeur, ref parent, longueur / 2, epaisseur, angle); + this.Millieux = new Peau(Hebergeur, ref this.Haut, longueur / 2, epaisseur, angle); + } public void Afficher(IntPtr handle) { @@ -57,41 +62,44 @@ namespace Bonhomme02 } public Point TouverPointMillieux(Point bas) { - Point H = Haut.Coordonnee; - //Point M = new Point() ; //Inconnue - Point B = new Point(bas.X-H.X, bas.Y-H.Y); //On part du principe que H est 0;0 + try + { + Point H = Haut.Coordonnee; + //Point M = new Point() ; //Inconnue + Point B = new Point(bas.X - H.X, bas.Y - H.Y); //On part du principe que H est 0;0 - Complex tt = new Complex(B.X, B.Y); + Complex tt = new Complex(B.X, B.Y); - double a = Math.Sqrt(4 * Math.Pow(Haut.longueur.ABS, 2) - Math.Pow(B.X, 2) - Math.Pow(B.Y, 2)); - double b = Math.Sqrt(Math.Pow(B.X, 2) + Math.Pow(B.Y, 2)); + double a = Math.Sqrt(4 * Math.Pow(Haut.longueur.ABS, 2) - Math.Pow(B.X, 2) - Math.Pow(B.Y, 2)); + double b = Math.Sqrt(Math.Pow(B.X, 2) + Math.Pow(B.Y, 2)); - double cooMX = (B.Y * a + B.X * b); - cooMX /= 2*b; - double cooMY = -(B.X * a - B.Y * b); - cooMY /= 2 * b; + double cooMX = (B.Y * a + B.X * b); + cooMX /= 2 * b; + double cooMY = -(B.X * a - B.Y * b); + cooMY /= 2 * b; - Complex t = new Complex(cooMX, cooMY); - cooMX += H.X; - cooMY += H.Y; - int xx = (int)Math.Round(cooMX); - int yy = (int)Math.Round(cooMY); - return new Point(xx, yy); + Complex t = new Complex(cooMX, cooMY); + cooMX += H.X; + cooMY += H.Y; + int xx = (int)Math.Round(cooMX); + int yy = (int)Math.Round(cooMY); + return new Point(xx, yy); + } + catch(Exception e) + { + Console.WriteLine("Erreur Point millieux : " + e); + return new Point(0, 0); + } } public void Bouger(int X, int Y) { Point nouveauPtBas = new Point(Bas.X + X, Bas.Y + Y); Point nouveauPtMillieux = TouverPointMillieux(nouveauPtBas); - if(nouveauPtMillieux.X == 0 && nouveauPtMillieux.Y == 0) - { - - } - else + if(nouveauPtMillieux.X != 0 || nouveauPtMillieux.Y != 0) { Haut.Angle = TrouverAngleHaut(nouveauPtMillieux); Millieux.Angle = TrouverAngleMillieux(nouveauPtBas); - } - + } } } diff --git a/Bonhomme02/Bras.cs b/Bonhomme02/Bras.cs index 28a1ca3..6ace844 100644 --- a/Bonhomme02/Bras.cs +++ b/Bonhomme02/Bras.cs @@ -3,10 +3,19 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Forms; namespace Bonhomme02 { class Bras : BaseBJ { + public Bras() + { + + } + public Bras(PictureBox Hebergeur, ref Peau parent, double longueur, double epaisseur, double angle) : base( Hebergeur, ref parent, longueur, epaisseur, angle) + { + base.Bas = new Pied(Hebergeur, ref base.Millieux, longueur * 0.3125, epaisseur, 0); + } } } diff --git a/Bonhomme02/Form1.cs b/Bonhomme02/Form1.cs index 92d92fe..1917170 100644 --- a/Bonhomme02/Form1.cs +++ b/Bonhomme02/Form1.cs @@ -16,6 +16,7 @@ namespace Bonhomme02 private BaseBJ jambe; private Pied pied; private Peau corp; + Tete tete; private BufferedGraphics bufferG = null; private Graphics g; @@ -36,9 +37,14 @@ namespace Bonhomme02 } else { + corp.Cacher(this.TV.Handle); + tete.Cacher(this.TV.Handle); jambe.Cacher(this.TV.Handle); + corp.coordonnee = new Point(corp.coordonnee.X + 3, corp.coordonnee.Y + 0); jambe.Bouger(+3, -3); jambe.Afficher(this.TV.Handle); + corp.Afficher(this.TV.Handle); + tete.Afficher(this.TV.Handle); } } @@ -59,11 +65,13 @@ namespace Bonhomme02 corp = new Peau(this.TV, 80, 80, 100, 40, Math.PI / 2); pied = new Pied(this.TV, 25, 10, 0); - jambe = new BaseBJ(this.TV, ref corp, pied, 80, 10, Math.PI / 2); + jambe = new Jambe(this.TV, ref corp, 100, 10, Math.PI / 2); + tete = new Tete(this.TV, ref corp, 35); jambe.Haut.Angle = Math.PI/4; jambe.Millieux.Angle = Math.PI/2 + Math.PI/8 ; jambe.Afficher(this.TV.Handle); corp.Afficher(this.TV.Handle); + tete.Afficher(this.TV.Handle); this.btnStopDeplacerCTick.Enabled = true; this.timerImage.Start(); diff --git a/Bonhomme02/Jambe.cs b/Bonhomme02/Jambe.cs index d0db1fc..14b8b68 100644 --- a/Bonhomme02/Jambe.cs +++ b/Bonhomme02/Jambe.cs @@ -3,10 +3,21 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Forms; namespace Bonhomme02 { class Jambe : BaseBJ { + /*pied = new Pied(this.TV, 25, 10, 0); + jambe = new BaseBJ(this.TV, ref corp, pied, 80, 10, Math.PI / 2);*/ + public Jambe() + { + + } + public Jambe(PictureBox Hebergeur, ref Peau parent, double longueur, double epaisseur, double angle) : base( Hebergeur, ref parent, longueur, epaisseur, angle) + { + base.Bas = new Pied(Hebergeur,ref base.Millieux, longueur*0.3125, epaisseur, 0); + } } } diff --git a/Bonhomme02/Pied.cs b/Bonhomme02/Pied.cs index f9e26db..e1efa66 100644 --- a/Bonhomme02/Pied.cs +++ b/Bonhomme02/Pied.cs @@ -74,7 +74,7 @@ namespace Bonhomme02 { base.longueur = new Vecteur(lg, angle); base.epaisseur = new Vecteur(ep, ref base.longueur, true); - talon = new Vecteur(lg / 2, angle); + talon = new Vecteur(lg / 3, angle); } #endregion diff --git a/Bonhomme02/Tete.cs b/Bonhomme02/Tete.cs index 2137328..03e3d5c 100644 --- a/Bonhomme02/Tete.cs +++ b/Bonhomme02/Tete.cs @@ -1,12 +1,78 @@ using System; using System.Collections.Generic; +using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Forms; namespace Bonhomme02 { - class Tete + class Tete : BaseDessin { + public int rayon; + Peau corp; + public Tete() : base() + { + + } + + public Tete(PictureBox hebergeur, ref Peau corp, int rayon) : base(hebergeur) + { + this.rayon = rayon; + this.corp = corp; + } + + public Tete(PictureBox hebergeur, int xy) : base(hebergeur, xy) + { + + } + + public Tete(PictureBox hebergeur, int x, int y) : base(hebergeur, x, y) + { + + } + public Tete(int x, int y) : base(x, y) + { + + } + public Tete(PictureBox hebergeur, int xy, Color crayon) : base(hebergeur, xy, crayon) + { + + } + + public Tete(PictureBox hebergeur, int x, int y, Color crayon) : base(hebergeur, x, y, crayon) + { + + } + public override void Cacher(IntPtr handle) + { + Point posi = new Point(corp.coordonnee.X - rayon, corp.coordonnee.Y - rayon * 2); + if (base.Visible) + { + Graphics gr = Graphics.FromHwnd(handle); + + if (base.Remplir) + { + gr.FillEllipse(new SolidBrush(base.Fond), posi.X , posi.Y, rayon*2, rayon*2); + } + gr.DrawEllipse(new Pen(base.Fond), posi.X, posi.Y, rayon*2, rayon*2); + } + } + public override void Afficher(IntPtr handle) + { + + if (base.Visible) + { + Graphics gr = Graphics.FromHwnd(handle); + Point posi = new Point(corp.coordonnee.X - rayon , corp.coordonnee.Y - rayon * 2); + if (base.Remplir) + { + gr.FillEllipse(new SolidBrush(Color.Blue), posi.X, posi.Y, rayon * 2, rayon * 2); + } + gr.DrawEllipse(new Pen(Brushes.Black), posi.X, posi.Y, rayon * 2, rayon * 2); + } + } + } }