/** onScannedRobot: What to do when you see another robot */
 public void onScannedRobot(ScannedRobotEvent e) {
   if (isFriend(e.getName())) {
     return;
   }
   Enemy en;
   if (targets.containsKey(e.getName())) {
     en = (Enemy) targets.get(e.getName());
   } else {
     en = new Enemy();
     targets.put(e.getName(), en);
   }
   // the next line gets the absolute bearing to the point where the bot is
   double absbearing_rad = (getHeadingRadians() + e.getBearingRadians()) % (2 * PI);
   // this section sets all the information about our target
   en.name = e.getName();
   double h = normaliseBearing(e.getHeadingRadians() - en.heading);
   h = h / (getTime() - en.ctime);
   en.changehead = h;
   en.x = getX() + Math.sin(absbearing_rad) * e.getDistance(); // works out
   // the x
   // coordinate
   // of where
   // the
   // target is
   en.y = getY() + Math.cos(absbearing_rad) * e.getDistance(); // works out
   // the y
   // coordinate
   // of where
   // the
   // target is
   en.bearing = e.getBearingRadians();
   en.heading = e.getHeadingRadians();
   en.ctime = getTime(); // game time at which this scan was produced
   en.speed = e.getVelocity();
   en.distance = e.getDistance();
   en.live = true;
   if ((en.distance < target.distance) || (target.live == false)) {
     target = en;
   }
 }
Exemplo n.º 2
0
 private void spawn() {
   Enemy e = new Enemy();
   e.x = Game.water.width;
   e.y = Game.water.getAt((int) e.x);
   objects.add(e);
 }
Exemplo n.º 3
0
  public void specialAttack(Graphics2D g, Input p1) {

    swordSpecHelper(g);

    if (justPressed(p1, Button.B)) {
      if (player.weapon.name.equals("Short Sword")) {
        if (swordSpec) {
          swordSpec = false;

          // Stop special noise
          wepspec.stop();
          wepspec.reset();

        } else if (!swordSpec && player.mana > 0) {
          // Start special noise
          weps.loadSound("Resources/Sounds/special.wav");
          weps.run();

          wepspec.loadSound("Resources/Sounds/fire.wav");
          wepspec.runLoop();
          swordSpec = true;
        }
      }
      if (player.weapon.name.equals("Greatsword") && player.mana >= 40 && spDelay == 0) {

        // Greatsword spec sound
        weps.loadSound("Resources/Sounds/special.wav");
        weps.run();

        player.mana -= 40;
        spDelay = player.weapon.delay;
        for (Enemy enemy : wave.enemies.values()) {
          if (enemy.x + enemy.size / 2 + arena.xOffset > player.x - 128
              && enemy.x - enemy.size / 2 + arena.xOffset < player.x + 128
              && enemy.y + enemy.size / 2 + arena.yOffset > player.y - 128
              && enemy.y - enemy.size / 2 + arena.yOffset < player.y + 128) {
            enemy.health -= player.weapon.spDamage;
            // UP
            if (enemy.x + arena.xOffset + enemy.size / 2 >= player.x - 32
                && enemy.x + arena.xOffset - enemy.size / 2 <= player.x + 32
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y - 96
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y - 33) {
              enemy.y -= 32;
            }
            // DOWN
            if (enemy.x + arena.xOffset - enemy.size / 2 <= player.x + 32
                && enemy.x + arena.xOffset + enemy.size / 2 >= player.x - 32
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y + 96
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y + 33) {
              enemy.y += 32;
            }
            // LEFT
            if (enemy.x + arena.xOffset - enemy.size / 2 <= player.x - 32
                && enemy.x + arena.xOffset + enemy.size / 2 >= player.x - 96
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y + 32
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y - 32) {
              enemy.x -= 32;
            }
            // RIGHT
            if (enemy.x + arena.xOffset + enemy.size / 2 >= player.x + 32
                && enemy.x + arena.xOffset - enemy.size / 2 <= player.x + 96
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y - 32
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y + 32) {
              enemy.x += 32;
            }
          }
        }
        g.drawRect((int) (player.x - 128), (int) (player.y - 128), 256, 256);
      }
      if (player.weapon.name.equals("Spear") && player.mana >= 25 && spDelay == 0) {

        wepspec.loadSound("Resources/Sounds/special.wav");
        wepspec.run();

        player.mana -= 25;
        spDelay = player.weapon.delay;
        // UP
        if (player.direction == 0) {
          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + enemy.size / 2 + arena.xOffset > player.x - player.size / 2 - 16
                && enemy.x - enemy.size / 2 + arena.xOffset < player.x + player.size / 2 + 16
                && enemy.y + enemy.size / 2 + arena.yOffset > player.y - player.size / 2 - 192
                && enemy.y - enemy.size / 2 + arena.yOffset < player.y - player.size / 2) {
              enemy.health -= player.weapon.spDamage;
              enemy.y -= 32;
            }
          }
          g.drawRect(
              (int) (player.x - player.size / 2 - 16),
              (int) (player.y - player.size / 2 - 192),
              96,
              192);
        }
        // DOWN
        if (player.direction == 1) {
          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + enemy.size / 2 + arena.xOffset > player.x - player.size / 2 - 16
                && enemy.x - enemy.size / 2 + arena.xOffset < player.x + player.size / 2 + 16
                && enemy.y + enemy.size / 2 + arena.yOffset > player.y + player.size / 2
                && enemy.y - enemy.size / 2 + arena.yOffset < player.y + player.size / 2 + 192) {
              enemy.health -= player.weapon.spDamage;
              enemy.y += 32;
            }
          }
          g.drawRect(
              (int) (player.x - player.size / 2 - 16), (int) (player.y + player.size / 2), 96, 192);
        }
        // LEFT
        if (player.direction == 2) {
          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + enemy.size / 2 + arena.xOffset > player.x - player.size / 2 - 192
                && enemy.x - enemy.size / 2 + arena.xOffset < player.x - player.size / 2
                && enemy.y + enemy.size / 2 + arena.yOffset > player.y - player.size / 2 - 16
                && enemy.y - enemy.size / 2 + arena.yOffset < player.y + player.size / 2 + 16) {
              enemy.health -= player.weapon.spDamage;
              enemy.x -= 32;
            }
          }
          g.drawRect(
              (int) (player.x - player.size / 2 - 192),
              (int) (player.y - player.size / 2 - 16),
              192,
              96);
        }
        // RIGHT
        if (player.direction == 3) {
          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + enemy.size / 2 + arena.xOffset > player.x + player.size / 2
                && enemy.x - enemy.size / 2 + arena.xOffset < player.x + player.size / 2 + 192
                && enemy.y + enemy.size / 2 + arena.yOffset > player.y - player.size / 2 - 16
                && enemy.y - enemy.size / 2 + arena.yOffset < player.y + player.size / 2 + 16) {
              enemy.health -= player.weapon.spDamage;
              enemy.x += 32;
            }
          }
          g.drawRect(
              (int) (player.x + player.size / 2), (int) (player.y - player.size / 2 - 16), 192, 96);
        }
      }
    }
    if (spDelay > 0) {
      spDelay--;
    }
  }
Exemplo n.º 4
0
  public void basicAttack(Graphics2D g, Input p1) {

    if (justPressed(p1, Button.A) && delay == 0) {
      delay = player.weapon.delay;
      if (player.weapon.name.equals("Short Sword")) {

        weps.loadSound("Resources/Sounds/short.wav");
        weps.run();

        // UP
        if (player.direction == 0) {
          AnimationLoader.wick.setAnimation(14);
          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset - enemy.size / 2 <= player.x + 48
                && enemy.x + arena.xOffset + enemy.size / 2 >= player.x - 48
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y - 33
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y - 96) {
              if (swordSpec) {
                enemy.health -= (1.5 * player.weapon.damage);
              } else {
                enemy.health -= player.weapon.damage;
              }
              generateMana();
            }
          }
          g.drawRect((int) (player.x - 48), (int) (player.y - 96), weapon.width, weapon.length);
        }
        // DOWN
        if (player.direction == 1) {
          AnimationLoader.wick.setAnimation(4);
          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset + enemy.size / 2 >= player.x - 48
                && enemy.x + arena.xOffset - enemy.size / 2 <= player.x + 48
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y + 36
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y + 96) {
              if (swordSpec) {
                enemy.health -= (1.5 * player.weapon.damage);
              } else {
                enemy.health -= player.weapon.damage;
              }
              generateMana();
            }
          }
          g.drawRect((int) (player.x - 48), (int) (player.y + 32), weapon.width, weapon.length);
        }
        // LEFT
        if (player.direction == 2) {
          AnimationLoader.wick.setAnimation(6);
          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset + enemy.size / 2 >= player.x - 96
                && enemy.x + arena.xOffset - enemy.size / 2 <= player.x - 36
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y - 32
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y + 32) {
              if (swordSpec) {
                enemy.health -= (1.5 * player.weapon.damage);
              } else {
                enemy.health -= player.weapon.damage;
              }
              generateMana();
            }
          }
          g.drawRect((int) (player.x - 96), (int) (player.y - 48), weapon.length, weapon.width);
        }
        // RIGHT
        if (player.direction == 3) {
          AnimationLoader.wick.setAnimation(5);
          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset - enemy.size / 2 <= player.x + 96
                && enemy.x + arena.xOffset + enemy.size / 2 >= player.x + 36
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y + 32
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y - 32) {
              if (swordSpec) {
                enemy.health -= (1.5 * player.weapon.damage);
              } else {
                enemy.health -= player.weapon.damage;
              }
              generateMana();
            }
          }
          g.drawRect((int) (player.x + 32), (int) (player.y - 48), weapon.length, weapon.width);
        }
      }
      if (player.weapon.name.equals("Greatsword")) {

        weps.loadSound("Resources/Sounds/great.wav");
        weps.run();

        // UP
        if (player.direction == 0) {

          AnimationLoader.wick.setAnimation(15);

          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset + enemy.size / 2 > player.x - 32
                && enemy.x + arena.xOffset - enemy.size / 2 < player.x + 32
                && enemy.y + arena.yOffset + enemy.size / 2 > player.y - 96
                && enemy.y + arena.yOffset - enemy.size / 2 < player.y - 33) {
              enemy.health -= player.weapon.damage;
              enemy.y -= 32;
              generateMana();
            }
          }
          g.drawRect((int) (player.x - 96), (int) (player.y - 96), weapon.width, weapon.length);
        }
        // DOWN
        if (player.direction == 1) {
          AnimationLoader.wick.setAnimation(7);

          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset - enemy.size / 2 < player.x + 32
                && enemy.x + arena.xOffset + enemy.size / 2 > player.x - 32
                && enemy.y + arena.yOffset - enemy.size / 2 < player.y + 96
                && enemy.y + arena.yOffset + enemy.size / 2 > player.y + 33) {
              enemy.health -= player.weapon.damage;
              enemy.y += 32;
              generateMana();
            }
          }
          g.drawRect((int) (player.x - 96), (int) player.y, weapon.width, weapon.length);
        }
        // LEFT
        if (player.direction == 2) {
          AnimationLoader.wick.setAnimation(9);

          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset - enemy.size / 2 < player.x - 32
                && enemy.x + arena.xOffset + enemy.size / 2 > player.x - 96
                && enemy.y + arena.yOffset - enemy.size / 2 < player.y + 32
                && enemy.y + arena.yOffset + enemy.size / 2 > player.y - 32) {
              enemy.health -= player.weapon.damage;
              enemy.x -= 32;
              generateMana();
            }
          }
          g.drawRect((int) (player.x - 96), (int) (player.y - 96), weapon.length, weapon.width);
        }
        // RIGHT
        if (player.direction == 3) {
          AnimationLoader.wick.setAnimation(8);

          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset + enemy.size / 2 > player.x + 32
                && enemy.x + arena.xOffset - enemy.size / 2 < player.x + 96
                && enemy.y + arena.yOffset + enemy.size / 2 > player.y - 32
                && enemy.y + arena.yOffset - enemy.size / 2 < player.y + 32) {
              enemy.health -= player.weapon.damage;
              enemy.x += 32;
              generateMana();
            }
          }
          g.drawRect((int) player.x, (int) (player.y - 96), weapon.length, weapon.width);
        }
      }
      if (player.weapon.name.equals("Spear")) {

        weps.loadSound("Resources/Sounds/spear.wav");
        weps.run();

        // UP
        if (player.direction == 0) {
          AnimationLoader.wick.setAnimation(12);

          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset + enemy.size / 2 >= player.x + weapon.width
                && enemy.x + arena.xOffset - enemy.size / 2 <= player.x + weapon.width
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y - weapon.length - 32
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y - 32) {
              enemy.health -= player.weapon.damage;
              generateMana();
            }
          }
          g.drawRect((int) player.x, (int) (player.y - 160), weapon.width, weapon.length);
        }
        // DOWN
        if (player.direction == 1) {
          AnimationLoader.wick.setAnimation(13);

          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset + enemy.size / 2 >= player.x + weapon.width
                && enemy.x + arena.xOffset - enemy.size / 2 <= player.x + weapon.width
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y + 32
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y + weapon.length + 32) {
              enemy.health -= player.weapon.damage;
              generateMana();
            }
          }
          g.drawRect((int) player.x, (int) (player.y + 32), weapon.width, weapon.length);
        }
        // LEFT
        if (player.direction == 2) {
          AnimationLoader.wick.setAnimation(11);

          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset + enemy.size / 2 >= player.x - weapon.length - 32
                && enemy.x + arena.xOffset - enemy.size / 2 <= player.x - 32
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y + weapon.width
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y + weapon.width) {
              enemy.health -= player.weapon.damage;
              generateMana();
            }
          }
          g.drawRect((int) (player.x - 160), (int) player.y, weapon.length, weapon.width);
        }
        // RIGHT
        if (player.direction == 3) {
          AnimationLoader.wick.setAnimation(10);

          for (Enemy enemy : wave.enemies.values()) {
            if (enemy.x + arena.xOffset + enemy.size / 2 >= player.x + 32
                && enemy.x + arena.xOffset - enemy.size / 2 <= player.x + 32 + weapon.length
                && enemy.y + arena.yOffset + enemy.size / 2 >= player.y + weapon.width
                && enemy.y + arena.yOffset - enemy.size / 2 <= player.y + weapon.width) {
              enemy.health -= player.weapon.damage;
              generateMana();
            }
          }
          g.drawRect((int) (player.x + 32), (int) player.y, weapon.length, weapon.width);
        }
      }
    }
    if (delay > 0) {
      delay--;
    }
  }