-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFileLevelLoader.java
80 lines (68 loc) · 2.71 KB
/
FileLevelLoader.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package uet.oop.bomberman.level;
import uet.oop.bomberman.Board;
import uet.oop.bomberman.Game;
import uet.oop.bomberman.entities.LayeredEntity;
import uet.oop.bomberman.entities.character.Bomber;
import uet.oop.bomberman.entities.character.enemy.Balloon;
import uet.oop.bomberman.entities.tile.Grass;
import uet.oop.bomberman.entities.tile.destroyable.Brick;
import uet.oop.bomberman.entities.tile.item.SpeedItem;
import uet.oop.bomberman.exceptions.LoadLevelException;
import uet.oop.bomberman.graphics.Screen;
import uet.oop.bomberman.graphics.Sprite;
public class FileLevelLoader extends LevelLoader {
/**
* Ma trận chứa thông tin bản đồ, mỗi phần tử lưu giá trị kí tự đọc được
* từ ma trận bản đồ trong tệp cấu hình
*/
private static char[][] _map;
public FileLevelLoader(Board board, int level) throws LoadLevelException {
super(board, level);
}
@Override
public void loadLevel(int level) {
// TODO: đọc dữ liệu từ tệp cấu hình /levels/Level{level}.txt
// TODO: cập nhật các giá trị đọc được vào _width, _height, _level, _map
}
@Override
public void createEntities() {
// TODO: tạo các Entity của màn chơi
// TODO: sau khi tạo xong, gọi _board.addEntity() để thêm Entity vào game
// TODO: phần code mẫu ở dưới để hướng dẫn cách thêm các loại Entity vào game
// TODO: hãy xóa nó khi hoàn thành chức năng load màn chơi từ tệp cấu hình
// thêm Wall
for (int x = 0; x < 20; x++) {
for (int y = 0; y < 20; y++) {
int pos = x + y * _width;
Sprite sprite = y == 0 || x == 0 || x == 10 || y == 10 ? Sprite.wall : Sprite.grass;
_board.addEntity(pos, new Grass(x, y, sprite));
}
}
// thêm Bomber
int xBomber = 1, yBomber = 1;
_board.addCharacter( new Bomber(Coordinates.tileToPixel(xBomber), Coordinates.tileToPixel(yBomber) + Game.TILES_SIZE, _board) );
Screen.setOffset(0, 0);
_board.addEntity(xBomber + yBomber * _width, new Grass(xBomber, yBomber, Sprite.grass));
// thêm Enemy
int xE = 2, yE = 1;
_board.addCharacter( new Balloon(Coordinates.tileToPixel(xE), Coordinates.tileToPixel(yE) + Game.TILES_SIZE, _board));
_board.addEntity(xE + yE * _width, new Grass(xE, yE, Sprite.grass));
// thêm Brick
int xB = 3, yB = 1;
_board.addEntity(xB + yB * _width,
new LayeredEntity(xB, yB,
new Grass(xB, yB, Sprite.grass),
new Brick(xB, yB, Sprite.brick)
)
);
// thêm Item kèm Brick che phủ ở trên
int xI = 1, yI = 2;
_board.addEntity(xI + yI * _width,
new LayeredEntity(xI, yI,
new Grass(xI ,yI, Sprite.grass),
new SpeedItem(xI, yI, Sprite.powerup_flames),
new Brick(xI, yI, Sprite.brick)
)
);
}
}