Пример #1
0
  public void run() {
    if (life <= 0) {
      for (int d = (int) (3 * random()); d > 0; d--) {
        Room.items.add(new Health(x + w / 2, y + h / 2, vx, vy));
      }
      AudioPack.playClip(screams[(int) (screams.length * random())]);
      dead = true;
    }
    if (life > 0 && !dead) {
      // if(Thread.interrupted())break;
      // Clock.waitFor();
      // if(Clock.dead)break;
      curFrame++;
      curFrame %= 20;
      image = images[curFrame / 5];
      if (Collisions.collides(this, Player.player)) {
        Player.damage(1);
      }

      if (vMultiplier == 0) vMultiplier = 10 * Float.MIN_VALUE;

      vx *= vMultiplier;
      vy *= vMultiplier;

      x += vx;
      // if(x<0||x>Room.WIDTH){vx=-vx;}
      for (Wall wal : Room.walls) {
        if (vx == 0) break;
        if (Collisions.willCollide(this, wal, vx, 0)) {
          if (vx > 0) {
            x = wal.x - w;
          } else {
            x = wal.x + wal.w;
          }
          vx = -vx;
          break;
        }
      }

      vx /= vMultiplier;
      vy /= vMultiplier;

      vMultiplier += .03 * (1 - vMultiplier > 0 ? 1 : (abs(vMultiplier) <= .03 ? 0 : -1));
    }
  }
Пример #2
0
  public void run() {
    // boolean frame=Clock.frame;
    if (life != 0) {
      counter++;
      vY -= .07;
      int p = (counter / 3) % 8;
      image = ani[p];

      if (life > -1) {
        image = ani[min(life, 8) / 2 + 8];
      }

      // Clock.waitFor(frame=!frame);
      // if(Clock.dead)break;
      life--;
      if (life < 0) {
        x += vX;
        y -= vY;
      } else return;
      /*
       * if (!(x>0&&x<Jump.WIDTH&&y>0&&y<Jump.HEIGHT)&&life<0){vY=vX=0;
       * life=60; w=h=16; x-=round(10*random()); y-=round(10*random());
       * //AudioPack.playAudio("BExplosion2.wav",0.05);
       * AudioPack.playClip(boom); }
       */
      boolean collided = false;
      for (int i = 0; i < Room.walls.size(); i++) {
        Wall wal = Room.walls.get(i);
        if (vY == 0 && vX == 0) break;
        if (Collisions.collides(this, wal)) {

          collided = true;
          if (wal.damagable) {
            ((DamageableWall) wal).life -= 40;
            // if
            // (Jump.kraidLife<=0&&Jump.countdown<0){Jump.countdown=500;
            // AudioPack.playAudio("Ima Firen Mah Lazor!.wav",0.1);
            // }
          }
        }
      }

      if (Collisions.collides(this, Player.player)) {
        collided = true;
        Player.damage(40);
      }
      if (collided) {
        double offset = Math.PI * ((80 * random()) % 8) / 4;
        Room.projectiles.add(
            new RockProjectile(x, y, (float) cos(offset) * 3, (float) sin(offset) * 3));
        Room.projectiles.add(
            new RockProjectile(
                x, y, (float) cos(offset + PI * 2 / 3) * 3, (float) sin(offset + PI * 2 / 3) * 3));
        Room.projectiles.add(
            new RockProjectile(
                x, y, (float) cos(offset + PI * 4 / 3) * 3, (float) sin(offset + PI * 4 / 3) * 3));

        life = 12;
        w = h = 11;
        x -= round(vY * random());
        y -= round(vX * random());
        vY = vX = 0;
        // AudioPack.playAudio("BExplosion2.wav",0.05);
        AudioPack.playClip(boom);
      }

    } else dead = true;
  }