Moves all game source files and assets into the 'American-Identity-Project' directory and updates the manifest to point to the 'Display' class as the main entry point. Replit-Commit-Author: Agent Replit-Commit-Session-Id: f6819c21-e85d-45ac-acde-604db2cfa4fe Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: a9500e48-7f68-408f-a5c6-28df9f59fe00 Replit-Helium-Checkpoint-Created: true
54 lines
1.2 KiB
Java
54 lines
1.2 KiB
Java
import java.util.*;
|
|
import javax.swing.ImageIcon;
|
|
|
|
public class Enemy extends Collidable {
|
|
int xVelo, yVelo;
|
|
boolean alive;
|
|
|
|
public Enemy(int x, int y, int w, int h, int level) {
|
|
super(x, y, w, h, new ImageIcon("Sprites/Enemies/" + level + ".png"));
|
|
xVelo = 2;
|
|
yVelo = 0;
|
|
alive = true;
|
|
}
|
|
|
|
public void moveX(int moveX) {
|
|
this.x += moveX;
|
|
this.rect.x = this.x;
|
|
}
|
|
|
|
public void moveY(int moveY) {
|
|
this.y += moveY;
|
|
this.rect.y = this.y;
|
|
}
|
|
|
|
public void patrol(ArrayList<Collidable> collidables) {
|
|
moveX(xVelo);
|
|
|
|
for (Collidable c : collidables) {
|
|
if (this.collidesWith(c)) {
|
|
xVelo = -xVelo;
|
|
moveX(xVelo * 2);
|
|
break;
|
|
}
|
|
}
|
|
|
|
// check edge detection - is there ground below next step?
|
|
boolean edgeAhead = true;
|
|
int nextX = this.x + xVelo;
|
|
for (Collidable c : collidables) {
|
|
if (c instanceof Tile) {
|
|
Tile t = (Tile) c;
|
|
// check if tile is below enemy's next position
|
|
if (nextX + this.width > t.x && nextX < t.x + t.width && t.y == this.y + this.height) {
|
|
edgeAhead = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (edgeAhead) {
|
|
xVelo = -xVelo;
|
|
}
|
|
}
|
|
}
|