| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- package model.drawObjects.enemy;
- import java.awt.Color;
- import java.awt.Graphics2D;
- import java.awt.geom.Line2D;
- import java.awt.geom.Point2D;
- import model.drawObjects.DrawObject;
- public class Enemy extends DrawObject {
-
- private int length,timeToClick = 5,currentTimeToClick;
- private double speedX,speedY,lengthOf1Side;//lengthOf1Side wordt alleen gebruikt als de lijn een schuine lijn is.
- public Line2D enemy;
- private Color c;
- private boolean clickable = false;
- /**
- *
- * @param pathID
- * @param lengthOfEnemy
- * @param c
- * @param beginPoint
- * @param endPoint
- * @param steptsToEndPoint
- */
- public Enemy(int pathID,int lengthOfEnemy,Color c,double steptsToEndPoint,Point2D beginPoint,Point2D endPoint){
- super();
- this.length = lengthOfEnemy;
- // System.out.println(this.length*this.length/2);
- // System.out.println(Math.sqrt(Math.pow(this.length,2)/2));
- lengthOf1Side = Math.sqrt(Math.pow(lengthOfEnemy,2)/2);
- this.c = c;
- this.index = pathID;
- double beginX, beginY,endX = 0,endY = 0;
- beginX = beginPoint.getX();
- beginY = beginPoint.getY();
- endX = beginX;
- endY = beginY;
-
- //the 8 richtingen van de octagon
- switch(index){
- case 0:
- endY -= this.length;
- break;
- case 1:
- endY -= lengthOf1Side;
- endX += lengthOf1Side;
- break;
- case 2:
- endX -= this.length;
- break;
- case 3:
- endY += lengthOf1Side;
- endX += lengthOf1Side;
- break;
- case 4:
- endY += this.length;
- break;
- case 5:
- endY += lengthOf1Side;
- endX -= lengthOf1Side;
- break;
- case 6:
- endX += this.length;
- break;
- case 7:
- endY -= lengthOf1Side;
- endX -= lengthOf1Side;
- break;
- }
-
-
- enemy = new Line2D.Double(beginX, beginY, endX, endY);
- //bereken de lengte van de enemy tot het einde van de lijn
- double distanceX,distanceY;
- distanceX = (enemy.getX1() - endPoint.getX());
- distanceY = (enemy.getY1() - endPoint.getY());
- //de afstand mag niet negatief zijn
- if(distanceX < 0){
- distanceX *= -1;
- }
- if(distanceY < 0){
- distanceY *= -1;
- }
- // System.out.println("Index: "+index+"\tX afstand: "+distanceX+"\tY afstand: "+distanceY);
- //snelheid = afstand /tijd
- speedX = (distanceX /steptsToEndPoint);
- speedY = (distanceY /steptsToEndPoint);
- // System.out.println("Index: "+index+"\tX speed: "+speedX+"\tY speed: "+speedY);
- }
- @Override
- public void draw(Graphics2D g2) {
- g2.setPaint(c);
- g2.draw(enemy);
- }
- @Override
- public void update() {
- if(clickable){
- currentTimeToClick++;
- }
- double x1,x2,y1,y2;
- x1 = enemy.getX1();
- x2 = enemy.getX2();
- y1 = enemy.getY1();
- y2 = enemy.getY2();
-
- switch(index){
- case 0:
- y1 += speedY;
- y2 = y1 - length;
- break;
- case 1:
- x1 -= speedX;
- x2 = x1 + lengthOf1Side;
-
- y1 += speedY;
- y2 = y1 - lengthOf1Side;
- break;
- case 2:
- x1 -= speedX;
- x2 = x1 + length;
- break;
- case 3:
- x1 -= speedX;
- x2 = x1 + lengthOf1Side;
-
- y1 -= speedY;
- y2 = y1 + lengthOf1Side;
- break;
- case 4:
- y1 -= speedY;
- y2 = y1 + length;
- break;
- case 5:
- x1 += speedX;
- x2 = x1 - lengthOf1Side;
-
- y1 -= speedY;
- y2 = y1 + lengthOf1Side;
- break;
- case 6:
- x1 += speedX;
- x2 = x1 - length;
- break;
- case 7:
- x1 += speedX;
- x2 = x1 - lengthOf1Side;
-
- y1 += speedY;
- y2 = y1 - lengthOf1Side;
- break;
- }
- enemy.setLine(x1, y1, x2, y2);
- }
-
- public Color getColor() {
- return c;
- }
- public void setColor(Color c) {
- this.c = c;
- }
- public Line2D getEnemy() {
- return enemy;
- }
- public void setBullet(Line2D bullet) {
- this.enemy = bullet;
- }
-
- public void clickable(){
- clickable = true;
- }
-
- /**
- * deze methode kijkt hoeveel frame je nog hebt om te klikken op het moment dat je bolletje in de hitzone zit
- * @return
- */
- public boolean finised(){
- if(currentTimeToClick >= timeToClick){
- return true;
- }
- return false;
- }
-
- public boolean isClickable(){
- return clickable;
- }
-
- public int getTimeLeftToClick() {
- return currentTimeToClick;
- }
- }
|