Universe.java


Dosyayı İndir
package com.godoro.game.eater;

import com.godoro.game.eater.image.Bullet;
import com.godoro.game.eater.image.Enemy;
import com.godoro.game.eater.image.Food;
import com.godoro.game.eater.image.Player;
import java.awt.Graphics;
import java.awt.Image;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.sound.sampled.Clip;

public class Universe {
  private Map<String, Clip> soundMap;
  private Player player;
  private List<Food> foodList;
  private List<Bullet> bulletList;
  private List<Enemy> enemyList;
  private Status status = Status.ACTIVE;
  private int score = 0;

  public Universe() {
    player = new Player(300, 300);
    foodList = new ArrayList<>();
    foodList.add(new Food(100, 100));
    foodList.add(new Food(500, 200));
    foodList.add(new Food(300, 400));
    foodList.add(new Food(600, 500));
    foodList.add(new Food(400, 400));
    bulletList = new ArrayList<>();
    enemyList = new ArrayList<>();
    enemyList.add(new Enemy(300, 200));
    enemyList.add(new Enemy(500, 100));
    enemyList.add(new Enemy(400, 400));
    play(10, 10);
  }

  public Player getPlayer() {
    return player;
  }

  public List<Food> getFoodList() {
    return foodList;
  }

  public List<Bullet> getBulletList() {
    return bulletList;
  }

  public List<Enemy> getEnemyList() {
    return enemyList;
  }

  public Status getStatus() {
    return status;
  }

  public int getScore() {
    return score;
  }


  public Map<String, Clip> getSoundMap() {
    return soundMap;
  }

  public void setSoundMap(Map<String, Clip> soundMap) {
    this.soundMap = soundMap;
  }

  public void drawAll(Graphics g, Board board) {
    player.draw(g, board, status);
    for (Food food : foodList) {
      food.draw(g, board, status);
    }
    for (Enemy enemy : enemyList) {
      enemy.draw(g, board, status);
    }
    for (Bullet bullet : bulletList) {
      bullet.draw(g, board, status);
    }
  }

  public void play(int deltaX, int deltaY) {
    player.setVelocityX(deltaX);
    player.setVelocityY(deltaY);
    player.setX(player.getX() + deltaX);
    player.setY(player.getY() + deltaY);
    checkFoodsEaten();
    checkEnemyAttack();
  }

  public void fire() {
    Bullet bullet = player.fire();
    bulletList.add(bullet);
    sound("fire");
  }

  private void sound(String name) {
    Clip clip = soundMap.get(name);
    clip.setMicrosecondPosition(0);
    clip.start();
  }

  private void checkFoodsEaten() {
    for (Food food : foodList) {
      if (!food.isEaten() && food.collides(player)) {
        food.setEaten(true);
        sound("eaten");
        score++;
      }
    }
    int left = foodList.size();
    for (Food food : foodList) {
      if (food.isEaten()) {
        left--;
      }
    }
    if (left == 0) {
      status = Status.WON;
      sound("won");
    }

  }

  private void checkEnemyKilled() {
    for (Bullet bullet : bulletList) {
      if (bullet.isUsed()) {
        continue;
      }
      for (Enemy enemy : enemyList) {
        if (!enemy.isDead() && enemy.collides(bullet)) {
          bullet.setUsed(true);
          enemy.setDead(true);
          score++;
          sound("killed");

        }
      }
    }

  }

  private void checkPlayerKilled() {
    for (Enemy enemy : enemyList) {
      if (!enemy.isDead() && enemy.collides(player)) {
        status = Status.FAILED;
        sound("dead");
      }
    }
  }

  private void checkEnemyAttack() {
    for (Enemy enemy : enemyList) {
      if (!enemy.isDead()) {
        enemy.aim(player);
      }
    }
  }

  public void run() {
    moveBulletList();
    moveEnemyList();
  }

  private void moveBulletList() {
    for (Bullet bullet : bulletList) {
      if (!bullet.isUsed()) {
        bullet.move();
      }
    }
    checkEnemyKilled();
  }

  private void moveEnemyList() {

    for (Enemy enemy : enemyList) {
      if (!enemy.isDead()) {
        enemy.move();
      }
    }
    checkPlayerKilled();
  }

}

				
Dosyayı İndir

Bu Sayfayı Paylaş:




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir