Enemy.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package model.drawObjects;
  2. import java.awt.Color;
  3. import java.awt.Graphics2D;
  4. import java.awt.geom.Line2D;
  5. import model.objects.Path;
  6. public class Enemy extends DrawObject {
  7. public static final int distanceToOctagon = 1000;
  8. private final double secondsToEnd = 3;
  9. private int length,timeToClick = 10,currentTimeToClick;
  10. private double lengthOf1Side,distanceFromStart;//lengthOf1Side wordt alleen gebruikt als de lijn een schuine lijn is.
  11. public Line2D enemy;
  12. private Color c;
  13. private boolean clickable = false;
  14. private Path path;
  15. public Enemy(int pathID,int lengthOfEnemy,Color c,Path path){
  16. super();
  17. this.length = lengthOfEnemy;
  18. // System.out.println(this.length*this.length/2);
  19. // System.out.println(Math.sqrt(Math.pow(this.length,2)/2));
  20. lengthOf1Side = Math.sqrt(Math.pow(lengthOfEnemy,2)/2);
  21. this.c = c;
  22. this.index = pathID;
  23. this.path = path;
  24. double beginX, beginY,endX = 0,endY = 0;
  25. beginX = path.getX1();
  26. beginY = path.getY1();
  27. //the 8 richtingen van de octagon
  28. switch(index){
  29. case 0:
  30. endY -= this.length;
  31. break;
  32. case 1:
  33. endY -= lengthOf1Side;
  34. endX += lengthOf1Side;
  35. break;
  36. case 2:
  37. endX -= this.length;
  38. break;
  39. case 3:
  40. endY += lengthOf1Side;
  41. endX += lengthOf1Side;
  42. break;
  43. case 4:
  44. endY += this.length;
  45. break;
  46. case 5:
  47. endY += lengthOf1Side;
  48. endX -= lengthOf1Side;
  49. break;
  50. case 6:
  51. endX -= this.length;
  52. break;
  53. case 7:
  54. endY -= lengthOf1Side;
  55. endX -= lengthOf1Side;
  56. break;
  57. }
  58. endX += beginX;
  59. endY += beginY;
  60. enemy = new Line2D.Double(beginX, beginY, endX, endY);
  61. }
  62. @Override
  63. public void draw(Graphics2D g2) {
  64. g2.setPaint(c);
  65. g2.draw(enemy);
  66. }
  67. @Override
  68. public void update(float factor) {
  69. if(clickable){
  70. currentTimeToClick++;
  71. }
  72. distanceFromStart += (distanceToOctagon/(secondsToEnd*1000))*factor;
  73. double x1,x2,y1,y2;
  74. x1 = enemy.getX1();
  75. x2 = enemy.getX2();
  76. y1 = enemy.getY1();
  77. y2 = enemy.getY2();
  78. double angleX,angleY;
  79. angleX = Math.cos(Math.toRadians(45))*distanceFromStart;
  80. angleY = Math.sin(Math.toRadians(45))*distanceFromStart;
  81. System.out.println(Math.toRadians(45)*distanceFromStart);
  82. System.out.println(angleX+" - "+angleY);
  83. switch(index){
  84. case 0:
  85. y1 = path.getY1() + distanceFromStart;
  86. y2 = y1 - length;
  87. break;
  88. case 1:
  89. // x1 -= speedX;
  90. x1 = path.getX1() - angleX;
  91. x2 = x1 + lengthOf1Side;
  92. y1 = path.getY1() + angleY;
  93. y2 = y1 - lengthOf1Side;
  94. break;
  95. case 2:
  96. x1 = path.getX1()-distanceFromStart;
  97. x2 = x1 + length;
  98. break;
  99. case 3:
  100. x1 = path.getX1() - angleX;
  101. x2 = x1 + lengthOf1Side;
  102. y1 = path.getY1() - angleY;
  103. y2 = y1 + lengthOf1Side;
  104. break;
  105. case 4:
  106. y1 = path.getY1() - distanceFromStart;
  107. y2 = y1 + length;
  108. break;
  109. case 5:
  110. x1 = path.getX1() + angleX;
  111. x2 = x1 - lengthOf1Side;
  112. y1 = path.getY1() - angleY;
  113. y2 = y1 + lengthOf1Side;
  114. break;
  115. case 6:
  116. x1 = path.getX1() + distanceFromStart;
  117. x2 = x1 - length;
  118. break;
  119. case 7:
  120. x1 = path.getX1() + angleX;
  121. x2 = x1 - lengthOf1Side;
  122. y1 = path.getY1() + angleY;
  123. y2 = y1 - lengthOf1Side;
  124. break;
  125. }
  126. enemy.setLine(x1, y1, x2, y2);
  127. }
  128. public Color getColor() {
  129. return c;
  130. }
  131. public void setColor(Color c) {
  132. this.c = c;
  133. }
  134. public Line2D getEnemy() {
  135. return enemy;
  136. }
  137. public void setBullet(Line2D bullet) {
  138. this.enemy = bullet;
  139. }
  140. public void clickable(){
  141. clickable = true;
  142. }
  143. /**
  144. * deze methode kijkt hoeveel frame je nog hebt om te klikken op het moment dat je bolletje in de hitzone zit
  145. * @return
  146. */
  147. public boolean finised(){
  148. if(currentTimeToClick >= timeToClick){
  149. return true;
  150. }
  151. return false;
  152. }
  153. public boolean isClickable(){
  154. return clickable;
  155. }
  156. public int getTimeLeftToClick() {
  157. return currentTimeToClick;
  158. }
  159. }