Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.79 KB | None | 0 0
  1. package model;
  2.  
  3. import java.awt.RenderingHints.Key;
  4. import java.util.ArrayList;
  5.  
  6. import application.Main;
  7. import javafx.beans.property.DoubleProperty;
  8. import javafx.beans.property.IntegerProperty;
  9. import javafx.beans.property.SimpleDoubleProperty;
  10. import javafx.beans.property.SimpleIntegerProperty;
  11. import javafx.scene.input.KeyCode;
  12. import javafx.scene.input.KeyEvent;
  13. import vue.SceneJeu;
  14.  
  15. /**
  16. * Classe modèle parente de tous les objets personnage du jeu. Sert
  17. * temporairement pour le joueur seulement.
  18. *
  19. * @author Élie Bédard, Diego Cabas, Vincent McKibbin
  20. *
  21. */
  22. public class Personnage extends Acteur {
  23. private static final int POINTS_DE_VIE=30;
  24. /**
  25. * Vitesse de déplacement horizontal du personnage.
  26. */
  27. private double vitesseX;
  28.  
  29. /**
  30. * Vitesse de déplacement vertical du personnage.
  31. */
  32. private double vitesseY;
  33.  
  34. /**
  35. * Points de vie du personnage.
  36. */
  37. private int hp;
  38.  
  39. /**
  40. * Valeur de constante de gravité horizontale.
  41. */
  42. private double gravityX;
  43.  
  44. /**
  45. * Valeur de constante de gravité verticale.
  46. */
  47. private double gravityY;
  48.  
  49. private IntegerProperty vies;
  50.  
  51. private boolean veutsauter = false;
  52.  
  53. private int dommage;//
  54.  
  55. /**
  56. * Constructeur par défaut. Ne sert temporairement que pour un joueur avec des
  57. * valeurs par défaut.
  58. */
  59. public Personnage() {
  60. super(0, 0, 30, 30);
  61. setVitesseX(0);
  62. setVitesseY(0);
  63. setHp(POINTS_DE_VIE);
  64. //vies = new SimpleIntegerProperty(2);
  65. setGravityX(0);
  66. setGravityY(GRAV);
  67. setDommage(0);
  68.  
  69. }
  70.  
  71. public Personnage(double x, double y, double dX, double dY) {
  72. super(x, y, dX, dY);
  73. setGravityX(0);
  74. setGravityY(GRAV);
  75. }
  76.  
  77. /**
  78. * Vérifie s'il en est capable, et déplace le personnage pour une distance dans
  79. * un frame d'animation.
  80. *
  81. * @param p Plateforme ou obstacle pouvant empêcher le mouvement.
  82. */
  83. public void deplacement() {
  84.  
  85. for (Acteur a : Main.getJeu().getActeurs()) {
  86. if (a instanceof Plateforme) {
  87. Plateforme p = (Plateforme) a;
  88.  
  89. if (collisionPlateformeToTheLeft(p)) {
  90. // System.out.println("PlateformeXGauche");
  91. // setPosX(p.getDimX() + p.getPosX());
  92. // super.getHitBox().setX(getPosX());
  93.  
  94. if (getVitesseX() < 0) {
  95. setVitesseX(0);
  96. setPosX(p.getDimX() + p.getPosX());
  97. super.getHitBox().setX(getPosX());
  98. }
  99. }
  100. if (collisionPlateformeToTheRight(p)) {
  101. // System.out.println("PlateformeXDroite");
  102. // setPosX(p.getPosX() - getDimX());
  103. // super.getHitBox().setX(getPosX());
  104.  
  105. if (getVitesseX() > 0) {
  106. setVitesseX(0);
  107. setPosX(p.getPosX() - getDimX());
  108. super.getHitBox().setX(getPosX());
  109. }
  110.  
  111. }
  112.  
  113. if (collisionPlateformeOnTop(p)) {
  114. // System.out.println("PlateformePlafond");
  115.  
  116.  
  117. if (getVitesseY() < 0) {
  118. setVitesseY(0);
  119. setPosY(p.getDimY() + p.getPosY());
  120. super.getHitBox().setY(getPosY());
  121. }
  122. }
  123. if (collisionPlateformeOnBottom(p)) {
  124. // System.out.println("PlateformePlancher");
  125.  
  126.  
  127. if (getVitesseY() > 0) {
  128. setVitesseY(0);
  129. setPosY(p.getPosY() - getDimY());
  130. super.getHitBox().setY(getPosY());
  131. }
  132.  
  133. }
  134. }
  135.  
  136.  
  137. // if(this instanceof Projectile&& this.collision(a)){///
  138. // this.setPosY(2000);
  139. // }
  140. if(getHp()<0){//=
  141. setHp(POINTS_DE_VIE);
  142. setPosX(10);//
  143. setPosY(10);
  144. System.out.println(getHp());
  145. }
  146.  
  147.  
  148. }
  149.  
  150. // if(collsionPlateformeXD(p)){
  151. // System.out.println("dddddddddd");
  152. //
  153. // setPosX(getDimX()+p.getPosX());
  154. // setVitesseX(0);
  155. //
  156. // }
  157.  
  158. setPosX(getPosX() + getVitesseX());
  159. setPosY(getPosY() + getVitesseY());
  160. super.getHitBox().setX(getPosX());
  161. super.getHitBox().setY(getPosY());
  162. // setVitesseX(getVitesseX() + getGravityX());
  163. // if(jeu.getJoueur().collisionPlateformeY(jeu.getActeurs()))
  164. setGravityY(GRAV);
  165. setVitesseY(getVitesseY() + getGravityY());
  166.  
  167. // if (collisionPlateformePlafond(p)) {
  168. // System.out.println("PlateformePlafond");
  169. // setVitesseY(0);
  170. // setPosY(p.getPosY() + p.getDimY());
  171.  
  172. }
  173. // } else {
  174. //
  175. // if (collisionPlateformePlancher(p)) {
  176. // if (getVitesseY() < 0) {
  177. // setVitesseY(getVitesseY());
  178. // } else {
  179. // setVitesseY(0);
  180. //
  181. // }
  182. // setPosY(p.getPosY() - getDimY());
  183. // }
  184.  
  185. /**
  186. * Donne une valeur de vitesse verticale initiale au personnage. Cette valeur
  187. * diminue avec la constante gravitationnelle.
  188. */
  189. public void saut() {
  190. // le saut va devoir �tre calcul� selon la gravit� x et y lors de
  191. // l'impl�mentation
  192. setVitesseY(-5);
  193. }
  194.  
  195. public void peutSauter(Plateforme p) {
  196. // veutsauter va devoir �tre conditionnel quand on aura de la gravit� dans
  197. // diff�rentes directions
  198.  
  199. veutsauter = collisionPlateformeOnBottom(p);
  200. }
  201.  
  202. public Projectile lancerProjectile(double x, double y) {
  203. // tangente entre -pi/2 et pi/2
  204. double angle = (((getPosY() - y) >= 0 && (x - getPosX()) >= 0) || ((getPosY() - y) < 0) && (x - getPosX()) >= 0)
  205. ? Math.atan((getPosY() - y) / (x - getPosX()))
  206. : Math.atan((getPosY() - y) / (x - getPosX())) + Math.PI;
  207. return new Projectile(angle, this);
  208. }
  209.  
  210. /**
  211. * Vérifie si le personnage entre en collision avec une plateforme dans l'axe
  212. * vertical.
  213. *
  214. * @param p Plateforme avec laquelle on vérifie la collision.
  215. * @return True s'il y a une collision, sinon false.
  216. */
  217. // private boolean collisionPlateformePlafondY(Plateforme p) {
  218. // return getPosY() <= p.getPosY() + p.getDimY();
  219. // }
  220.  
  221. /**
  222. * V�rifie si le personnage entre en collision avec une plateforme.
  223. *
  224. * @param p Plateforme avec laquelle on v�rifie la collision.
  225. * @return True s'il y a une collision, sinon false.
  226. */
  227. private boolean collisionPlateforme(Plateforme p) {
  228.  
  229. return (super.getHitBox().intersects(p.getHitBox().getBoundsInParent()));
  230. // && collisionPlateformePlancher(p);
  231.  
  232. }
  233.  
  234. /**
  235. * V�rifie si la partie sup�rieure du personnage entre en collision avec une
  236. * plateforme dans l'axe vertical.
  237. *
  238. * @param p Plateforme avec laquelle on v�rifie la collision.
  239. * @return True s'il y a une collision, sinon false.
  240. */
  241.  
  242. private boolean collisionPlateformeOnTop(Plateforme p) {
  243.  
  244. return (collisionPlateforme(p) && getPosY() <= p.getPosY() + p.getDimY()
  245. && getPosY() + getDimY() > p.getPosY() + p.getDimY() && positionCorrespondEnX(p));
  246.  
  247. // return (getPosY() >= p.getPosY() + p.getDimY() / 2) &&
  248. // (collisionPlateformePlafondY(p)) && positionCorrespondEnX(p);
  249. }
  250.  
  251. /**
  252. * V�rifie si la partie inf�rieur du personnage entre en collision avec une
  253. * plateforme dans l'axe vertical.
  254. *
  255. * @param p Plateforme avec laquelle on v�rifie la collision.
  256. * @return True s'il y a une collision, sinon false.
  257. */
  258.  
  259. public boolean collisionPlateformeOnBottom(Plateforme p) {
  260. return (collisionPlateforme(p) && getPosY() + getDimY() >= p.getPosY() && getPosY() < p.getPosY()
  261. && positionCorrespondEnX(p));
  262. }
  263.  
  264. /**
  265. * V�rifie si la partie gauche du personnage entre en collision avec une
  266. * plateforme dans l'axe horizontale.
  267. *
  268. * @param p Plateforme avec laquelle on v�rifie la collision.
  269. * @return True s'il y a une collision, sinon false.
  270. */
  271. private boolean collisionPlateformeToTheLeft(Plateforme p) {
  272. return (collisionPlateforme(p) && getPosX() <= p.getPosX() + p.getDimX()
  273. && getPosX() + getDimX() > p.getPosX() + p.getDimX() && positionCorrespondEnY(p));
  274. }
  275.  
  276. /**
  277. * V�rifie si la partie droite du personnage entre en collision avec une
  278. * plateforme dans l'axe horizontale.
  279. *
  280. * @param p Plateforme avec laquelle on v�rifie la collision.
  281. * @return True s'il y a une collision, sinon false.
  282. */
  283. private boolean collisionPlateformeToTheRight(Plateforme p) {
  284. return (collisionPlateforme(p) && getPosX() + getDimX() >= p.getPosX() && getPosX() < p.getPosX()
  285. && positionCorrespondEnY(p));
  286. }
  287.  
  288. /**
  289. * V�rifie si le joueur est allign� avec une platforme sur l'axe horizontale
  290. *
  291. * @param p Plateforme avec laquelle on v�rifie l'allignement.
  292. * @return True si le joueur est allign�, sinon false.
  293. */
  294.  
  295. private boolean positionCorrespondEnY(Plateforme p) {
  296. return (getPosY() + getDimY() > p.getPosY()) && (getPosY() < p.getPosY() + p.getDimY());
  297. }
  298.  
  299. /**
  300. * V�rifie si le joueur est allign� avec une platforme sur l'axe verticale
  301. *
  302. * @param p Plateforme avec laquelle on v�rifie l'allignement.
  303. * @return True si le joueur est allign�, sinon false.
  304. */
  305. private boolean positionCorrespondEnX(Plateforme p) {
  306. return (getPosX() + getDimX() > p.getPosX()) && (getPosX() < p.getPosX() + p.getDimX());
  307. }
  308.  
  309. public double getVitesseX() {
  310. return vitesseX;
  311. }
  312.  
  313. public void setVitesseX(double vitX) {
  314. this.vitesseX = vitX;
  315. }
  316.  
  317. public double getVitesseY() {
  318. return vitesseY;
  319. }
  320.  
  321. public void setVitesseY(double vitY) {
  322. this.vitesseY = vitY;
  323. }
  324.  
  325. // public DoubleProperty getHpProperty() {
  326. // return hp;
  327. // }
  328.  
  329. // public double getHp() {
  330. // return hp.get();
  331. // }
  332. //
  333. // public void setHp(double newhp) {
  334. // this.hp.set(newhp);
  335. // }
  336.  
  337. public double getGravityX() {
  338. return gravityX;
  339. }
  340.  
  341. public void setGravityX(double grav) {
  342. this.gravityX = grav;
  343. }
  344.  
  345. public double getGravityY() {
  346. return gravityY;
  347. }
  348.  
  349. public void setGravityY(double grav) {
  350. this.gravityY = grav;
  351. }
  352.  
  353. public boolean isVeutsauter() {
  354. return veutsauter;
  355. }
  356.  
  357. public void setVeutsauter(boolean veutsauter) {
  358. this.veutsauter = veutsauter;
  359. }
  360.  
  361. public int getDommage() {
  362. return dommage;
  363. }
  364.  
  365. public void setDommage(int dommage) {
  366. this.dommage = dommage;
  367. }
  368.  
  369. public IntegerProperty viesProperty() {
  370. return vies;
  371. }
  372.  
  373. public int getVies() {
  374. return vies.get();
  375. }
  376.  
  377. public void setVies(int vies) {
  378. this.vies.set(vies);
  379. }
  380.  
  381. public void collisions() {// collisions avec ennemis
  382. for (Acteur a : Main.getJeu().getActeurs()) {
  383.  
  384. if (a instanceof Personnage) {
  385.  
  386. Personnage p = (Personnage) a;
  387.  
  388. if (collision(p) && !p.equals(this)) {// intersects
  389.  
  390. setHp(getHp() - p.getDommage());
  391.  
  392. }
  393. }
  394. }
  395.  
  396. for (Projectile p : Main.getJeu().getProjectiles()) {
  397. if (collision(p) && p.getSource() != this) {
  398. System.out.println(p.getSource());
  399. System.out.println(this);
  400. setHp(getHp() - p.getDommage());
  401.  
  402. System.out.println(getHp());
  403. p.setDommageTest(true);
  404. }
  405. }
  406. }
  407.  
  408. public int getHp() {
  409. return hp;
  410. }
  411.  
  412. public void setHp(int hp) {
  413. this.hp = hp;
  414. }
  415.  
  416. // }
  417. public boolean collision(Acteur a) {
  418.  
  419. return a.getPosX() + a.getDimX() > getPosX() && a.getPosX() < getPosX() + getDimX()
  420. && a.getPosY() + a.getDimY() > getPosY() && a.getPosY() < getPosY() + getDimY();
  421.  
  422. }
  423. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement