Android Open Source - libgdx-demo-pax-britannica Frigate A I






From Project

Back to project page libgdx-demo-pax-britannica.

License

The source code is released under:

Copyright (c) 2010 Ben Abraham, Renaud B?dard, Henk Boom, Daniel Burton, Matthew Gallant Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated ...

If you think the Android project libgdx-demo-pax-britannica listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package de.swagner.paxbritannica.frigate;
// ww w.  ja  va  2 s.  c  o m
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector2;

import de.swagner.paxbritannica.Ship;
import de.swagner.paxbritannica.Targeting;

public class FrigateAI {
  private Vector2 target_fuzzy_pos = new Vector2();
  private boolean stopping = false;
  
  public Ship target;

  private Frigate frigate;

  public FrigateAI(Frigate frigate) {
    this.frigate = frigate;
  }

  public void retarget() {
    target = Targeting.getNearestOfType(frigate, 0);
    if (target == null) {
      target = Targeting.getNearestOfType(frigate, 1);
    }
    if (target == null) {
      target = Targeting.getNearestOfType(frigate, 2);
    }
    if (target == null) {
      target = Targeting.getNearestOfType(frigate, 3);
    }  
    
    if (target != null) {
      Vector2 random = new Vector2(MathUtils.cos((float) ((MathUtils.random() * MathUtils.PI * 2) * Math.sqrt(MathUtils.random()))),
                    MathUtils.sin((float) ((MathUtils.random() * MathUtils.PI * 2) * Math.sqrt(MathUtils.random()))));
      target_fuzzy_pos.set(target.collisionCenter).add(random.scl(250));
    }
  }

  public void update() {
    if (target == null || !target.alive || MathUtils.random() < 0.001f) {
      retarget();
    }

    if (target != null) {
      float target_distance = target.collisionCenter.dst(frigate.collisionCenter);
      float speed_square = frigate.velocity.dot(frigate.velocity);

      if (frigate.isReadyToShoot() && speed_square > 0) {
          stopping = true;
      } else if(frigate.isEmpty()) {
          stopping = false;
      }

        if(!stopping) {
          if(target_distance < 150) {
            //not too close!
            frigate.goAway(target_fuzzy_pos, true);
          } else {
            frigate.goTowards(target_fuzzy_pos, true);
          }
        }
        
        // Shoot when not moving and able to fire
        if(!frigate.isEmpty() && speed_square < 0.1) {
            frigate.shoot();
        }
      
    }
  }
}




Java Source Code List

de.swagner.paxbritannica.Bullet.java
de.swagner.paxbritannica.Collision.java
de.swagner.paxbritannica.Constants.java
de.swagner.paxbritannica.DefaultScreen.java
de.swagner.paxbritannica.GameInstance.java
de.swagner.paxbritannica.GameScreen.java
de.swagner.paxbritannica.IOSLauncher.java
de.swagner.paxbritannica.PaxBritannica.java
de.swagner.paxbritannica.Resources.java
de.swagner.paxbritannica.Ship.java
de.swagner.paxbritannica.Targeting.java
de.swagner.paxbritannica.android.AndroidLauncher.java
de.swagner.paxbritannica.background.BackgroundFXRenderer.java
de.swagner.paxbritannica.background.Debris.java
de.swagner.paxbritannica.background.Fish.java
de.swagner.paxbritannica.bomber.Bomb.java
de.swagner.paxbritannica.bomber.BomberAI.java
de.swagner.paxbritannica.bomber.Bomber.java
de.swagner.paxbritannica.client.HtmlLauncher.java
de.swagner.paxbritannica.desktop.DesktopLauncher.java
de.swagner.paxbritannica.factory.EasyEnemyProduction.java
de.swagner.paxbritannica.factory.FactoryProduction.java
de.swagner.paxbritannica.factory.HardEnemyProduction.java
de.swagner.paxbritannica.factory.MediumEnemyProduction.java
de.swagner.paxbritannica.factory.PlayerProduction.java
de.swagner.paxbritannica.factory.Production.java
de.swagner.paxbritannica.fighter.FighterAI.java
de.swagner.paxbritannica.fighter.Fighter.java
de.swagner.paxbritannica.fighter.Laser.java
de.swagner.paxbritannica.frigate.FrigateAI.java
de.swagner.paxbritannica.frigate.Frigate.java
de.swagner.paxbritannica.frigate.MissileAI.java
de.swagner.paxbritannica.frigate.Missile.java
de.swagner.paxbritannica.help.Help.java
de.swagner.paxbritannica.mainmenu.Countdown.java
de.swagner.paxbritannica.mainmenu.FactorySelector.java
de.swagner.paxbritannica.mainmenu.MainMenu.java
de.swagner.paxbritannica.particlesystem.BigBubbleParticleEmitter.java
de.swagner.paxbritannica.particlesystem.BubbleParticleEmitter.java
de.swagner.paxbritannica.particlesystem.ExplosionParticleEmitter.java
de.swagner.paxbritannica.particlesystem.ParticleEmitter.java
de.swagner.paxbritannica.particlesystem.Particle.java
de.swagner.paxbritannica.particlesystem.SparkParticleEmitter.java
de.swagner.paxbritannica.settings.Settings.java