From bc591200eeee84bdc8077d1904983a906940e7af Mon Sep 17 00:00:00 2001 From: Louis <malterre.louis@laposte.net> Date: Wed, 2 Nov 2022 17:01:42 +0100 Subject: [PATCH] physique et deplacement implementes, j'ai garde une feuille avec les equations physiques si jamais. LM --- .../src/main/java/entity/Character.java | 24 +++++++++++++-- .../main/java/environnement/Coordonnees.java | 29 +++++++++++++----- .../src/main/java/environnement/Physique.java | 6 ++++ .../target/classes/entity/Character.class | Bin 537 -> 1187 bytes .../classes/environnement/Coordonnees.class | Bin 763 -> 1092 bytes 5 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 MAVENProject/src/main/java/environnement/Physique.java diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java index c08c885..afec980 100644 --- a/MAVENProject/src/main/java/entity/Character.java +++ b/MAVENProject/src/main/java/entity/Character.java @@ -1,18 +1,36 @@ package entity; import environnement.Coordonnees; +import environnement.Physique; public class Character extends Entity{ Coordonnees coord; - int vitesseMax; // vitesse max + double vitesseMax; // vitesse max + double vitesseActuX = 0; // vitesse actuelle supposée nulle au départ + double vitesseActuZ = 0; + double m; - public Character(Coordonnees c,int vitesseMax){ + public Character(Coordonnees c,int vitesseMax,double m){ super(c,vitesseMax); + this.m = m; } - public void deplacements(){ + public void deplacements(double commandX,double commandZ,int alpha){ // alpha indique si il est au sol ou non, il vaut 0 ou 1 en fonction + double delta = 0.1; // pas de temps = 0.1s + //on actualise les positions + double newX,newZ; + newX = -Physique.lambda/m*(vitesseActuX - commandX)*Math.exp(-Physique.lambda/m*delta) + commandX*delta + coord.getX(); + newZ = ((alpha-1)*Physique.g + commandZ)/2*delta*delta + vitesseActuZ*delta + coord.getZ(); + coord = new Coordonnees(newX, newZ); + + //on actualise les vitesses + vitesseActuX = (vitesseActuX - commandX)*Math.exp(-Physique.lambda*delta/m); + vitesseActuX += commandX; + vitesseActuZ += ((alpha-1) + commandZ)*Physique.g; + + } public void attaque(){ diff --git a/MAVENProject/src/main/java/environnement/Coordonnees.java b/MAVENProject/src/main/java/environnement/Coordonnees.java index 78857cb..79ac542 100644 --- a/MAVENProject/src/main/java/environnement/Coordonnees.java +++ b/MAVENProject/src/main/java/environnement/Coordonnees.java @@ -1,23 +1,36 @@ package environnement; -import java.lang.ProcessBuilder.Redirect.Type; - +import entity.Character; import entity.Entity; public class Coordonnees { - int x; - int z; + double x; + double z; - public Coordonnees(int x,int z){ - this.x = x; - this.z = z; + public Coordonnees(double newX,double newZ){ + this.x = newX; + this.z = newZ; } public static int distance(Object o1,Object o2){ - //if ((o1 instanceof Entity) || (o2 instanceof Entity))return Math.sqrt(Math.pow(o1.coord.x - o2.coord.x, 2) + Math.pow(o1.coord.y - o2.coord.y,2)); + //if (((o1 instanceof Entity) || (o1 instanceof Bloc)) && ((o2 instanceof Entity) || (o2 instanceof Bloc)))return Math.sqrt(Math.pow(o1.coord.x - o2.coord.x, 2) + Math.pow(o1.coord.y - o2.coord.y,2)); + //a retoucher selon le reste du programme return 0; } + public void testOrdiVerdun(){ + Entity e = new Character(this, 10,100); + e.attaque(); //juste les msg d'erreurs me triggeraient System.out.println("test"); } + + public double getX() { + return x; + } + + public double getZ() { + return z; + } + + } diff --git a/MAVENProject/src/main/java/environnement/Physique.java b/MAVENProject/src/main/java/environnement/Physique.java new file mode 100644 index 0000000..340dc8e --- /dev/null +++ b/MAVENProject/src/main/java/environnement/Physique.java @@ -0,0 +1,6 @@ +package environnement; + +public class Physique { + public static final double g = 9.81; // pesanteur + public static final double lambda = 3; // coefficient de frottements +} diff --git a/MAVENProject/target/classes/entity/Character.class b/MAVENProject/target/classes/entity/Character.class index 961cd825e992b33e19ad48ed340b6573797eac2d..3dec24c10c9c1448efe7e302ef63706d72ddde84 100644 GIT binary patch literal 1187 zcmX^0Z`VEs1_oOOH+BXlMh1b@ypqh4N`2>y#G=IHlGGx01{OvJUZ|)mSdx)}H90@O zD20(h+9x%yEVC#-FE2GWHLpb986*tir50N=GH{h;mZTOJr}`#VFfuT@Ff#B!1ss!0 zN+VFYQH%_Xxr_{KHko;uC3cJq3L1Ef_H@w<V`N})&QD3@Vqj(v;9=ll5M*SK$E!y( zjFW+pL70bulYs-o66Imwg0RGS7`PcY7#a9|GV@aXN^_G^i$W5Ua#9%?gnaUo6LZ26 zi!wocs31#8MrJWc4jL%%pt5FUU`%FYVDw~U;7Lg>$Vp5Fhe|Oc1Dl46i>GE7oBht2 zATW#V00#pYa51PdsIxPuF*5LFC6*=X=OpH(>-#2_WbiO(FlaI|FsD`&Ffy=cxM;e7 z+^o&Rz{<eJ#h}Ze&(5I7$RLR`_<0x%7z`O1SkhBVA{ZH%H8fq=9F*tn2z=ct&*lKO znt=gijyVs51x#TSNWcmdnAVI8tQs!hQ07R^&&^HDONn4)fH9*O8CVl@3NjKI8CX+N zb4n5!8CddC%OfCE6e9zBVo6D2VQDJZ;xI-AuHgLAqU2P!Oi-Be!NW@r<Yfj$21W*E z1_lOJFlGb0jhz7!KAcdR3rcf?X=VmS1|9}p21W)x1_p*a24=8cF)eMG?F{@{d|MfW zK!k{v=2ix=jSLJ7ObikX3=CpmReTI=44e$y3|tHX4EzkD41x@j3=9lf3@l(3QVh~y z`^6Y!7}yvX!D8$TvJ6aM7RYvx-Es`_5W5+b7}yzj7#J89h%hKvvWYM#X>DN;%h%e% zAf%q24dY6%W$$26$yS$O%TCtX!l1Q{K_}UgLzI;zrCo%<C|fgGgux_Vf-PHuEn8~~ zg9t*IS+XUU)@}yfNC^%JuI&t#TN$*pAZCj&C_z+<<%5g{`8X0}X)=^00yZ6FvQc*O zRt6D7C@6tLP=tY%L4v`EL6RYoL5d-RL6)JBL5`uDL7rhggAzDIJQ&zP{$hZI$N~l% z1`cqDEMTx@-~h+i0tPz<Sq4@HR)*OO_6!^hYz#&Wc?=E=91I)`kqqt(jtm?OTnvm1 kP7KbF@M6$rU;vxJh;R@jnAO0R@<1e^mNGK9fFsWp0JksS3IG5A delta 327 zcmZ3?Ig^F!)W2Q(7#J9A86+lh#q)VGGO*cX=4F=HF*3+&Oth00@ze}sWMFa5Pf6us zU}oUuVc=xon#{@QDa(_RT9A{NoSK`OS5nN#z^nmM$evhIl2}-pIys3+y`G7Ifq|8Q zjR6GM88{di7?>FtLHZdO8Mql37(5x68JHOu7}&M6WwtZ$Y-C_yU}E57U|`^40BPl7 zU}NB6;Adc9P=F|75MU4lnZ>})AjH7NzzEXH05X_~fssL&K?G{7HUk4#E}ao!B1E+S b*fbunEF;u3Mg~y~ofsNLuxb<oJ6Ie5^i&>B diff --git a/MAVENProject/target/classes/environnement/Coordonnees.class b/MAVENProject/target/classes/environnement/Coordonnees.class index b721665537e0d9c15b3ec8b086e1f46c8566c5db..ef4cf4dd0d7862a73273609c012c89c0112e5c0d 100644 GIT binary patch delta 652 zcmey(dW3`P)W2Q(7#J9A8SE!=*@(C>GB8##GO*cX=4F=HF*2}fxVTJ=s^($IOD&IJ zWB^f76ECOgu`|dsG6<yRm1LGw>N{s779}Q^q!zI`L^6N@7lRywG7kd>g9;;qf`-pT z0Z9{UPZ!NFE(SFQ4R!`~Mh0G}URSUYJPeu)yo?O&i6te8g{7&S4B8C3><l`S9T-KK z^%(RgM=&aA8!|Gml%y7ya4{G&n6fjNFfs^dC6*=XXXfh%6lLa>1eX-0Cg$=mm@$}7 zUd*VX!I;X(!0&@%jWr_!OL}Ta1S12phNcUI6E*oLqjfzi10w?m11AF`0~Z4WLnH$; z11kdq1HaaG25v3&tqgoxnp+tJHZm|UFfj-*Ffa%)urM$%a51nja5Hc+@G$T(@G=N9 zFfb@EFoU!)h%ktP!-1bcjDd}T5iBOoz{bGLz{w!NAPKd`jDeAX31lYo<a#E#dMO5J zuqGx383t(vMg~R(Sq5IH(r5-Yuu|#W404fL0$d^t3fmc!e6+VQsBU7=5;EAvV1({E zF$O*caRwm<2?i+!NwDk0AVxr42XeCogC*D^D+X(ZT8Q8E8JNHhX4Trlz_%XcI<Su+ izK{W%!vj$OHHVSGhQS)@Ok~Xh=$aL<YPJPiVFv(7%~z@b delta 310 zcmX@Y@tc+F)W2Q(7#J9A8FVIc*@$>DGB8##GO*cX=4F=HF*2}fczRBZs-E~bnS+x- zmO-AKL2mLvMp0%32F1xY85OjZ85vkgQj1Ht7*rY5*%{Or8HBSE%M$f7^YsIYGV@A; zONvqxb9opv7&IrVFsV!~VzP8%W?*FCVBln6WZ+_8V2EU3Vqj)qVBpu<&cLlDy_JDa zOJ*yBz(xiJ1||j}1_lNp1{MYe25trx1|9}Z23`g}2ENH}nZ!j|8Q2&YK^hs@8Q2(@ z7&sZk7{n(_GV8}lFi0|h026~0gCqkZ10#bp125D%a|R}`F3wF1GD1q*7*r4zaWOD4 hFffQRa4?852s1D+@IVwYh%ksUFfcGOXn~!i4FIU|Dl7m1 -- GitLab