Marcher OK, a améliorer !
This commit is contained in:
parent
e4be7fd6d0
commit
3aa5ca08cc
|
@ -88,7 +88,12 @@ namespace Bonhomme02
|
||||||
cooMY += H.Y;
|
cooMY += H.Y;
|
||||||
int xx = (int)Math.Round(cooMX);
|
int xx = (int)Math.Round(cooMX);
|
||||||
int yy = (int)Math.Round(cooMY);
|
int yy = (int)Math.Round(cooMY);
|
||||||
return new Point(xx, yy);
|
if(Double.IsNaN(a) || Double.IsNaN(b))
|
||||||
|
{
|
||||||
|
return Millieux.Coordonnee;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return new Point(xx, yy);
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
|
@ -96,7 +101,7 @@ namespace Bonhomme02
|
||||||
return new Point(0, 0);
|
return new Point(0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void Bouger(int X, int Y)
|
public void BougerBas(int X, int Y)
|
||||||
{
|
{
|
||||||
Point nouveauPtBas = new Point(Bas.X + X, Bas.Y + Y);
|
Point nouveauPtBas = new Point(Bas.X + X, Bas.Y + Y);
|
||||||
Point nouveauPtMillieux = TouverPointMillieux(nouveauPtBas);
|
Point nouveauPtMillieux = TouverPointMillieux(nouveauPtBas);
|
||||||
|
@ -106,12 +111,32 @@ namespace Bonhomme02
|
||||||
Millieux.Angle = TrouverAngleMillieux(nouveauPtBas);
|
Millieux.Angle = TrouverAngleMillieux(nouveauPtBas);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public void BougerXHaut(int x, ref Bonhomme bonhomme)
|
||||||
|
{
|
||||||
|
Point oldPtBas = Bas.Coordonnee;
|
||||||
|
Vecteur oldVecteurHautBas = new Vecteur(Bas.Coordonnee, Haut.Coordonnee);
|
||||||
|
Vecteur newVecteurHautBas;
|
||||||
|
Point newCooHaut = TrouverPointSurCerlceSelonX(Bas.Coordonnee, oldVecteurHautBas.ABS, Haut.Coordonnee.X + x);
|
||||||
|
bonhomme.Coordonnee = new Point(newCooHaut.X, (int)Math.Round(newCooHaut.Y - bonhomme.longueur.ABS));
|
||||||
|
|
||||||
|
Point nouveauPtMillieux = TouverPointMillieux(oldPtBas);
|
||||||
|
if (nouveauPtMillieux.X != 0 || nouveauPtMillieux.Y != 0)
|
||||||
|
{
|
||||||
|
Haut.Angle = TrouverAngleHaut(nouveauPtMillieux);
|
||||||
|
Millieux.Angle = TrouverAngleMillieux(oldPtBas);
|
||||||
|
}
|
||||||
|
}
|
||||||
public void SetAngle(double h, double m, double b)
|
public void SetAngle(double h, double m, double b)
|
||||||
{
|
{
|
||||||
Haut.Angle = h;
|
Haut.Angle = h;
|
||||||
Millieux.Angle = m;
|
Millieux.Angle = m;
|
||||||
Bas.Angle = b;
|
Bas.Angle = b;
|
||||||
}
|
}
|
||||||
|
public Point TrouverPointSurCerlceSelonX(Point centre, double rayon, int nouveauX)
|
||||||
|
{
|
||||||
|
double racine = Math.Sqrt(rayon * rayon - nouveauX * nouveauX + 2 * centre.X * nouveauX - centre.X * centre.X);
|
||||||
|
double y = -(racine - centre.Y);
|
||||||
|
return new Point(nouveauX, (int)Math.Round(y));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,5 +57,12 @@ namespace Bonhomme02
|
||||||
jambe2.Cacher(handle);
|
jambe2.Cacher(handle);
|
||||||
bras.Cacher(handle);
|
bras.Cacher(handle);
|
||||||
}
|
}
|
||||||
|
public void InterevrtirJambe()
|
||||||
|
{
|
||||||
|
Jambe tmp;
|
||||||
|
tmp = jambe1;
|
||||||
|
jambe1 = jambe2;
|
||||||
|
jambe2 = tmp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ namespace Bonhomme02
|
||||||
{
|
{
|
||||||
bonhomme.Cacher(this.TV.Handle);
|
bonhomme.Cacher(this.TV.Handle);
|
||||||
bonhomme.coordonnee = new Point(bonhomme.coordonnee.X + 3, bonhomme.coordonnee.Y + 0);
|
bonhomme.coordonnee = new Point(bonhomme.coordonnee.X + 3, bonhomme.coordonnee.Y + 0);
|
||||||
bonhomme.jambe1.Bouger(+3, -3);
|
bonhomme.jambe1.BougerBas(+3, -3);
|
||||||
bonhomme.Afficher(this.TV.Handle);
|
bonhomme.Afficher(this.TV.Handle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ namespace Bonhomme02
|
||||||
bonhomme.Afficher(this.TV.Handle);
|
bonhomme.Afficher(this.TV.Handle);
|
||||||
marche = new Marcher(ref bonhomme, this.TV.Handle, this.Sol.Location.Y-this.TV.Location.Y);
|
marche = new Marcher(ref bonhomme, this.TV.Handle, this.Sol.Location.Y-this.TV.Location.Y);
|
||||||
Thread.Sleep(1000);
|
Thread.Sleep(1000);
|
||||||
Task.Factory.StartNew(() => marche.Avancer(5));
|
Task.Factory.StartNew(() => marche.Avancer(10));
|
||||||
//this.btnStopDeplacerCTick.Enabled = true;
|
//this.btnStopDeplacerCTick.Enabled = true;
|
||||||
// this.timerImage.Start();
|
// this.timerImage.Start();
|
||||||
|
|
||||||
|
|
|
@ -28,14 +28,15 @@ namespace Bonhomme02
|
||||||
this.ySol = ySol;
|
this.ySol = ySol;
|
||||||
resolution = 1;
|
resolution = 1;
|
||||||
deltaXYmax = (int)Math.Round(3*bonhomme.jambe1.longueur.ABS/4);
|
deltaXYmax = (int)Math.Round(3*bonhomme.jambe1.longueur.ABS/4);
|
||||||
|
|
||||||
//Reset de tous les angle au cas ou
|
//Reset de tous les angle au cas ou
|
||||||
bonhomme.Angle = Math.PI / 2;
|
bonhomme.Angle = Math.PI / 2;
|
||||||
bonhomme.jambe1.SetAngle(Math.PI / 2, Math.PI / 2, 0);
|
bonhomme.jambe1.SetAngle(Math.PI / 2, Math.PI / 2, 0);
|
||||||
bonhomme.jambe2.Cacher(handle);
|
//bonhomme.jambe2.Cacher(handle);
|
||||||
bonhomme.jambe2.Visible = false; // On va d'abord le faire marcher sur une jambe
|
//bonhomme.jambe2.Visible = false; // On va d'abord le faire marcher sur une jambe
|
||||||
bonhomme.bras.Visible = false;
|
bonhomme.bras.Visible = false;
|
||||||
bonhomme.bras.Cacher(handle);
|
bonhomme.bras.Cacher(handle);
|
||||||
if(bonhomme.jambe1.Bas.CSG.Y != ySol)
|
if(bonhomme.jambe1.Bas.CSG.Y != ySol) // On positionne le bonhomme sur le sol
|
||||||
{
|
{
|
||||||
Graphics gr = Graphics.FromHwnd(handle);
|
Graphics gr = Graphics.FromHwnd(handle);
|
||||||
bonhomme.Cacher(handle);
|
bonhomme.Cacher(handle);
|
||||||
|
@ -49,18 +50,20 @@ namespace Bonhomme02
|
||||||
public void Avancer(int vitesse)
|
public void Avancer(int vitesse)
|
||||||
{
|
{
|
||||||
step = 0;
|
step = 0;
|
||||||
|
double old = 1, neww = 0;
|
||||||
int dejaDeplacer = 0;
|
int dejaDeplacer = 0;
|
||||||
while(step<=32)
|
while(step<=128)
|
||||||
{
|
{
|
||||||
|
Console.WriteLine(step + "::" + step % 5);
|
||||||
dejaDeplacer = 0;
|
dejaDeplacer = 0;
|
||||||
switch (step%5)
|
switch (step%5)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
while (dejaDeplacer < deltaXYmax) //Descent corp
|
while (dejaDeplacer < deltaXYmax) //Monte jambe 1
|
||||||
{
|
{
|
||||||
bonhomme.Cacher(handle);
|
bonhomme.Cacher(handle);
|
||||||
bonhomme.jambe1.Bouger(0, -resolution);
|
bonhomme.jambe1.BougerBas(0, -resolution);
|
||||||
bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X, bonhomme.Coordonnee.Y + resolution);
|
//bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X, bonhomme.Coordonnee.Y + resolution);
|
||||||
bonhomme.Afficher(handle);
|
bonhomme.Afficher(handle);
|
||||||
dejaDeplacer += resolution;
|
dejaDeplacer += resolution;
|
||||||
Thread.Sleep(vitesse);
|
Thread.Sleep(vitesse);
|
||||||
|
@ -68,62 +71,151 @@ namespace Bonhomme02
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
while (dejaDeplacer < deltaXYmax)//avence corp pied fixe
|
while (dejaDeplacer < deltaXYmax)//avence corp + avancer jambe 1 jambe 2 fixe
|
||||||
{
|
{
|
||||||
bonhomme.Cacher(handle);
|
bonhomme.Cacher(handle);
|
||||||
bonhomme.jambe1.Bouger(-resolution, 0);
|
bonhomme.jambe2.BougerXHaut(resolution, ref bonhomme);
|
||||||
bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X + resolution, bonhomme.Coordonnee.Y);
|
bonhomme.jambe1.BougerBas(resolution, 0);
|
||||||
bonhomme.Afficher(handle);
|
bonhomme.Afficher(handle);
|
||||||
dejaDeplacer += resolution;
|
dejaDeplacer += resolution;
|
||||||
Thread.Sleep(vitesse);
|
Thread.Sleep(vitesse);
|
||||||
}
|
}
|
||||||
|
CollerAuSol(ref bonhomme.jambe2);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
while (dejaDeplacer < deltaXYmax)
|
while (bonhomme.jambe1.Bas.CSG.Y < ySol-1 && old != neww) //Descendre jambe 1 sur sol
|
||||||
{
|
{
|
||||||
bonhomme.Cacher(handle);
|
bonhomme.Cacher(handle);
|
||||||
bonhomme.jambe1.Bouger(-resolution, 0);
|
bonhomme.jambe1.BougerBas(0, resolution);
|
||||||
|
//bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X + resolution, bonhomme.Coordonnee.Y);
|
||||||
|
bonhomme.Afficher(handle);
|
||||||
|
dejaDeplacer += resolution;
|
||||||
|
Thread.Sleep(vitesse);
|
||||||
|
if (neww != bonhomme.jambe1.Bas.CSG.Y)
|
||||||
|
{
|
||||||
|
neww = bonhomme.jambe1.Bas.CSG.Y;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
old = bonhomme.jambe1.Bas.CSG.Y;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
while (dejaDeplacer < (deltaXYmax*2))//Monte&avance jambe 2,avance bonhome
|
||||||
|
{
|
||||||
|
bonhomme.Cacher(handle);
|
||||||
|
bonhomme.jambe1.BougerBas(-resolution, 0);
|
||||||
|
if(dejaDeplacer < deltaXYmax)
|
||||||
|
bonhomme.jambe2.BougerBas(resolution, -resolution);
|
||||||
|
else
|
||||||
|
bonhomme.jambe2.BougerBas(resolution, 0);
|
||||||
bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X + resolution, bonhomme.Coordonnee.Y);
|
bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X + resolution, bonhomme.Coordonnee.Y);
|
||||||
bonhomme.Afficher(handle);
|
bonhomme.Afficher(handle);
|
||||||
dejaDeplacer += resolution;
|
dejaDeplacer += resolution;
|
||||||
Thread.Sleep(vitesse);
|
Thread.Sleep(vitesse);
|
||||||
}
|
}
|
||||||
bonhomme.Cacher(handle);
|
bonhomme.Cacher(handle);
|
||||||
bonhomme.jambe1.Bouger(0, -4);
|
//bonhomme.jambe1.BougerBas(0, 4);
|
||||||
bonhomme.Afficher(handle);
|
bonhomme.Afficher(handle);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 4:
|
||||||
while (dejaDeplacer < (deltaXYmax*4))
|
while (bonhomme.jambe2.Bas.CSG.Y < ySol - 1 && old != neww)//Descend jambe 2
|
||||||
{
|
{
|
||||||
bonhomme.Cacher(handle);
|
bonhomme.Cacher(handle);
|
||||||
bonhomme.jambe1.Bouger(resolution, 0);
|
bonhomme.jambe2.BougerBas(0, resolution);
|
||||||
//bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X + resolution, bonhomme.Coordonnee.Y);
|
//bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X + resolution, bonhomme.Coordonnee.Y);
|
||||||
bonhomme.Afficher(handle);
|
bonhomme.Afficher(handle);
|
||||||
dejaDeplacer += resolution;
|
dejaDeplacer += resolution;
|
||||||
Thread.Sleep(vitesse);
|
Thread.Sleep(vitesse);
|
||||||
}
|
}
|
||||||
bonhomme.Cacher(handle);
|
bonhomme.Cacher(handle);
|
||||||
bonhomme.jambe1.Bouger(0, 4);
|
bonhomme.InterevrtirJambe();
|
||||||
bonhomme.Afficher(handle);
|
bonhomme.Afficher(handle);
|
||||||
|
step+=2;
|
||||||
break;
|
break;
|
||||||
case 4:
|
/*---------------------------------------------T0 DO-----------------------------------------------*/
|
||||||
while (dejaDeplacer < deltaXYmax*4)
|
case 5:
|
||||||
|
while (dejaDeplacer < deltaXYmax) //Monte pied 1
|
||||||
{
|
{
|
||||||
bonhomme.Cacher(handle);
|
bonhomme.Cacher(handle);
|
||||||
bonhomme.jambe1.Bouger(-resolution, 0);
|
bonhomme.jambe1.BougerBas(0, -resolution);
|
||||||
|
bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X, bonhomme.Coordonnee.Y + resolution);
|
||||||
|
bonhomme.Afficher(handle);
|
||||||
|
dejaDeplacer += resolution;
|
||||||
|
Thread.Sleep(vitesse);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
while (dejaDeplacer < deltaXYmax)//avence corp pied 2 fixe
|
||||||
|
{
|
||||||
|
bonhomme.Cacher(handle);
|
||||||
|
bonhomme.jambe1.BougerBas(-resolution, 0);
|
||||||
|
bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X + resolution, bonhomme.Coordonnee.Y);
|
||||||
|
bonhomme.Afficher(handle);
|
||||||
|
dejaDeplacer += resolution;
|
||||||
|
Thread.Sleep(vitesse);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
while (dejaDeplacer < deltaXYmax)
|
||||||
|
{
|
||||||
|
bonhomme.Cacher(handle);
|
||||||
|
bonhomme.jambe1.BougerBas(-resolution, 0);
|
||||||
bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X + resolution, bonhomme.Coordonnee.Y);
|
bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X + resolution, bonhomme.Coordonnee.Y);
|
||||||
bonhomme.Afficher(handle);
|
bonhomme.Afficher(handle);
|
||||||
dejaDeplacer += resolution;
|
dejaDeplacer += resolution;
|
||||||
Thread.Sleep(vitesse);
|
Thread.Sleep(vitesse);
|
||||||
}
|
}
|
||||||
bonhomme.Cacher(handle);
|
bonhomme.Cacher(handle);
|
||||||
bonhomme.jambe1.Bouger(0, -4);
|
bonhomme.jambe1.BougerBas(0, -4);
|
||||||
bonhomme.Afficher(handle);
|
bonhomme.Afficher(handle);
|
||||||
step+=3;
|
break;
|
||||||
|
case 8:
|
||||||
|
while (dejaDeplacer < (deltaXYmax * 4))
|
||||||
|
{
|
||||||
|
bonhomme.Cacher(handle);
|
||||||
|
bonhomme.jambe1.BougerBas(resolution, 0);
|
||||||
|
bonhomme.Afficher(handle);
|
||||||
|
dejaDeplacer += resolution;
|
||||||
|
Thread.Sleep(vitesse);
|
||||||
|
}
|
||||||
|
bonhomme.Cacher(handle);
|
||||||
|
bonhomme.jambe1.BougerBas(0, 4);
|
||||||
|
bonhomme.Afficher(handle);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
while (dejaDeplacer < deltaXYmax * 4)
|
||||||
|
{
|
||||||
|
bonhomme.Cacher(handle);
|
||||||
|
bonhomme.jambe1.BougerBas(-resolution, 0);
|
||||||
|
bonhomme.Coordonnee = new Point(bonhomme.Coordonnee.X + resolution, bonhomme.Coordonnee.Y);
|
||||||
|
bonhomme.Afficher(handle);
|
||||||
|
dejaDeplacer += resolution;
|
||||||
|
Thread.Sleep(vitesse);
|
||||||
|
}
|
||||||
|
bonhomme.Cacher(handle);
|
||||||
|
bonhomme.jambe1.BougerBas(0, -4);
|
||||||
|
bonhomme.Afficher(handle);
|
||||||
|
step += 3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
step++;
|
step++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public void CollerAuSol(ref Jambe jambe)
|
||||||
|
{
|
||||||
|
if (jambe.Bas.CSG.Y != ySol) // On positionne le bonhomme sur le sol
|
||||||
|
{
|
||||||
|
Graphics gr = Graphics.FromHwnd(handle);
|
||||||
|
bonhomme.Cacher(handle);
|
||||||
|
Point newCoo;
|
||||||
|
int longeurTTBonhome = jambe.Bas.CSG.Y - bonhomme.CIG.Y;// de pied.csg à bonhome.cig
|
||||||
|
newCoo = new Point(bonhomme.Coordonnee.X, ySol - longeurTTBonhome);
|
||||||
|
bonhomme.Coordonnee = newCoo;
|
||||||
|
bonhomme.Afficher(handle);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,6 +68,10 @@ namespace Bonhomme02
|
||||||
{
|
{
|
||||||
vecteur = Complex.FromPolarCoordinates(longueur, angle);
|
vecteur = Complex.FromPolarCoordinates(longueur, angle);
|
||||||
}
|
}
|
||||||
|
public Vecteur(Point origine, Point bout)
|
||||||
|
{
|
||||||
|
vecteur = new Complex(bout.X-origine.X, bout.Y - origine.Y);
|
||||||
|
}
|
||||||
public Vecteur(double longueur, ref Vecteur parent, bool flag) : this(longueur, parent.Angle - Math.PI / 2)
|
public Vecteur(double longueur, ref Vecteur parent, bool flag) : this(longueur, parent.Angle - Math.PI / 2)
|
||||||
{
|
{
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
|
|
Loading…
Reference in New Issue