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