The agent has updated the game's core logic, including player movement, enemy AI, collision detection, and level loading. New sprites and sound effects have been integrated, along with the addition of a Chess game. The replit.nix file has been configured to include jdk21 and neovim. Replit-Commit-Author: Agent Replit-Commit-Session-Id: f6819c21-e85d-45ac-acde-604db2cfa4fe Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 32bc3e83-133e-4485-96b6-ff3d548bcbfd Replit-Helium-Checkpoint-Created: true
63 lines
1.8 KiB
Java
63 lines
1.8 KiB
Java
import java.io.*;
|
|
import java.util.*;
|
|
|
|
public class LevelLoader {
|
|
static int enemyWidth[] = {0, 31, 20, 20, 20, 20, 20, 29, 29, 20, 20};
|
|
static int enemyHeight[] = {0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
|
|
|
|
public static void load(
|
|
int tileSize,
|
|
ArrayList<Collidable> collidables,
|
|
ArrayList<Collectable> collectables,
|
|
ArrayList<Enemy> enemies,
|
|
Flag flag,
|
|
Player player,
|
|
int level)
|
|
throws IOException {
|
|
collidables.clear();
|
|
collectables.clear();
|
|
enemies.clear();
|
|
|
|
/* left wall */ collidables.add(new Brick(-20, 0, 20, 2000));
|
|
|
|
BufferedReader br = new BufferedReader(new FileReader("Levels/level" + level + ".txt"));
|
|
String line;
|
|
int row = 0;
|
|
while ((line = br.readLine()) != null) {
|
|
for (int col = 0; col < line.length(); col++) {
|
|
char c = line.charAt(col);
|
|
int x = col * tileSize;
|
|
int y = row * tileSize;
|
|
switch (c) {
|
|
case 'B':
|
|
collidables.add(new Brick(x, y, tileSize, tileSize));
|
|
break;
|
|
case 'Q':
|
|
collidables.add(new PowerBrick(x, y, tileSize, tileSize, 1));
|
|
break;
|
|
case 'A':
|
|
collectables.add(new Amendment(x, y, tileSize, tileSize));
|
|
break;
|
|
case 'F':
|
|
flag.setPosition(x, y, tileSize, tileSize);
|
|
break;
|
|
case 'P':
|
|
player.x = x;
|
|
player.y = y;
|
|
player.rect.x = x;
|
|
player.rect.y = y;
|
|
break;
|
|
case 'E':
|
|
enemies.add(new Enemy(x, y, enemyWidth[level], enemyHeight[level], level));
|
|
break;
|
|
case 'X':
|
|
collidables.add(new InvisibleTile(x, y, tileSize, tileSize));
|
|
break;
|
|
}
|
|
}
|
|
row++;
|
|
}
|
|
br.close();
|
|
}
|
|
}
|