Ejemplo n.º 1
0
 public void doDraw(Canvas canvas) {
   canvas.drawColor(Color.BLACK);
   for (Asteroid asteroid : asteroids) {
     asteroid.doDraw(canvas);
   }
   crossHair.doDraw(canvas);
 }
  private void renderObjects(float deltaTime) {
    GL10 gl = glGraphics.getGL();
    gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
    if (manage.getArAsteroids().size() > 0) {
      batcher.beginBatch(Manage_Assets.gtBoxCycle);
      for (int i = 0; i < manage.getArAsteroids().size(); i++) {
        Asteroid asr = manage.getArAsteroids().get(i);
        batcher.drawSprite(
            asr.getPosition().getX(),
            asr.getPosition().getY(),
            asr.getRadious_bounds().getRadius(),
            asr.getRadious_bounds().getRadius() / 2 * 3,
            Manage_Assets.gsCycle);
      }
      batcher.endBatch();
    }

    batcher.beginBatch(Manage_Assets.gtBoxCycle);
    batcher.drawSprite(
        manage.getPlayAsteroid().getPosition().getX(),
        manage.getPlayAsteroid().getPosition().getY(),
        manage.getPlayAsteroid().getRadious_bounds().getRadius(),
        manage.getPlayAsteroid().getRadious_bounds().getRadius() / 2 * 3,
        Manage_Assets.gsCycleBlue);
    batcher.endBatch();

    gl.glDisable(GL10.GL_BLEND);
  }
Ejemplo n.º 3
0
  /**
   * generates and adds asteroids
   *
   * @param count count of asteroids which should be generated
   * @param points the total amount of points which should be generated
   */
  private void generateAsteroids(int count, int points) {
    Integer availablePoints = points;

    for (int i = 0; i < count; i++) {

      int thisPoints = generateRandomPoints(availablePoints, count - i);
      Asteroid asteroid = generateAsteroidByPoints(thisPoints);

      if (asteroid.overlapingObjects(this.objects).size() >= 1
          || this.player.isWithinRange(asteroid, GENERATIONRADIUS)) {
        i--;
      } else {
        availablePoints -= thisPoints;
        this.objects.add(asteroid);
      }
    }
  }
Ejemplo n.º 4
0
  public void update(long deltaTime) {
    if (!collided) {
      totalTime += deltaTime;

      if (Keyboard.isKeyDown(Keyboard.KEY_A))
        angleDeg -=
            0.025f
                * (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)
                        || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)
                    ? 20
                    : (Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)
                            || Keyboard.isKeyDown(Keyboard.KEY_RCONTROL)
                        ? 5
                        : 10));

      if (Keyboard.isKeyDown(Keyboard.KEY_D))
        angleDeg +=
            0.025f
                * (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)
                        || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)
                    ? 20
                    : (Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)
                            || Keyboard.isKeyDown(Keyboard.KEY_RCONTROL)
                        ? 5
                        : 10));

      if (angleDeg > 360) angleDeg -= 360;
      else if (angleDeg < 0) angleDeg = 360 - angleDeg;

      for (Asteroid a : ((AsteroidsModule) Project.currentModule).getAsteroids())
        if (a.getArea().intersects(getArea())) collided = true;

      for (Bullet b : getBullets()) if (b != null && b.isFinished()) bullets.remove(b);

      for (Bullet b : getBullets()) if (b != null) b.update(deltaTime);
    }
  }
Ejemplo n.º 5
0
    public void doUpdate(double elapsed) {

      // viewport
      float leftArm = direction - (X_ANGLE_WIDTH / 2);
      if (leftArm < 0) leftArm += 360;
      float rightArm = direction + (X_ANGLE_WIDTH / 2);
      if (rightArm > 360) rightArm -= 360;
      float upperArm = inclination + (Y_ANGLE_WIDTH / 2);
      float lowerArm = inclination - (Y_ANGLE_WIDTH / 2);

      ArrayList<Asteroid> toRemove = new ArrayList<>();

      for (Asteroid asteroid : asteroids) {

        float azi = location.bearingTo(asteroid.getLocation());
        if (azi < 0) azi += 360;
        float inc =
            (float)
                Math.atan(
                    asteroid.getLocation().getAltitude()
                        / location.distanceTo(asteroid.getLocation()));

        asteroid.x = computeX(leftArm, rightArm, azi);
        asteroid.y = computeY(lowerArm, upperArm, inc);

        asteroid.doUpdate(elapsed);

        if (asteroid.hits <= 0) {
          toRemove.add(asteroid);
          score += 100;
        }
      }

      timeRemaining -= elapsed;

      asteroids.removeAll(toRemove);
      toRemove.clear();

      if (asteroids.size() < MAX_ASTEROIDS) {
        asteroids.add(new Asteroid(context, location));
      }

      if (timeRemaining <= 0) {
        switchScreen();
      }
    }