From 1d1f733279acc750eca0f4e610d392103f3291af Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Wed, 1 May 2024 07:52:23 +0000 Subject: [PATCH 01/66] add dockerfile --- Dockerfile | 10 ++++++++++ src/uet/oop/bomberman/level/FileLevelLoader.java | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..38f5d98 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM openjdk:8-slim-buster + +COPY . . +RUN apt update && \ + apt install -y vim git && \ + apt install -y libxext6 libxrender1 libxtst6 libfreetype6 libfontconfig1 && \ + echo "Done!" + +# Dev environment: +# docker run -d --name bom-ai -e DISPLAY="host.docker.internal:0" -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME:/root openjdk:8-slim-buster sleep 999999999 \ No newline at end of file diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 3432f1e..d7ca60a 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -1,6 +1,7 @@ package uet.oop.bomberman.level; import java.io.BufferedReader; +import java.io.File; import java.io.FileReader; import java.util.ArrayList; import java.util.List; @@ -40,7 +41,7 @@ public void loadLevel(int level) { // TODO: cập nhật các giá trị đọc được vào _width, _height, _level, _map List list = new ArrayList<>(); try { - FileReader fr = new FileReader("res\\levels\\Level" + level + ".txt");//doc tep luu map + FileReader fr = new FileReader("res/levels/Level" + level + ".txt");//doc tep luu map BufferedReader br = new BufferedReader(fr); String line = br.readLine(); while (!line.equals("")) { From b9fc04656619398cede73310185bfc700811dbba Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Fri, 3 May 2024 12:39:28 +0000 Subject: [PATCH 02/66] add item duration --- src/uet/oop/bomberman/Board.java | 15 ++++++++++ src/uet/oop/bomberman/Game.java | 7 +++-- .../entities/tile/item/BombItem.java | 16 +++++----- .../entities/tile/item/FlameItem.java | 16 +++++----- .../bomberman/entities/tile/item/Item.java | 30 ++++++++++++++++++- .../entities/tile/item/SpeedItem.java | 16 +++++----- 6 files changed, 69 insertions(+), 31 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 4130228..9c503b4 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -6,6 +6,7 @@ import uet.oop.bomberman.entities.bomb.FlameSegment; import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.exceptions.LoadLevelException; import uet.oop.bomberman.graphics.IRender; import uet.oop.bomberman.graphics.Screen; @@ -31,6 +32,7 @@ public class Board implements IRender { public List _characters = new ArrayList<>(); protected List _bombs = new ArrayList<>(); private List _messages = new ArrayList<>(); + private List _activeItems = new ArrayList<>(); private int _screenToShow = -1; //1:endgame, 2:changelevel, 3:paused @@ -53,6 +55,7 @@ public void update() { updateCharacters(); updateBombs(); updateMessages(); + updateActiveItems(); detectEndGame(); for (int i = 0; i < _characters.size(); i++) { @@ -228,6 +231,10 @@ public FlameSegment getFlameSegmentAt(int x, int y) { public Entity getEntityAt(double x, double y) { return _entities[(int)x + (int)y * _levelLoader.getWidth()]; } + + public void addActiveItem(Item item) { + _activeItems.add(item); + } public void addEntity(int pos, Entity e) { _entities[pos] = e; @@ -293,6 +300,14 @@ protected void updateBombs() { itr.next().update(); } + protected void updateActiveItems() { + if( _game.isPaused() ) return; + Iterator itr = _activeItems.iterator(); + + while(itr.hasNext()) + itr.next().update(); + } + protected void updateMessages() { if( _game.isPaused() ) return; Message m; diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 53e5c53..340459b 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -30,6 +30,7 @@ public class Game extends Canvas { private static final double BOMBERSPEED = 1.0;//toc do bomber public static final int TIME = 200; + public static final int ITEM_TIME = 20; public static final int POINTS = 0; protected static int SCREENDELAY = 3; @@ -45,7 +46,7 @@ public class Game extends Canvas { private boolean _running = false; private boolean _paused = true; - private Board _board; + private static Board _board; private Screen screen; private Frame _frame; @@ -156,7 +157,7 @@ public void start() { } } } - + public static double getBomberSpeed() { return bomberSpeed; } @@ -185,7 +186,7 @@ public void resetScreenDelay() { _screenDelay = SCREENDELAY; } - public Board getBoard() { + public static Board getBoard() { return _board; } diff --git a/src/uet/oop/bomberman/entities/tile/item/BombItem.java b/src/uet/oop/bomberman/entities/tile/item/BombItem.java index cfdceba..c0d0ff0 100644 --- a/src/uet/oop/bomberman/entities/tile/item/BombItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/BombItem.java @@ -13,15 +13,13 @@ public BombItem(int x, int y, Sprite sprite) { } @Override - public boolean collide(Entity e) { - // TODO: xử lý Bomber ăn Item - if (e instanceof Bomber) { - - Sound.play("Item"); - Game.addBombRate(1); - remove(); - } - return false; + protected void handleItemActive() { + Game.addBombRate(1); + } + + @Override + protected void handleItemInactive() { + Game.addBombRate(-1); } } diff --git a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java index e251754..78bbe57 100644 --- a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java @@ -13,14 +13,12 @@ public FlameItem(int x, int y, Sprite sprite) { } @Override - public boolean collide(Entity e) { - // TODO: xử lý Bomber ăn - if (e instanceof Bomber) { - - Sound.play("Item"); - Game.addBombRadius(1); - remove(); - } - return false; + protected void handleItemActive() { + Game.addBombRadius(1); + } + + @Override + protected void handleItemInactive() { + Game.addBombRadius(-1); } } diff --git a/src/uet/oop/bomberman/entities/tile/item/Item.java b/src/uet/oop/bomberman/entities/tile/item/Item.java index b3a1b8f..33ac804 100644 --- a/src/uet/oop/bomberman/entities/tile/item/Item.java +++ b/src/uet/oop/bomberman/entities/tile/item/Item.java @@ -1,5 +1,6 @@ package uet.oop.bomberman.entities.tile.item; +import uet.oop.bomberman.Game; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.entities.tile.Tile; @@ -7,11 +8,38 @@ import uet.oop.bomberman.sound.Sound; public abstract class Item extends Tile { - protected int _duration = -1; //thoi gian cua item ,-1 la vo han + protected int _duration = 300; //5s protected boolean _active = false; protected int _level; public Item(int x, int y, Sprite sprite) { super(x, y, sprite); } + + protected abstract void handleItemActive(); + protected abstract void handleItemInactive(); + + @Override + public boolean collide(Entity e) { + // TODO: xử lý Bomber ăn Item + if (e instanceof Bomber) { + Sound.play("Item"); + handleItemActive(); + _active = true; + Game.getBoard().addActiveItem(this); + remove(); + } + return false; + } + + @Override + public void update() { + if (!_active) return; + if (_duration > 0) { + _duration--; + } else { + handleItemInactive(); + _active = false; + } + } } diff --git a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java index 7bc50b7..b752c14 100644 --- a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java @@ -13,14 +13,12 @@ public SpeedItem(int x, int y, Sprite sprite) { } @Override - public boolean collide(Entity e) { - // TODO: xử lý Bomber ăn Item - if (e instanceof Bomber) { - - Sound.play("Item"); - Game.addBomberSpeed(0.5); - remove(); - } - return false; + protected void handleItemActive() { + Game.addBomberSpeed(0.5); + } + + @Override + protected void handleItemInactive() { + Game.addBomberSpeed(-0.5); } } From 8c9d30ed685b47edd64d772771017250c85cea8e Mon Sep 17 00:00:00 2001 From: Hang Le Thi Bich <21522041@gm.uit.edu.vn> Date: Mon, 6 May 2024 13:12:43 +0700 Subject: [PATCH 03/66] select level --- src/uet/oop/bomberman/Game.java | 129 +++++++++++------- src/uet/oop/bomberman/graphics/Screen.java | 5 +- src/uet/oop/bomberman/gui/GameScreen.java | 8 ++ src/uet/oop/bomberman/input/Keyboard.java | 6 + .../bomberman/screen/SelectLevelScreen.java | 102 ++++++++++++++ src/uet/oop/bomberman/utils/EGameLevel.java | 17 +++ src/uet/oop/bomberman/utils/EScreenName.java | 6 + src/uet/oop/bomberman/utils/Global.java | 8 ++ 8 files changed, 231 insertions(+), 50 deletions(-) create mode 100644 src/uet/oop/bomberman/gui/GameScreen.java create mode 100644 src/uet/oop/bomberman/screen/SelectLevelScreen.java create mode 100644 src/uet/oop/bomberman/utils/EGameLevel.java create mode 100644 src/uet/oop/bomberman/utils/EScreenName.java create mode 100644 src/uet/oop/bomberman/utils/Global.java diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 340459b..ef78f05 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -3,6 +3,9 @@ import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.gui.Frame; import uet.oop.bomberman.input.Keyboard; +import uet.oop.bomberman.screen.SelectLevelScreen; +import uet.oop.bomberman.utils.EScreenName; +import uet.oop.bomberman.utils.Global; import java.awt.*; import java.awt.image.BufferStrategy; @@ -52,6 +55,14 @@ public class Game extends Canvas { private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); private int[] pixels = ((DataBufferInt)image.getRaster().getDataBuffer()).getData(); + + // game variable + private int frames; + private int updates; + private long timer; + + // game screens + private SelectLevelScreen selectLevelScreen; public Game(Frame frame) { _frame = frame; @@ -62,16 +73,12 @@ public Game(Frame frame) { _board = new Board(this, _input, screen); addKeyListener(_input); + + initScreen(); } - private void renderGame() { - BufferStrategy bs = getBufferStrategy(); - if(bs == null) { - createBufferStrategy(3); - return; - } - + private void renderGame(Graphics g) { screen.clear(); _board.render(screen); @@ -80,46 +87,93 @@ private void renderGame() { pixels[i] = screen._pixels[i]; } - Graphics g = bs.getDrawGraphics(); - g.drawImage(image, 0, 0, getWidth(), getHeight(), null); _board.renderMessages(g); - - g.dispose(); - bs.show(); } - private void renderScreen() { + private void renderScreen(Graphics g) { + screen.clear(); + _board.drawScreen(g); + } + + private void initScreen() { + Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; + + this.selectLevelScreen = new SelectLevelScreen(_input); + } + + private void update() { + _input.update(); + switch (Global.currentScreen) { + case GAME_PLAY_SCREEN: + _board.update(); + break; + case SELECT_LEVEL_SCREEN: + // TODO: call select level screen update + selectLevelScreen.update(); + break; + } + } + + private void showScreen() { BufferStrategy bs = getBufferStrategy(); if(bs == null) { createBufferStrategy(3); return; } - - screen.clear(); - Graphics g = bs.getDrawGraphics(); - - _board.drawScreen(g); + + switch (Global.currentScreen) { + case GAME_PLAY_SCREEN: + if(_paused) { + if(_screenDelay <= 0) { + _board.setShow(-1); + _paused = false; + } + + renderScreen(g); + } else { + renderGame(g); + } + + + frames++; + if(System.currentTimeMillis() - timer > 1000) { + _frame.setTime(_board.subtractTime()); + _frame.setPoints(_board.getPoints()); + timer += 1000; + _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); + updates = 0; + frames = 0; + + if(_board.getShow() == 2) + --_screenDelay; + } + break; + case SELECT_LEVEL_SCREEN: + // TODO: render select level screen + selectLevelScreen.drawScreen(g); + break; + } g.dispose(); bs.show(); } - private void update() { - _input.update(); - _board.update(); + private void initGame() { + this.timer = System.currentTimeMillis(); + this.frames = 0; + this.updates = 0; } public void start() { _running = true; + + initGame(); long lastTime = System.nanoTime(); - long timer = System.currentTimeMillis(); final double ns = 1000000000.0 / 60.0; //nanosecond, 60 frames per second double delta = 0; - int frames = 0; - int updates = 0; requestFocus(); while(_running) { long now = System.nanoTime(); @@ -130,31 +184,8 @@ public void start() { updates++; delta--; } - - if(_paused) { - if(_screenDelay <= 0) { - _board.setShow(-1); - _paused = false; - } - - renderScreen(); - } else { - renderGame(); - } - - - frames++; - if(System.currentTimeMillis() - timer > 1000) { - _frame.setTime(_board.subtractTime()); - _frame.setPoints(_board.getPoints()); - timer += 1000; - _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); - updates = 0; - frames = 0; - - if(_board.getShow() == 2) - --_screenDelay; - } + + showScreen(); } } diff --git a/src/uet/oop/bomberman/graphics/Screen.java b/src/uet/oop/bomberman/graphics/Screen.java index 2494ea2..8cbc134 100644 --- a/src/uet/oop/bomberman/graphics/Screen.java +++ b/src/uet/oop/bomberman/graphics/Screen.java @@ -4,6 +4,7 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Bomber; +import uet.oop.bomberman.utils.Global; import java.awt.*; @@ -22,7 +23,9 @@ public Screen(int width, int height) { _height = height; _pixels = new int[width * height]; - + + Global.screenWidth = this.getRealWidth(); + Global.screenHeight = this.getRealHeight(); } public void clear() { diff --git a/src/uet/oop/bomberman/gui/GameScreen.java b/src/uet/oop/bomberman/gui/GameScreen.java new file mode 100644 index 0000000..93a79c1 --- /dev/null +++ b/src/uet/oop/bomberman/gui/GameScreen.java @@ -0,0 +1,8 @@ +package uet.oop.bomberman.gui; + +import java.awt.*; + +public abstract class GameScreen { + public abstract void drawScreen(Graphics g); + public abstract void update(); +} diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index bb8daad..bdae548 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -7,9 +7,15 @@ * Tiếp nhận và xử lý các sự kiện nhập từ bàn phím */ public class Keyboard implements KeyListener { + + public interface KeyboardInputCallback { + void keyInputDelay(); + } private boolean[] keys = new boolean[120]; //120 is enough to this game public boolean up, down, left, right, space; + private boolean delayUp, delayDown; + public KeyboardInputCallback keyboardInputCallback; public void update() { up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W]; diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java new file mode 100644 index 0000000..60ef5b7 --- /dev/null +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -0,0 +1,102 @@ +package uet.oop.bomberman.screen; + +import uet.oop.bomberman.Game; +import uet.oop.bomberman.gui.GameScreen; +import uet.oop.bomberman.input.Keyboard; +import uet.oop.bomberman.utils.EGameLevel; +import uet.oop.bomberman.utils.Global; + +import java.awt.*; +import java.util.ArrayList; + +public class SelectLevelScreen extends GameScreen { + ArrayList levels = new ArrayList(); + int selectorIndex = 0; + private Keyboard _input; + + public SelectLevelScreen(Keyboard input) { + _input = input; + + levels.add(EGameLevel.EASY.getStringLevel()); + levels.add(EGameLevel.MEDIUM.getStringLevel()); + levels.add(EGameLevel.HARD.getStringLevel()); + } + + @Override + public void drawScreen(Graphics g) { + // set background + g.setColor(Color.black); + g.fillRect(0, 0, Global.screenWidth, Global.screenHeight); + + drawTitle(g); + drawOptions(g); + drawSelector(g); + } + + private void drawTitle(Graphics g) { + String title = "SELECT LEVEL"; + Font font = new Font("Arial", Font.BOLD, 20 * Game.SCALE); + g.setFont(font); + g.setColor(Color.white); + + FontMetrics fm = g.getFontMetrics(); + int x = (Global.screenWidth - fm.stringWidth(title)) / 2; + int marginTop = 20; + int y = marginTop + fm.getAscent(); + + g.drawString(title, x, y); + } + + private void drawOptions(Graphics g) { + Font font = new Font("Arial", Font.PLAIN, 10 * Game.SCALE); + g.setFont(font); + g.setColor(Color.white); + + int w = Global.screenWidth; + int h = Global.screenHeight; + FontMetrics fm = g.getFontMetrics(); + int textHeight = fm.getAscent() + fm.getDescent(); + int boxHeight = textHeight * this.levels.size(); + int marginTop = (h - boxHeight) / 2; + + for (int i=0; i < this.levels.size(); i++) { + String level = this.levels.get(i); + int x = (w - fm.stringWidth(level)) / 2; + int y = marginTop + fm.getAscent() + textHeight*i; + + g.drawString(level, x, y); + } + } + + private void drawSelector(Graphics g) { + String level = this.levels.get(selectorIndex); + int w = Global.screenWidth; + int h = Global.screenHeight; + FontMetrics fm = g.getFontMetrics(); + int textHeight = fm.getAscent() + fm.getDescent(); + int boxHeight = textHeight * this.levels.size(); + int marginTop = (h - boxHeight) / 2; + + int x = (w - fm.stringWidth(level)) / 2 - 30; + int y = marginTop + fm.getAscent() + textHeight*selectorIndex; + + g.drawString(">", x, y); + } + + @Override + public void update() { + if (_input.getSingleUp()) { + System.out.print("vao day up"); + selectorIndex++; + } else if (_input.getSingleDown()) { + selectorIndex--; + System.out.print("vao day down"); + } + + if (selectorIndex < 0) { + selectorIndex = levels.size() - 1; + } else if (selectorIndex > levels.size() - 1) { + selectorIndex = 0; + } + } +} diff --git a/src/uet/oop/bomberman/utils/EGameLevel.java b/src/uet/oop/bomberman/utils/EGameLevel.java new file mode 100644 index 0000000..7644772 --- /dev/null +++ b/src/uet/oop/bomberman/utils/EGameLevel.java @@ -0,0 +1,17 @@ +package uet.oop.bomberman.utils; + +public enum EGameLevel { + EASY("Easy"), + MEDIUM("Medium"), + HARD("Hard"); + + private final String level; + + EGameLevel(String level) { + this.level = level; + } + + public String getStringLevel() { + return this.level; + } +} diff --git a/src/uet/oop/bomberman/utils/EScreenName.java b/src/uet/oop/bomberman/utils/EScreenName.java new file mode 100644 index 0000000..515a6e8 --- /dev/null +++ b/src/uet/oop/bomberman/utils/EScreenName.java @@ -0,0 +1,6 @@ +package uet.oop.bomberman.utils; + +public enum EScreenName { + SELECT_LEVEL_SCREEN, + GAME_PLAY_SCREEN, +} diff --git a/src/uet/oop/bomberman/utils/Global.java b/src/uet/oop/bomberman/utils/Global.java new file mode 100644 index 0000000..623e0a6 --- /dev/null +++ b/src/uet/oop/bomberman/utils/Global.java @@ -0,0 +1,8 @@ +package uet.oop.bomberman.utils; + +public class Global { + public static int screenWidth; + public static int screenHeight; + + public static EScreenName currentScreen; +} From 471cbc535f68b015463c384fe8c40137816362b5 Mon Sep 17 00:00:00 2001 From: Hang Le Thi Bich <21522041@gm.uit.edu.vn> Date: Mon, 6 May 2024 23:19:41 +0700 Subject: [PATCH 04/66] select level keyboard input --- src/uet/oop/bomberman/input/Keyboard.java | 42 +++++++++++++++++-- .../bomberman/screen/SelectLevelScreen.java | 39 ++++++++++------- src/uet/oop/bomberman/utils/EGameControl.java | 11 +++++ 3 files changed, 73 insertions(+), 19 deletions(-) create mode 100644 src/uet/oop/bomberman/utils/EGameControl.java diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index bdae548..7026dc9 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -1,7 +1,10 @@ package uet.oop.bomberman.input; +import uet.oop.bomberman.utils.EGameControl; + import java.awt.event.KeyEvent; import java.awt.event.KeyListener; +import java.util.Optional; /** * Tiếp nhận và xử lý các sự kiện nhập từ bàn phím @@ -9,13 +12,12 @@ public class Keyboard implements KeyListener { public interface KeyboardInputCallback { - void keyInputDelay(); + void onKeyPressed(EGameControl gameControl); } private boolean[] keys = new boolean[120]; //120 is enough to this game public boolean up, down, left, right, space; - private boolean delayUp, delayDown; - public KeyboardInputCallback keyboardInputCallback; + public Optional keyboardInputCallback; public void update() { up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W]; @@ -25,13 +27,45 @@ public void update() { space = keys[KeyEvent.VK_SPACE] || keys[KeyEvent.VK_X]; } + private EGameControl keyToGameControl(int keyCode) { + if (keyCode == KeyEvent.VK_UP || keyCode == KeyEvent.VK_W) { + return EGameControl.UP; + } + + if (keyCode == KeyEvent.VK_DOWN || keyCode == KeyEvent.VK_S) { + return EGameControl.DOWN; + } + + if (keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_A) { + return EGameControl.LEFT; + } + + if (keyCode == KeyEvent.VK_RIGHT || keyCode == KeyEvent.VK_D) { + return EGameControl.RIGHT; + } + + if (keyCode == KeyEvent.VK_SPACE || keyCode == KeyEvent.VK_X) { + return EGameControl.SPACE; + } + + if (keyCode == KeyEvent.VK_ENTER) { + return EGameControl.ENTER; + } + + return EGameControl.NONE; + } + @Override public void keyTyped(KeyEvent e) {} @Override public void keyPressed(KeyEvent e) { keys[e.getKeyCode()] = true; - + + if (keyboardInputCallback.isPresent()) { + KeyboardInputCallback callback = keyboardInputCallback.get(); + callback.onKeyPressed(keyToGameControl(e.getKeyCode())); + } } @Override diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index 60ef5b7..34d51bc 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -3,10 +3,13 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.gui.GameScreen; import uet.oop.bomberman.input.Keyboard; +import uet.oop.bomberman.utils.EGameControl; import uet.oop.bomberman.utils.EGameLevel; +import uet.oop.bomberman.utils.EScreenName; import uet.oop.bomberman.utils.Global; import java.awt.*; +import java.awt.event.KeyEvent; import java.util.ArrayList; public class SelectLevelScreen extends GameScreen { @@ -20,6 +23,26 @@ public SelectLevelScreen(Keyboard input) { levels.add(EGameLevel.EASY.getStringLevel()); levels.add(EGameLevel.MEDIUM.getStringLevel()); levels.add(EGameLevel.HARD.getStringLevel()); + + _input.keyboardInputCallback = java.util.Optional.of(new Keyboard.KeyboardInputCallback() { + @Override + public void onKeyPressed(EGameControl gameControl) { + switch (gameControl) { + case UP: + selectorIndex--; + case DOWN: + selectorIndex++; + case ENTER: + Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; + } + + if (selectorIndex < 0) { + selectorIndex = levels.size() - 1; + } else if (selectorIndex > levels.size() - 1) { + selectorIndex = 0; + } + } + }); } @Override @@ -84,19 +107,5 @@ private void drawSelector(Graphics g) { } @Override - public void update() { - if (_input.getSingleUp()) { - System.out.print("vao day up"); - selectorIndex++; - } else if (_input.getSingleDown()) { - selectorIndex--; - System.out.print("vao day down"); - } - - if (selectorIndex < 0) { - selectorIndex = levels.size() - 1; - } else if (selectorIndex > levels.size() - 1) { - selectorIndex = 0; - } - } + public void update() {} } diff --git a/src/uet/oop/bomberman/utils/EGameControl.java b/src/uet/oop/bomberman/utils/EGameControl.java new file mode 100644 index 0000000..fa8cea4 --- /dev/null +++ b/src/uet/oop/bomberman/utils/EGameControl.java @@ -0,0 +1,11 @@ +package uet.oop.bomberman.utils; + +public enum EGameControl { + NONE, + UP, + DOWN, + LEFT, + RIGHT, + ENTER, + SPACE, +} From 42623970ee4a500b1c9dd7bddf861f09513ae468 Mon Sep 17 00:00:00 2001 From: Hang Le Thi Bich <21522041@gm.uit.edu.vn> Date: Tue, 7 May 2024 17:50:37 +0700 Subject: [PATCH 05/66] update keyboard input --- src/uet/oop/bomberman/screen/SelectLevelScreen.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index 34d51bc..33fb2a1 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -30,10 +30,13 @@ public void onKeyPressed(EGameControl gameControl) { switch (gameControl) { case UP: selectorIndex--; + break; case DOWN: selectorIndex++; + break; case ENTER: Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; + break; } if (selectorIndex < 0) { From 8ad3da91f7db85eedb4dbf18d54c8561e5b0f6f8 Mon Sep 17 00:00:00 2001 From: 21522098_HuyHoang <21522098@gm.uit.edu.vn> Date: Fri, 10 May 2024 10:47:02 +0700 Subject: [PATCH 06/66] Pause_game w P,and Button on Screen --- src/uet/oop/bomberman/Game.java | 28 ++++++++++++------- src/uet/oop/bomberman/graphics/Screen.java | 7 ----- src/uet/oop/bomberman/gui/InfoPanel.java | 31 +++++++++++++++++++--- src/uet/oop/bomberman/input/Keyboard.java | 3 ++- 4 files changed, 47 insertions(+), 22 deletions(-) diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 53e5c53..74bc69f 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -108,11 +108,16 @@ private void renderScreen() { private void update() { _input.update(); _board.update(); + if (_input.pause) { // Kiểm tra nếu phím "p" được nhấn + _board.setShow(3); // Hiển thị màn hình tạm dừng + _paused = true; // Đặt trạng thái game là tạm dừng + return; + } } public void start() { _running = true; - + _paused = false; long lastTime = System.nanoTime(); long timer = System.currentTimeMillis(); final double ns = 1000000000.0 / 60.0; //nanosecond, 60 frames per second @@ -129,17 +134,20 @@ public void start() { updates++; delta--; } - - if(_paused) { - if(_screenDelay <= 0) { - _board.setShow(-1); - _paused = false; - } - - renderScreen(); + if (_input.pause) { + _paused = !_paused; + if (_paused) { + _board.setShow(3); } else { - renderGame(); + _board.setShow(-1); } + } + + if(_paused) { + renderScreen(); + } else { + renderGame(); + } frames++; diff --git a/src/uet/oop/bomberman/graphics/Screen.java b/src/uet/oop/bomberman/graphics/Screen.java index 2494ea2..fa3b2e9 100644 --- a/src/uet/oop/bomberman/graphics/Screen.java +++ b/src/uet/oop/bomberman/graphics/Screen.java @@ -24,13 +24,6 @@ public Screen(int width, int height) { _pixels = new int[width * height]; } - - public void clear() { - for (int i = 0; i < _pixels.length; i++) { - _pixels[i] = 0; - } - } - public void renderEntity(int xp, int yp, Entity entity) { //save entity pixels xp -= xOffset; yp -= yOffset; diff --git a/src/uet/oop/bomberman/gui/InfoPanel.java b/src/uet/oop/bomberman/gui/InfoPanel.java index de01310..4ef0cfd 100644 --- a/src/uet/oop/bomberman/gui/InfoPanel.java +++ b/src/uet/oop/bomberman/gui/InfoPanel.java @@ -1,8 +1,13 @@ package uet.oop.bomberman.gui; - +import java.awt.event.ActionListener; +import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; import javax.swing.*; + + +import javafx.event.ActionEvent; + import java.awt.*; /** @@ -10,11 +15,13 @@ */ public class InfoPanel extends JPanel { + private static Board _board; + private boolean gamePaused = false; private JLabel timeLabel; private JLabel pointsLabel; - + private JButton pauseButton; public InfoPanel(Game game) { - setLayout(new GridLayout()); + setLayout(new GridLayout(1, 3)); timeLabel = new JLabel("Time: " + game.getBoard().getTime()); timeLabel.setForeground(Color.white); @@ -24,9 +31,25 @@ public InfoPanel(Game game) { pointsLabel.setForeground(Color.white); pointsLabel.setHorizontalAlignment(JLabel.CENTER); + pauseButton = new JButton("Pause"); + pauseButton.setForeground(Color.white); + pauseButton.setHorizontalAlignment(JButton.CENTER); + pauseButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // Nếu trò chơi đang tạm dừng, tiếp tục trò chơi và thay đổi trạng thái + if (gamePaused) { + _board.setShow(3); // Tiếp tục trò chơi + gamePaused = false; // Thay đổi trạng thái + } else { // Nếu trò chơi đang chạy, tạm dừng trò chơi và thay đổi trạng thái + _board.setShow(-1); // Tạm dừng trò chơi + gamePaused = true; // Thay đổi trạng thái + } + } + }); add(timeLabel); add(pointsLabel); - + add(pauseButton); setBackground(Color.black); setPreferredSize(new Dimension(0, 40)); } diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index bb8daad..44fdf07 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -9,7 +9,7 @@ public class Keyboard implements KeyListener { private boolean[] keys = new boolean[120]; //120 is enough to this game - public boolean up, down, left, right, space; + public boolean up, down, left, right, space,pause; public void update() { up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W]; @@ -17,6 +17,7 @@ public void update() { left = keys[KeyEvent.VK_LEFT] || keys[KeyEvent.VK_A]; right = keys[KeyEvent.VK_RIGHT] || keys[KeyEvent.VK_D]; space = keys[KeyEvent.VK_SPACE] || keys[KeyEvent.VK_X]; + pause = keys[KeyEvent.VK_P]; } @Override From e4d259dd414b42284eec518d36b1b1793a1c4777 Mon Sep 17 00:00:00 2001 From: 21522098 <21522098@gm.uit.edu.vn> Date: Sat, 11 May 2024 13:25:09 +0700 Subject: [PATCH 07/66] Pause-game --- src/uet/oop/bomberman/graphics/Screen.java | 6 +++++- src/uet/oop/bomberman/gui/InfoPanel.java | 15 +-------------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/uet/oop/bomberman/graphics/Screen.java b/src/uet/oop/bomberman/graphics/Screen.java index fa3b2e9..9aa0058 100644 --- a/src/uet/oop/bomberman/graphics/Screen.java +++ b/src/uet/oop/bomberman/graphics/Screen.java @@ -56,7 +56,11 @@ public void renderEntityWithBelowSprite(int xp, int yp, Entity entity, Sprite be } } } - + public void clear() { + for (int i = 0; i < _pixels.length; i++) { + _pixels[i] = 0; + } + } public static void setOffset(int xO, int yO) { xOffset = xO; yOffset = yO; diff --git a/src/uet/oop/bomberman/gui/InfoPanel.java b/src/uet/oop/bomberman/gui/InfoPanel.java index 4ef0cfd..366a835 100644 --- a/src/uet/oop/bomberman/gui/InfoPanel.java +++ b/src/uet/oop/bomberman/gui/InfoPanel.java @@ -6,7 +6,7 @@ import javax.swing.*; -import javafx.event.ActionEvent; +import javafx.event.*; import java.awt.*; @@ -34,19 +34,6 @@ public InfoPanel(Game game) { pauseButton = new JButton("Pause"); pauseButton.setForeground(Color.white); pauseButton.setHorizontalAlignment(JButton.CENTER); - pauseButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - // Nếu trò chơi đang tạm dừng, tiếp tục trò chơi và thay đổi trạng thái - if (gamePaused) { - _board.setShow(3); // Tiếp tục trò chơi - gamePaused = false; // Thay đổi trạng thái - } else { // Nếu trò chơi đang chạy, tạm dừng trò chơi và thay đổi trạng thái - _board.setShow(-1); // Tạm dừng trò chơi - gamePaused = true; // Thay đổi trạng thái - } - } - }); add(timeLabel); add(pointsLabel); add(pauseButton); From 091ad4e7b62f56ead21855d3406f55bd2404152b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=C6=B0=C6=A1ng=20Minh?= <113281373+phuonnngminh@users.noreply.github.com> Date: Sat, 11 May 2024 13:56:34 +0700 Subject: [PATCH 08/66] display item time --- src/uet/oop/bomberman/Board.java | 237 ++++++++++-------- src/uet/oop/bomberman/Game.java | 125 ++++----- .../entities/tile/item/BombItem.java | 5 + .../entities/tile/item/FlameItem.java | 5 + .../bomberman/entities/tile/item/Item.java | 30 ++- .../entities/tile/item/SpeedItem.java | 5 + src/uet/oop/bomberman/gui/Frame.java | 4 + src/uet/oop/bomberman/gui/InfoPanel.java | 38 ++- 8 files changed, 263 insertions(+), 186 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 9c503b4..0bf31f2 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -27,71 +27,78 @@ public class Board implements IRender { protected Game _game; protected Keyboard _input; protected Screen _screen; - + public Entity[] _entities; public List _characters = new ArrayList<>(); protected List _bombs = new ArrayList<>(); private List _messages = new ArrayList<>(); private List _activeItems = new ArrayList<>(); - - private int _screenToShow = -1; //1:endgame, 2:changelevel, 3:paused - + + public List getActiveItems() { + return _activeItems; + } + + private int _screenToShow = -1; // 1:endgame, 2:changelevel, 3:paused + private int _time = Game.TIME; private int _points = Game.POINTS; - + public Board(Game game, Keyboard input, Screen screen) { _game = game; _input = input; _screen = screen; - - loadLevel(1); //start in level 1 + + loadLevel(1); // start in level 1 } - + @Override public void update() { - if( _game.isPaused() ) return; - + if (_game.isPaused()) + return; + updateEntities(); updateCharacters(); updateBombs(); updateMessages(); updateActiveItems(); detectEndGame(); - + for (int i = 0; i < _characters.size(); i++) { Character a = _characters.get(i); - if(a.isRemoved()) _characters.remove(i); + if (a.isRemoved()) + _characters.remove(i); } } @Override public void render(Screen screen) { - if( _game.isPaused() ) return; - - //only render the visible part of screen - int x0 = Screen.xOffset >> 4; //tile precision, -> left X + if (_game.isPaused()) + return; + + // only render the visible part of screen + int x0 = Screen.xOffset >> 4; // tile precision, -> left X int x1 = (Screen.xOffset + screen.getWidth() + Game.TILES_SIZE) / Game.TILES_SIZE; // -> right X int y0 = Screen.yOffset >> 4; - int y1 = (Screen.yOffset + screen.getHeight()) / Game.TILES_SIZE; //render one tile plus to fix black margins - + int y1 = (Screen.yOffset + screen.getHeight()) / Game.TILES_SIZE; // render one tile plus to fix black margins + for (int y = y0; y < y1; y++) { for (int x = x0; x < x1; x++) { _entities[x + y * _levelLoader.getWidth()].render(screen); } } - + renderBombs(screen); renderCharacter(screen); - + } - + public void nextLevel() { - Game.setBombRadius(1); - Game.setBombRate(1); - Game.setBomberSpeed(1.0); + Game.setBombRadius(1); + Game.setBombRate(1); + Game.setBomberSpeed(1.0); loadLevel(_levelLoader.getLevel() + 1); } - + public void loadLevel(int level) { _time = Game.TIME; _screenToShow = 2; @@ -100,38 +107,38 @@ public void loadLevel(int level) { _characters.clear(); _bombs.clear(); _messages.clear(); - + try { _levelLoader = new FileLevelLoader(this, level); _entities = new Entity[_levelLoader.getHeight() * _levelLoader.getWidth()]; - + _levelLoader.createEntities(); } catch (LoadLevelException e) { endGame(); } } - + protected void detectEndGame() { - if(_time <= 0) + if (_time <= 0) endGame(); } - + public void endGame() { _screenToShow = 1; _game.resetScreenDelay(); _game.pause(); } - + public boolean detectNoEnemies() {// phat hien enemies int total = 0; for (int i = 0; i < _characters.size(); i++) { - if(_characters.get(i) instanceof Bomber == false) + if (_characters.get(i) instanceof Bomber == false) ++total; } - + return total == 0; } - + public void drawScreen(Graphics g) { switch (_screenToShow) { case 1: @@ -145,178 +152,186 @@ public void drawScreen(Graphics g) { break; } } - + public Entity getEntity(double x, double y, Character m) { - + Entity res = null; - - res = getFlameSegmentAt((int)x, (int)y); - if( res != null) return res; - + + res = getFlameSegmentAt((int) x, (int) y); + if (res != null) + return res; + res = getBombAt(x, y); - if( res != null) return res; - - res = getCharacterAtExcluding((int)x, (int)y, m); - if( res != null) return res; - - res = getEntityAt((int)x, (int)y); - + if (res != null) + return res; + + res = getCharacterAtExcluding((int) x, (int) y, m); + if (res != null) + return res; + + res = getEntityAt((int) x, (int) y); + return res; } - + public List getBombs() { return _bombs; } - + public Bomb getBombAt(double x, double y) { Iterator bs = _bombs.iterator(); Bomb b; - while(bs.hasNext()) { + while (bs.hasNext()) { b = bs.next(); - if(b.getX() == (int)x && b.getY() == (int)y) + if (b.getX() == (int) x && b.getY() == (int) y) return b; } - + return null; } public Bomber getBomber() { Iterator itr = _characters.iterator(); - + Character cur; - while(itr.hasNext()) { + while (itr.hasNext()) { cur = itr.next(); - - if(cur instanceof Bomber) + + if (cur instanceof Bomber) return (Bomber) cur; } - + return null; } - + public Character getCharacterAtExcluding(int x, int y, Character a) { Iterator itr = _characters.iterator(); - + Character cur; - while(itr.hasNext()) { + while (itr.hasNext()) { cur = itr.next(); - if(cur == a) { + if (cur == a) { continue; } - - if(cur.getXTile() == x && cur.getYTile() == y) { + + if (cur.getXTile() == x && cur.getYTile() == y) { return cur; } - + } - + return null; } - + public FlameSegment getFlameSegmentAt(int x, int y) { Iterator bs = _bombs.iterator(); Bomb b; - while(bs.hasNext()) { + while (bs.hasNext()) { b = bs.next(); - + FlameSegment e = b.flameAt(x, y); - if(e != null) { + if (e != null) { return e; } } - + return null; } - + public Entity getEntityAt(double x, double y) { - return _entities[(int)x + (int)y * _levelLoader.getWidth()]; + return _entities[(int) x + (int) y * _levelLoader.getWidth()]; } public void addActiveItem(Item item) { _activeItems.add(item); } - + public void addEntity(int pos, Entity e) { _entities[pos] = e; } - + public void addCharacter(Character e) { _characters.add(e); } - + public void addBomb(Bomb e) { _bombs.add(e); } - + public void addMessage(Message e) { _messages.add(e); } protected void renderCharacter(Screen screen) { Iterator itr = _characters.iterator(); - - while(itr.hasNext()) + + while (itr.hasNext()) itr.next().render(screen); } - + protected void renderBombs(Screen screen) { Iterator itr = _bombs.iterator(); - - while(itr.hasNext()) + + while (itr.hasNext()) itr.next().render(screen); } - + public void renderMessages(Graphics g) { Message m; for (int i = 0; i < _messages.size(); i++) { m = _messages.get(i); - + g.setFont(new Font("Arial", Font.PLAIN, m.getSize())); g.setColor(m.getColor()); - g.drawString(m.getMessage(), (int)m.getX() - Screen.xOffset * Game.SCALE, (int)m.getY()); + g.drawString(m.getMessage(), (int) m.getX() - Screen.xOffset * Game.SCALE, (int) m.getY()); } } - + protected void updateEntities() { - if( _game.isPaused() ) return; + if (_game.isPaused()) + return; for (int i = 0; i < _entities.length; i++) { _entities[i].update(); } } - + protected void updateCharacters() { - if( _game.isPaused() ) return; + if (_game.isPaused()) + return; Iterator itr = _characters.iterator(); - - while(itr.hasNext() && !_game.isPaused()) + + while (itr.hasNext() && !_game.isPaused()) itr.next().update(); } - + protected void updateBombs() { - if( _game.isPaused() ) return; + if (_game.isPaused()) + return; Iterator itr = _bombs.iterator(); - - while(itr.hasNext()) + + while (itr.hasNext()) itr.next().update(); } - + protected void updateActiveItems() { - if( _game.isPaused() ) return; + if (_game.isPaused()) + return; Iterator itr = _activeItems.iterator(); - - while(itr.hasNext()) + + while (itr.hasNext()) itr.next().update(); } - + protected void updateMessages() { - if( _game.isPaused() ) return; + if (_game.isPaused()) + return; Message m; int left; for (int i = 0; i < _messages.size(); i++) { m = _messages.get(i); left = m.getDuration(); - - if(left > 0) + + if (left > 0) m.setDuration(--left); else _messages.remove(i); @@ -324,10 +339,18 @@ protected void updateMessages() { } public int subtractTime() { - if(_game.isPaused()) - return this._time; + if (!_game.isPaused() && _time > 0) + return --_time; else - return this._time--; + return _time; + } + + public int getItemTime() { + int totalTime = 0; + for (int i = 0; i < _activeItems.size(); i++) { + totalTime += _activeItems.get(i).getDuration() / 60; + } + return totalTime; } public Keyboard getInput() { @@ -361,7 +384,7 @@ public int getPoints() { public void addPoints(int points) { this._points += points; } - + public int getWidth() { return _levelLoader.getWidth(); } @@ -369,5 +392,5 @@ public int getWidth() { public int getHeight() { return _levelLoader.getHeight(); } - + } diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 340459b..f043707 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -15,91 +15,88 @@ */ public class Game extends Canvas { - - public static final int TILES_SIZE = 16, - WIDTH = TILES_SIZE * (31 / 2), - HEIGHT = 13 * TILES_SIZE; + WIDTH = TILES_SIZE * (31 / 2), + HEIGHT = 13 * TILES_SIZE; public static int SCALE = 3; - + public static final String TITLE = "BombermanGame"; - + private static final int BOMBRATE = 1; private static final int BOMBRADIUS = 1; - private static final double BOMBERSPEED = 1.0;//toc do bomber - + private static final double BOMBERSPEED = 1.0;// toc do bomber + private static int itemTime; + public static final int TIME = 200; public static final int ITEM_TIME = 20; public static final int POINTS = 0; - + protected static int SCREENDELAY = 3; protected static int bombRate = BOMBRATE; protected static int bombRadius = BOMBRADIUS; protected static double bomberSpeed = BOMBERSPEED; - - + protected int _screenDelay = SCREENDELAY; - + private Keyboard _input; private boolean _running = false; private boolean _paused = true; - + private static Board _board; private Screen screen; private Frame _frame; - + private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); - private int[] pixels = ((DataBufferInt)image.getRaster().getDataBuffer()).getData(); - + private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData(); + public Game(Frame frame) { _frame = frame; _frame.setTitle(TITLE); - + screen = new Screen(WIDTH, HEIGHT); _input = new Keyboard(); - + _board = new Board(this, _input, screen); addKeyListener(_input); } - - + private void renderGame() { BufferStrategy bs = getBufferStrategy(); - if(bs == null) { + if (bs == null) { createBufferStrategy(3); return; } - + screen.clear(); - + _board.render(screen); - + for (int i = 0; i < pixels.length; i++) { pixels[i] = screen._pixels[i]; } - + Graphics g = bs.getDrawGraphics(); - + g.drawImage(image, 0, 0, getWidth(), getHeight(), null); _board.renderMessages(g); - + g.dispose(); bs.show(); } - + private void renderScreen() { BufferStrategy bs = getBufferStrategy(); - if(bs == null) { + if (bs == null) { createBufferStrategy(3); return; } - + screen.clear(); - + Graphics g = bs.getDrawGraphics(); - + _board.drawScreen(g); g.dispose(); @@ -110,74 +107,78 @@ private void update() { _input.update(); _board.update(); } - + public void start() { _running = true; - - long lastTime = System.nanoTime(); + + long lastTime = System.nanoTime(); long timer = System.currentTimeMillis(); - final double ns = 1000000000.0 / 60.0; //nanosecond, 60 frames per second + final double ns = 1000000000.0 / 60.0; // nanosecond, 60 frames per second double delta = 0; int frames = 0; int updates = 0; requestFocus(); - while(_running) { + while (_running) { long now = System.nanoTime(); delta += (now - lastTime) / ns; lastTime = now; - while(delta >= 1) { + while (delta >= 1) { update(); updates++; delta--; } - - if(_paused) { - if(_screenDelay <= 0) { + + if (_paused) { + if (_screenDelay <= 0) { _board.setShow(-1); _paused = false; } - + renderScreen(); } else { renderGame(); } - - + frames++; - if(System.currentTimeMillis() - timer > 1000) { + if (System.currentTimeMillis() - timer > 1000) { _frame.setTime(_board.subtractTime()); _frame.setPoints(_board.getPoints()); + _frame.setItemTime(_board.getItemTime()); timer += 1000; _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); updates = 0; frames = 0; - - if(_board.getShow() == 2) + + if (_board.getShow() == 2) --_screenDelay; } } } + public static int getItemTime() { + return itemTime; + } + public static double getBomberSpeed() { return bomberSpeed; } - + public static int getBombRate() { return bombRate; } - + public static int getBombRadius() { return bombRadius; } - + public static void addBomberSpeed(double i) { bomberSpeed += i; } - + public static void addBombRadius(int i) { bombRadius += i; } - + public static void addBombRate(int i) { bombRate += i; } @@ -193,19 +194,21 @@ public static Board getBoard() { public boolean isPaused() { return _paused; } - + public void pause() { _paused = true; } + public static void setBombRate(int bombRate) { - Game.bombRate = bombRate; - } + Game.bombRate = bombRate; + } - public static void setBombRadius(int bombRadius) { - Game.bombRadius = bombRadius; - } + public static void setBombRadius(int bombRadius) { + Game.bombRadius = bombRadius; + } + + public static void setBomberSpeed(double bomberSpeed) { + Game.bomberSpeed = bomberSpeed; + } - public static void setBomberSpeed(double bomberSpeed) { - Game.bomberSpeed = bomberSpeed; - } } diff --git a/src/uet/oop/bomberman/entities/tile/item/BombItem.java b/src/uet/oop/bomberman/entities/tile/item/BombItem.java index c0d0ff0..cf9b5fc 100644 --- a/src/uet/oop/bomberman/entities/tile/item/BombItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/BombItem.java @@ -22,4 +22,9 @@ protected void handleItemInactive() { Game.addBombRate(-1); } + @Override + public String getDisplayActiveItem() { + return "Bomb:"; + } + } diff --git a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java index 78bbe57..6507dcf 100644 --- a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java @@ -21,4 +21,9 @@ protected void handleItemActive() { protected void handleItemInactive() { Game.addBombRadius(-1); } + + @Override + public String getDisplayActiveItem() { + return "Flame:"; + } } diff --git a/src/uet/oop/bomberman/entities/tile/item/Item.java b/src/uet/oop/bomberman/entities/tile/item/Item.java index 33ac804..b67655a 100644 --- a/src/uet/oop/bomberman/entities/tile/item/Item.java +++ b/src/uet/oop/bomberman/entities/tile/item/Item.java @@ -8,32 +8,35 @@ import uet.oop.bomberman.sound.Sound; public abstract class Item extends Tile { - protected int _duration = 300; //5s + protected int _duration = 300; // 5s protected boolean _active = false; protected int _level; + public Item(int x, int y, Sprite sprite) { super(x, y, sprite); } protected abstract void handleItemActive(); + protected abstract void handleItemInactive(); @Override public boolean collide(Entity e) { // TODO: xử lý Bomber ăn Item - if (e instanceof Bomber) { - Sound.play("Item"); - handleItemActive(); - _active = true; - Game.getBoard().addActiveItem(this); - remove(); - } - return false; + if (e instanceof Bomber) { + Sound.play("Item"); + handleItemActive(); + _active = true; + Game.getBoard().addActiveItem(this); + remove(); + } + return false; } @Override public void update() { - if (!_active) return; + if (!_active) + return; if (_duration > 0) { _duration--; } else { @@ -41,5 +44,10 @@ public void update() { _active = false; } } - + + public int getDuration() { + return _duration; + } + + public abstract String getDisplayActiveItem(); } diff --git a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java index b752c14..e8ebfd8 100644 --- a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java @@ -21,4 +21,9 @@ protected void handleItemActive() { protected void handleItemInactive() { Game.addBomberSpeed(-0.5); } + + @Override + public String getDisplayActiveItem() { + return "Speed:"; + } } diff --git a/src/uet/oop/bomberman/gui/Frame.java b/src/uet/oop/bomberman/gui/Frame.java index 1a331e4..0ccb41c 100644 --- a/src/uet/oop/bomberman/gui/Frame.java +++ b/src/uet/oop/bomberman/gui/Frame.java @@ -45,5 +45,9 @@ public void setTime(int time) { public void setPoints(int points) { _infopanel.setPoints(points); } + + public void setItemTime(int itemTime) { + _infopanel.setItemTime(itemTime); + } } diff --git a/src/uet/oop/bomberman/gui/InfoPanel.java b/src/uet/oop/bomberman/gui/InfoPanel.java index de01310..166630b 100644 --- a/src/uet/oop/bomberman/gui/InfoPanel.java +++ b/src/uet/oop/bomberman/gui/InfoPanel.java @@ -1,36 +1,47 @@ package uet.oop.bomberman.gui; import uet.oop.bomberman.Game; +import uet.oop.bomberman.entities.tile.item.Item; import javax.swing.*; import java.awt.*; +import java.util.List; /** * Swing Panel hiển thị thông tin thời gian, điểm mà người chơi đạt được */ public class InfoPanel extends JPanel { - + + private final Game game; private JLabel timeLabel; private JLabel pointsLabel; + private JLabel itemTimeLabel; public InfoPanel(Game game) { + this.game = game; setLayout(new GridLayout()); - + timeLabel = new JLabel("Time: " + game.getBoard().getTime()); timeLabel.setForeground(Color.white); timeLabel.setHorizontalAlignment(JLabel.CENTER); - + pointsLabel = new JLabel("Points: " + game.getBoard().getPoints()); pointsLabel.setForeground(Color.white); pointsLabel.setHorizontalAlignment(JLabel.CENTER); - + + itemTimeLabel = new JLabel(""); + itemTimeLabel.setForeground(Color.white); + itemTimeLabel.setHorizontalAlignment(JLabel.LEFT); + itemTimeLabel.setBorder(BorderFactory.createEmptyBorder(0, 40, 0, 0)); + + add(itemTimeLabel); add(timeLabel); add(pointsLabel); - + setBackground(Color.black); setPreferredSize(new Dimension(0, 40)); } - + public void setTime(int t) { timeLabel.setText("Time: " + t); } @@ -38,5 +49,18 @@ public void setTime(int t) { public void setPoints(int t) { pointsLabel.setText("Score: " + t); } - + + public void setItemTime(int t) { + String label = ""; + List items = game.getBoard().getActiveItems(); + for (int i = 0; i < items.size(); i++) { + Item item = items.get(i); + if ((item.getDuration()) == 0) { + continue; + } + label += item.getDisplayActiveItem() + item.getDuration() / 60 + " "; + } + itemTimeLabel.setText(label); + } + } From fb64fc0efc767a1a00c55d44d412996acfff8e44 Mon Sep 17 00:00:00 2001 From: 21522098_HuyHoang <21522098@gm.uit.edu.vn> Date: Sun, 12 May 2024 07:55:17 +0700 Subject: [PATCH 09/66] Pause_Button_Fixed --- src/uet/oop/bomberman/Game.java | 32 ++++++++++++++++-------- src/uet/oop/bomberman/gui/InfoPanel.java | 22 ++++++++++------ 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 74bc69f..c44c977 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -3,12 +3,14 @@ import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.gui.Frame; import uet.oop.bomberman.input.Keyboard; - +import uet.oop.bomberman.gui.InfoPanel; import java.awt.*; import java.awt.image.BufferStrategy; import java.awt.image.BufferedImage; import java.awt.image.DataBufferInt; +import javafx.event.ActionEvent; + /** * Tạo vòng lặp cho game, lưu trữ một vài tham số cấu hình toàn cục, * Gọi phương thức render(), update() cho tất cả các entity @@ -44,6 +46,7 @@ public class Game extends Canvas { private Keyboard _input; private boolean _running = false; private boolean _paused = true; + private boolean _paused1 = true; private Board _board; private Screen screen; @@ -114,10 +117,8 @@ private void update() { return; } } - public void start() { _running = true; - _paused = false; long lastTime = System.nanoTime(); long timer = System.currentTimeMillis(); final double ns = 1000000000.0 / 60.0; //nanosecond, 60 frames per second @@ -134,19 +135,27 @@ public void start() { updates++; delta--; } - if (_input.pause) { - _paused = !_paused; if (_paused) { + if (_screenDelay <= 0) { + _board.setShow(-1); + _paused = false; + } + renderScreen(); + } else { + renderGame(); + } + if (_paused1) { _board.setShow(3); } else { _board.setShow(-1); } - } - if(_paused) { - renderScreen(); - } else { - renderGame(); + if (_input.pause) { + _paused1 = !_paused1; + if (_paused) { + _board.setShow(3); + } else { + } } @@ -202,7 +211,7 @@ public boolean isPaused() { } public void pause() { - _paused = true; + _paused = !_paused; } public static void setBombRate(int bombRate) { Game.bombRate = bombRate; @@ -215,4 +224,5 @@ public static void setBombRadius(int bombRadius) { public static void setBomberSpeed(double bomberSpeed) { Game.bomberSpeed = bomberSpeed; } + } diff --git a/src/uet/oop/bomberman/gui/InfoPanel.java b/src/uet/oop/bomberman/gui/InfoPanel.java index 366a835..2341c67 100644 --- a/src/uet/oop/bomberman/gui/InfoPanel.java +++ b/src/uet/oop/bomberman/gui/InfoPanel.java @@ -1,28 +1,24 @@ package uet.oop.bomberman.gui; -import java.awt.event.ActionListener; import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; import javax.swing.*; - - -import javafx.event.*; - import java.awt.*; +import java.awt.event.*; /** * Swing Panel hiển thị thông tin thời gian, điểm mà người chơi đạt được */ public class InfoPanel extends JPanel { - private static Board _board; private boolean gamePaused = false; private JLabel timeLabel; private JLabel pointsLabel; private JButton pauseButton; + private Game game; public InfoPanel(Game game) { setLayout(new GridLayout(1, 3)); - + this.game = game; timeLabel = new JLabel("Time: " + game.getBoard().getTime()); timeLabel.setForeground(Color.white); timeLabel.setHorizontalAlignment(JLabel.CENTER); @@ -32,8 +28,18 @@ public InfoPanel(Game game) { pointsLabel.setHorizontalAlignment(JLabel.CENTER); pauseButton = new JButton("Pause"); - pauseButton.setForeground(Color.white); + pauseButton.setForeground(Color.WHITE); pauseButton.setHorizontalAlignment(JButton.CENTER); + pauseButton.setBackground(Color.BLACK); + pauseButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + game.pause(); + gamePaused = !gamePaused; + pauseButton.setText(gamePaused? "Resume" : "Pause"); + } + }); + add(timeLabel); add(pointsLabel); add(pauseButton); From 5ca0502702a40977878eb888f4d7db9d7d9f7ebc Mon Sep 17 00:00:00 2001 From: Huy010302 <111289985+Huy010302@users.noreply.github.com> Date: Sun, 12 May 2024 13:32:40 +0700 Subject: [PATCH 10/66] add level, create enemy --- res/levels/Level3.txt | 14 ++ .../entities/character/enemy/Kondoria.java | 40 +++++ .../entities/character/enemy/Minvo.java | 138 ++++++++++++++++++ 3 files changed, 192 insertions(+) create mode 100644 res/levels/Level3.txt create mode 100644 src/uet/oop/bomberman/entities/character/enemy/Kondoria.java create mode 100644 src/uet/oop/bomberman/entities/character/enemy/Minvo.java diff --git a/res/levels/Level3.txt b/res/levels/Level3.txt new file mode 100644 index 0000000..40a9bf4 --- /dev/null +++ b/res/levels/Level3.txt @@ -0,0 +1,14 @@ +3 13 31 +############################### +#p * *3 * ** * * *# +# # # # #*# # #*# # # # # #*# # +# * * *** ** # * ** # +# #*# # # # #4# #b#1# # # # #*# +# * ** * **# +# # #*# # # # # #*#*#*#*# # # # +# * * * *x* * 4 # +# # # # #*# # # # # # #*# #*# # +# **** *2 # +# # # # # # # # # #*# # # # #*# +# ** ** * 5 # +############################### \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java new file mode 100644 index 0000000..95fe5d4 --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java @@ -0,0 +1,40 @@ +package uet.oop.bomberman.entities.character.enemy; + +import uet.oop.bomberman.Game; +import uet.oop.bomberman.Board; +import uet.oop.bomberman.entities.character.enemy.ai.AIMedium; +import uet.oop.bomberman.graphics.Sprite; + +public class Kondoria extends Enemy { + public Kondoria(int x, int y, Board board) { + super(x, y, board, Sprite.balloom_dead, Game.getBomberSpeed() / 4, 1000); + + _sprite = Sprite.kondoria_right1; + + _ai = new AIMedium(_board.getBomber(), this); + _direction = _ai.calculateDirection(); + // this._speed += random.nextDouble()/2; + } + + @Override + protected void chooseSprite() { + switch (_direction) { + case 0: + case 1: + if (_moving) + _sprite = Sprite.movingSprite(Sprite.kondoria_right1, Sprite.kondoria_right2, + Sprite.kondoria_right3, _animate, 60); + else + _sprite = Sprite.kondoria_left1; + break; + case 2: + case 3: + if (_moving) + _sprite = Sprite.movingSprite(Sprite.kondoria_left1, Sprite.kondoria_left2, Sprite.kondoria_left3, + _animate, 60); + else + _sprite = Sprite.kondoria_left1; + break; + } + } +} diff --git a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java new file mode 100644 index 0000000..e4ad4d7 --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java @@ -0,0 +1,138 @@ +package uet.oop.bomberman.entities.character.enemy; + +import uet.oop.bomberman.Board; +import uet.oop.bomberman.Game; +import uet.oop.bomberman.entities.character.enemy.ai.AIMedium; +import uet.oop.bomberman.graphics.Sprite; + +public class Minvo extends Enemy { + private Board _board; + + public Minvo(int x, int y, Board board) { + super(x, y, board, Sprite.minvo_dead, Game.getBomberSpeed() * 1.5, 800); + _board = board; + _sprite = Sprite.minvo_right1; + + _ai = new AIMedium(_board.getBomber(), this); + _direction = _ai.calculateDirection(); + } + + @Override + protected void chooseSprite() { + switch (_direction) { + case 0: + case 1: + if (_moving) + _sprite = Sprite.movingSprite(Sprite.minvo_right1, Sprite.minvo_right2, Sprite.minvo_right3, + _animate, 60); + else + _sprite = Sprite.minvo_left1; + break; + case 2: + case 3: + if (_moving) + _sprite = Sprite.movingSprite(Sprite.minvo_left1, Sprite.minvo_left2, Sprite.minvo_left3, _animate, + 60); + else + _sprite = Sprite.minvo_left1; + break; + } + } + + // // Thêm hành vi cho Minvo + + // @Override + // public void update() { + // super.update(); + // Bomber bomber = _board.getBomber(); + // if (bomber != null) { + // int bomberX = bomber.getXTile(); + // int bomberY = bomber.getYTile(); + // int minvoX = this.getXTile(); + // int minvoY = this.getYTile(); + + // double distance = Math.sqrt(Math.pow(bomberX - minvoX, 2) + Math.pow(bomberY + // - minvoY, 2)); + + // // Kiểm tra xem khoảng cách giữa Minvo và Bomber có dưới một ngưỡng nhất định + // // hay không + // if (distance <= 3) { + // moveTowardBomber(); + // placeBomb(); + // } else { + // _direction = _ai.calculateDirection(); + // // move(); + // } + // } + // } + + // private void moveTowardBomber() { + // Bomber bomber = _board.getBomber(); + // if (bomber != null) { + // int bomberX = bomber.getXTile(); + // int bomberY = bomber.getYTile(); + // int minvoX = this.getXTile(); + // int minvoY = this.getYTile(); + + // // hướng vector từ minvo đến bomber + // int dx = bomberX - minvoX; + // int dy = bomberY - minvoY; + + // // Chọn hướng đi gần nhất + // if (Math.abs(dx) > Math.abs(dy)) { + // if (dx > 0) { + // _direction = 1; // Di chuyển sang phải + // } else { + // _direction = 3; // Di chuyển sang trái + // } + // } else { + // if (dy > 0) { + // _direction = 2; // Di chuyển xuống dưới + // } else { + // _direction = 0; // Di chuyển lên trên + // } + + // } + // } + // // // di chuyển mivo + // // move(); + + // } + + // private void placeBomb() { + // if (_board.detectNoEnemies()) { + // return; + // } + // int bombRate = _board.getBombRate(); + // if (Math.random() < bombRate) { // Kiểm tra xác suất đặt bom + // int xt = Coordinates.pixelToTile(_x + Game.TILES_SIZE / 2); + // int yt = Coordinates.pixelToTile((_y + Game.TILES_SIZE / 2)); + // _board.addBomb(new Bomb(xt, yt, _board)); + // } + // } + + // private void move() { + // double xa = _x, ya = _y; + + // switch (_direction) { + // case 0: + // ya -= _speed; + // break; + // case 1: + // xa += _speed; + // break; + // case 2: + // ya += _speed; + // break; + // case 3: + // xa -= _speed; + // break; + // } + + // // Kiểm tra va chạm với tường và cập nhật tọa độ đích đến nếu cần + // if (!_board.detectWallCollision(xa, ya, _collisionRadius)) { + // _x = xa; + // _y = ya; + // } + // } +} From e6441d4f5bd241cabfdb99140bb9aae842edccf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=C6=B0=C6=A1ng=20Minh?= <113281373+phuonnngminh@users.noreply.github.com> Date: Sun, 12 May 2024 22:09:48 +0700 Subject: [PATCH 11/66] Revert "Select level" --- src/uet/oop/bomberman/Game.java | 132 +++++++----------- src/uet/oop/bomberman/graphics/Screen.java | 5 +- src/uet/oop/bomberman/gui/GameScreen.java | 8 -- src/uet/oop/bomberman/input/Keyboard.java | 42 +----- .../bomberman/screen/SelectLevelScreen.java | 114 --------------- src/uet/oop/bomberman/utils/EGameControl.java | 11 -- src/uet/oop/bomberman/utils/EGameLevel.java | 17 --- src/uet/oop/bomberman/utils/EScreenName.java | 6 - src/uet/oop/bomberman/utils/Global.java | 8 -- 9 files changed, 52 insertions(+), 291 deletions(-) delete mode 100644 src/uet/oop/bomberman/gui/GameScreen.java delete mode 100644 src/uet/oop/bomberman/screen/SelectLevelScreen.java delete mode 100644 src/uet/oop/bomberman/utils/EGameControl.java delete mode 100644 src/uet/oop/bomberman/utils/EGameLevel.java delete mode 100644 src/uet/oop/bomberman/utils/EScreenName.java delete mode 100644 src/uet/oop/bomberman/utils/Global.java diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 6af2a57..f043707 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -3,9 +3,6 @@ import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.gui.Frame; import uet.oop.bomberman.input.Keyboard; -import uet.oop.bomberman.screen.SelectLevelScreen; -import uet.oop.bomberman.utils.EScreenName; -import uet.oop.bomberman.utils.Global; import java.awt.*; import java.awt.image.BufferStrategy; @@ -52,16 +49,8 @@ public class Game extends Canvas { private Frame _frame; private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); - private int[] pixels = ((DataBufferInt)image.getRaster().getDataBuffer()).getData(); + private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData(); - // game variable - private int frames; - private int updates; - private long timer; - - // game screens - private SelectLevelScreen selectLevelScreen; - public Game(Frame frame) { _frame = frame; _frame.setTitle(TITLE); @@ -71,12 +60,15 @@ public Game(Frame frame) { _board = new Board(this, _input, screen); addKeyListener(_input); - - initScreen(); } - - - private void renderGame(Graphics g) { + + private void renderGame() { + BufferStrategy bs = getBufferStrategy(); + if (bs == null) { + createBufferStrategy(3); + return; + } + screen.clear(); _board.render(screen); @@ -84,94 +76,47 @@ private void renderGame(Graphics g) { for (int i = 0; i < pixels.length; i++) { pixels[i] = screen._pixels[i]; } - - g.drawImage(image, 0, 0, getWidth(), getHeight(), null); - _board.renderMessages(g); - } - - private void renderScreen(Graphics g) { - screen.clear(); - _board.drawScreen(g); - } - private void initScreen() { - Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; + Graphics g = bs.getDrawGraphics(); - this.selectLevelScreen = new SelectLevelScreen(_input); - } + g.drawImage(image, 0, 0, getWidth(), getHeight(), null); + _board.renderMessages(g); - private void update() { - _input.update(); - switch (Global.currentScreen) { - case GAME_PLAY_SCREEN: - _board.update(); - break; - case SELECT_LEVEL_SCREEN: - // TODO: call select level screen update - selectLevelScreen.update(); - break; - } + g.dispose(); + bs.show(); } - private void showScreen() { + private void renderScreen() { BufferStrategy bs = getBufferStrategy(); if (bs == null) { createBufferStrategy(3); return; } - Graphics g = bs.getDrawGraphics(); - - switch (Global.currentScreen) { - case GAME_PLAY_SCREEN: - if(_paused) { - if(_screenDelay <= 0) { - _board.setShow(-1); - _paused = false; - } - - renderScreen(g); - } else { - renderGame(g); - } + screen.clear(); - frames++; - if(System.currentTimeMillis() - timer > 1000) { - _frame.setTime(_board.subtractTime()); - _frame.setPoints(_board.getPoints()); - timer += 1000; - _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); - updates = 0; - frames = 0; + Graphics g = bs.getDrawGraphics(); - if(_board.getShow() == 2) - --_screenDelay; - } - break; - case SELECT_LEVEL_SCREEN: - // TODO: render select level screen - selectLevelScreen.drawScreen(g); - break; - } + _board.drawScreen(g); g.dispose(); bs.show(); } - private void initGame() { - this.timer = System.currentTimeMillis(); - this.frames = 0; - this.updates = 0; + private void update() { + _input.update(); + _board.update(); } public void start() { _running = true; - initGame(); - - long lastTime = System.nanoTime(); - final double ns = 1000000000.0 / 60.0; //nanosecond, 60 frames per second + long lastTime = System.nanoTime(); + long timer = System.currentTimeMillis(); + final double ns = 1000000000.0 / 60.0; // nanosecond, 60 frames per second double delta = 0; + int frames = 0; + int updates = 0; requestFocus(); while (_running) { long now = System.nanoTime(); @@ -183,7 +128,30 @@ public void start() { delta--; } - showScreen(); + if (_paused) { + if (_screenDelay <= 0) { + _board.setShow(-1); + _paused = false; + } + + renderScreen(); + } else { + renderGame(); + } + + frames++; + if (System.currentTimeMillis() - timer > 1000) { + _frame.setTime(_board.subtractTime()); + _frame.setPoints(_board.getPoints()); + _frame.setItemTime(_board.getItemTime()); + timer += 1000; + _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); + updates = 0; + frames = 0; + + if (_board.getShow() == 2) + --_screenDelay; + } } } diff --git a/src/uet/oop/bomberman/graphics/Screen.java b/src/uet/oop/bomberman/graphics/Screen.java index 8cbc134..2494ea2 100644 --- a/src/uet/oop/bomberman/graphics/Screen.java +++ b/src/uet/oop/bomberman/graphics/Screen.java @@ -4,7 +4,6 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Bomber; -import uet.oop.bomberman.utils.Global; import java.awt.*; @@ -23,9 +22,7 @@ public Screen(int width, int height) { _height = height; _pixels = new int[width * height]; - - Global.screenWidth = this.getRealWidth(); - Global.screenHeight = this.getRealHeight(); + } public void clear() { diff --git a/src/uet/oop/bomberman/gui/GameScreen.java b/src/uet/oop/bomberman/gui/GameScreen.java deleted file mode 100644 index 93a79c1..0000000 --- a/src/uet/oop/bomberman/gui/GameScreen.java +++ /dev/null @@ -1,8 +0,0 @@ -package uet.oop.bomberman.gui; - -import java.awt.*; - -public abstract class GameScreen { - public abstract void drawScreen(Graphics g); - public abstract void update(); -} diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index 7026dc9..bb8daad 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -1,23 +1,15 @@ package uet.oop.bomberman.input; -import uet.oop.bomberman.utils.EGameControl; - import java.awt.event.KeyEvent; import java.awt.event.KeyListener; -import java.util.Optional; /** * Tiếp nhận và xử lý các sự kiện nhập từ bàn phím */ public class Keyboard implements KeyListener { - - public interface KeyboardInputCallback { - void onKeyPressed(EGameControl gameControl); - } private boolean[] keys = new boolean[120]; //120 is enough to this game public boolean up, down, left, right, space; - public Optional keyboardInputCallback; public void update() { up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W]; @@ -27,45 +19,13 @@ public void update() { space = keys[KeyEvent.VK_SPACE] || keys[KeyEvent.VK_X]; } - private EGameControl keyToGameControl(int keyCode) { - if (keyCode == KeyEvent.VK_UP || keyCode == KeyEvent.VK_W) { - return EGameControl.UP; - } - - if (keyCode == KeyEvent.VK_DOWN || keyCode == KeyEvent.VK_S) { - return EGameControl.DOWN; - } - - if (keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_A) { - return EGameControl.LEFT; - } - - if (keyCode == KeyEvent.VK_RIGHT || keyCode == KeyEvent.VK_D) { - return EGameControl.RIGHT; - } - - if (keyCode == KeyEvent.VK_SPACE || keyCode == KeyEvent.VK_X) { - return EGameControl.SPACE; - } - - if (keyCode == KeyEvent.VK_ENTER) { - return EGameControl.ENTER; - } - - return EGameControl.NONE; - } - @Override public void keyTyped(KeyEvent e) {} @Override public void keyPressed(KeyEvent e) { keys[e.getKeyCode()] = true; - - if (keyboardInputCallback.isPresent()) { - KeyboardInputCallback callback = keyboardInputCallback.get(); - callback.onKeyPressed(keyToGameControl(e.getKeyCode())); - } + } @Override diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java deleted file mode 100644 index 33fb2a1..0000000 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ /dev/null @@ -1,114 +0,0 @@ -package uet.oop.bomberman.screen; - -import uet.oop.bomberman.Game; -import uet.oop.bomberman.gui.GameScreen; -import uet.oop.bomberman.input.Keyboard; -import uet.oop.bomberman.utils.EGameControl; -import uet.oop.bomberman.utils.EGameLevel; -import uet.oop.bomberman.utils.EScreenName; -import uet.oop.bomberman.utils.Global; - -import java.awt.*; -import java.awt.event.KeyEvent; -import java.util.ArrayList; - -public class SelectLevelScreen extends GameScreen { - ArrayList levels = new ArrayList(); - int selectorIndex = 0; - private Keyboard _input; - - public SelectLevelScreen(Keyboard input) { - _input = input; - - levels.add(EGameLevel.EASY.getStringLevel()); - levels.add(EGameLevel.MEDIUM.getStringLevel()); - levels.add(EGameLevel.HARD.getStringLevel()); - - _input.keyboardInputCallback = java.util.Optional.of(new Keyboard.KeyboardInputCallback() { - @Override - public void onKeyPressed(EGameControl gameControl) { - switch (gameControl) { - case UP: - selectorIndex--; - break; - case DOWN: - selectorIndex++; - break; - case ENTER: - Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; - break; - } - - if (selectorIndex < 0) { - selectorIndex = levels.size() - 1; - } else if (selectorIndex > levels.size() - 1) { - selectorIndex = 0; - } - } - }); - } - - @Override - public void drawScreen(Graphics g) { - // set background - g.setColor(Color.black); - g.fillRect(0, 0, Global.screenWidth, Global.screenHeight); - - drawTitle(g); - drawOptions(g); - drawSelector(g); - } - - private void drawTitle(Graphics g) { - String title = "SELECT LEVEL"; - Font font = new Font("Arial", Font.BOLD, 20 * Game.SCALE); - g.setFont(font); - g.setColor(Color.white); - - FontMetrics fm = g.getFontMetrics(); - int x = (Global.screenWidth - fm.stringWidth(title)) / 2; - int marginTop = 20; - int y = marginTop + fm.getAscent(); - - g.drawString(title, x, y); - } - - private void drawOptions(Graphics g) { - Font font = new Font("Arial", Font.PLAIN, 10 * Game.SCALE); - g.setFont(font); - g.setColor(Color.white); - - int w = Global.screenWidth; - int h = Global.screenHeight; - FontMetrics fm = g.getFontMetrics(); - int textHeight = fm.getAscent() + fm.getDescent(); - int boxHeight = textHeight * this.levels.size(); - int marginTop = (h - boxHeight) / 2; - - for (int i=0; i < this.levels.size(); i++) { - String level = this.levels.get(i); - int x = (w - fm.stringWidth(level)) / 2; - int y = marginTop + fm.getAscent() + textHeight*i; - - g.drawString(level, x, y); - } - } - - private void drawSelector(Graphics g) { - String level = this.levels.get(selectorIndex); - int w = Global.screenWidth; - int h = Global.screenHeight; - FontMetrics fm = g.getFontMetrics(); - int textHeight = fm.getAscent() + fm.getDescent(); - int boxHeight = textHeight * this.levels.size(); - int marginTop = (h - boxHeight) / 2; - - int x = (w - fm.stringWidth(level)) / 2 - 30; - int y = marginTop + fm.getAscent() + textHeight*selectorIndex; - - g.drawString(">", x, y); - } - - @Override - public void update() {} -} diff --git a/src/uet/oop/bomberman/utils/EGameControl.java b/src/uet/oop/bomberman/utils/EGameControl.java deleted file mode 100644 index fa8cea4..0000000 --- a/src/uet/oop/bomberman/utils/EGameControl.java +++ /dev/null @@ -1,11 +0,0 @@ -package uet.oop.bomberman.utils; - -public enum EGameControl { - NONE, - UP, - DOWN, - LEFT, - RIGHT, - ENTER, - SPACE, -} diff --git a/src/uet/oop/bomberman/utils/EGameLevel.java b/src/uet/oop/bomberman/utils/EGameLevel.java deleted file mode 100644 index 7644772..0000000 --- a/src/uet/oop/bomberman/utils/EGameLevel.java +++ /dev/null @@ -1,17 +0,0 @@ -package uet.oop.bomberman.utils; - -public enum EGameLevel { - EASY("Easy"), - MEDIUM("Medium"), - HARD("Hard"); - - private final String level; - - EGameLevel(String level) { - this.level = level; - } - - public String getStringLevel() { - return this.level; - } -} diff --git a/src/uet/oop/bomberman/utils/EScreenName.java b/src/uet/oop/bomberman/utils/EScreenName.java deleted file mode 100644 index 515a6e8..0000000 --- a/src/uet/oop/bomberman/utils/EScreenName.java +++ /dev/null @@ -1,6 +0,0 @@ -package uet.oop.bomberman.utils; - -public enum EScreenName { - SELECT_LEVEL_SCREEN, - GAME_PLAY_SCREEN, -} diff --git a/src/uet/oop/bomberman/utils/Global.java b/src/uet/oop/bomberman/utils/Global.java deleted file mode 100644 index 623e0a6..0000000 --- a/src/uet/oop/bomberman/utils/Global.java +++ /dev/null @@ -1,8 +0,0 @@ -package uet.oop.bomberman.utils; - -public class Global { - public static int screenWidth; - public static int screenHeight; - - public static EScreenName currentScreen; -} From 49bc95ca4416ce7c37c31dc246b45d4f1e7b4254 Mon Sep 17 00:00:00 2001 From: Hang Le Thi Bich <21522041@gm.uit.edu.vn> Date: Tue, 14 May 2024 22:08:03 +0700 Subject: [PATCH 12/66] Revert "Revert "Select level"" This reverts commit e6441d4f5bd241cabfdb99140bb9aae842edccf6. --- src/uet/oop/bomberman/Game.java | 132 +++++++++++------- src/uet/oop/bomberman/graphics/Screen.java | 5 +- src/uet/oop/bomberman/gui/GameScreen.java | 8 ++ src/uet/oop/bomberman/input/Keyboard.java | 42 +++++- .../bomberman/screen/SelectLevelScreen.java | 114 +++++++++++++++ src/uet/oop/bomberman/utils/EGameControl.java | 11 ++ src/uet/oop/bomberman/utils/EGameLevel.java | 17 +++ src/uet/oop/bomberman/utils/EScreenName.java | 6 + src/uet/oop/bomberman/utils/Global.java | 8 ++ 9 files changed, 291 insertions(+), 52 deletions(-) create mode 100644 src/uet/oop/bomberman/gui/GameScreen.java create mode 100644 src/uet/oop/bomberman/screen/SelectLevelScreen.java create mode 100644 src/uet/oop/bomberman/utils/EGameControl.java create mode 100644 src/uet/oop/bomberman/utils/EGameLevel.java create mode 100644 src/uet/oop/bomberman/utils/EScreenName.java create mode 100644 src/uet/oop/bomberman/utils/Global.java diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index f043707..6af2a57 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -3,6 +3,9 @@ import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.gui.Frame; import uet.oop.bomberman.input.Keyboard; +import uet.oop.bomberman.screen.SelectLevelScreen; +import uet.oop.bomberman.utils.EScreenName; +import uet.oop.bomberman.utils.Global; import java.awt.*; import java.awt.image.BufferStrategy; @@ -49,8 +52,16 @@ public class Game extends Canvas { private Frame _frame; private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); - private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData(); + private int[] pixels = ((DataBufferInt)image.getRaster().getDataBuffer()).getData(); + // game variable + private int frames; + private int updates; + private long timer; + + // game screens + private SelectLevelScreen selectLevelScreen; + public Game(Frame frame) { _frame = frame; _frame.setTitle(TITLE); @@ -60,15 +71,12 @@ public Game(Frame frame) { _board = new Board(this, _input, screen); addKeyListener(_input); - } - - private void renderGame() { - BufferStrategy bs = getBufferStrategy(); - if (bs == null) { - createBufferStrategy(3); - return; - } + initScreen(); + } + + + private void renderGame(Graphics g) { screen.clear(); _board.render(screen); @@ -76,47 +84,94 @@ private void renderGame() { for (int i = 0; i < pixels.length; i++) { pixels[i] = screen._pixels[i]; } - - Graphics g = bs.getDrawGraphics(); - + g.drawImage(image, 0, 0, getWidth(), getHeight(), null); _board.renderMessages(g); + } + + private void renderScreen(Graphics g) { + screen.clear(); + _board.drawScreen(g); + } - g.dispose(); - bs.show(); + private void initScreen() { + Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; + + this.selectLevelScreen = new SelectLevelScreen(_input); } - private void renderScreen() { + private void update() { + _input.update(); + switch (Global.currentScreen) { + case GAME_PLAY_SCREEN: + _board.update(); + break; + case SELECT_LEVEL_SCREEN: + // TODO: call select level screen update + selectLevelScreen.update(); + break; + } + } + + private void showScreen() { BufferStrategy bs = getBufferStrategy(); if (bs == null) { createBufferStrategy(3); return; } + Graphics g = bs.getDrawGraphics(); - screen.clear(); + switch (Global.currentScreen) { + case GAME_PLAY_SCREEN: + if(_paused) { + if(_screenDelay <= 0) { + _board.setShow(-1); + _paused = false; + } + + renderScreen(g); + } else { + renderGame(g); + } - Graphics g = bs.getDrawGraphics(); - _board.drawScreen(g); + frames++; + if(System.currentTimeMillis() - timer > 1000) { + _frame.setTime(_board.subtractTime()); + _frame.setPoints(_board.getPoints()); + timer += 1000; + _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); + updates = 0; + frames = 0; + + if(_board.getShow() == 2) + --_screenDelay; + } + break; + case SELECT_LEVEL_SCREEN: + // TODO: render select level screen + selectLevelScreen.drawScreen(g); + break; + } g.dispose(); bs.show(); } - private void update() { - _input.update(); - _board.update(); + private void initGame() { + this.timer = System.currentTimeMillis(); + this.frames = 0; + this.updates = 0; } public void start() { _running = true; - long lastTime = System.nanoTime(); - long timer = System.currentTimeMillis(); - final double ns = 1000000000.0 / 60.0; // nanosecond, 60 frames per second + initGame(); + + long lastTime = System.nanoTime(); + final double ns = 1000000000.0 / 60.0; //nanosecond, 60 frames per second double delta = 0; - int frames = 0; - int updates = 0; requestFocus(); while (_running) { long now = System.nanoTime(); @@ -128,30 +183,7 @@ public void start() { delta--; } - if (_paused) { - if (_screenDelay <= 0) { - _board.setShow(-1); - _paused = false; - } - - renderScreen(); - } else { - renderGame(); - } - - frames++; - if (System.currentTimeMillis() - timer > 1000) { - _frame.setTime(_board.subtractTime()); - _frame.setPoints(_board.getPoints()); - _frame.setItemTime(_board.getItemTime()); - timer += 1000; - _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); - updates = 0; - frames = 0; - - if (_board.getShow() == 2) - --_screenDelay; - } + showScreen(); } } diff --git a/src/uet/oop/bomberman/graphics/Screen.java b/src/uet/oop/bomberman/graphics/Screen.java index 2494ea2..8cbc134 100644 --- a/src/uet/oop/bomberman/graphics/Screen.java +++ b/src/uet/oop/bomberman/graphics/Screen.java @@ -4,6 +4,7 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Bomber; +import uet.oop.bomberman.utils.Global; import java.awt.*; @@ -22,7 +23,9 @@ public Screen(int width, int height) { _height = height; _pixels = new int[width * height]; - + + Global.screenWidth = this.getRealWidth(); + Global.screenHeight = this.getRealHeight(); } public void clear() { diff --git a/src/uet/oop/bomberman/gui/GameScreen.java b/src/uet/oop/bomberman/gui/GameScreen.java new file mode 100644 index 0000000..93a79c1 --- /dev/null +++ b/src/uet/oop/bomberman/gui/GameScreen.java @@ -0,0 +1,8 @@ +package uet.oop.bomberman.gui; + +import java.awt.*; + +public abstract class GameScreen { + public abstract void drawScreen(Graphics g); + public abstract void update(); +} diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index bb8daad..7026dc9 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -1,15 +1,23 @@ package uet.oop.bomberman.input; +import uet.oop.bomberman.utils.EGameControl; + import java.awt.event.KeyEvent; import java.awt.event.KeyListener; +import java.util.Optional; /** * Tiếp nhận và xử lý các sự kiện nhập từ bàn phím */ public class Keyboard implements KeyListener { + + public interface KeyboardInputCallback { + void onKeyPressed(EGameControl gameControl); + } private boolean[] keys = new boolean[120]; //120 is enough to this game public boolean up, down, left, right, space; + public Optional keyboardInputCallback; public void update() { up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W]; @@ -19,13 +27,45 @@ public void update() { space = keys[KeyEvent.VK_SPACE] || keys[KeyEvent.VK_X]; } + private EGameControl keyToGameControl(int keyCode) { + if (keyCode == KeyEvent.VK_UP || keyCode == KeyEvent.VK_W) { + return EGameControl.UP; + } + + if (keyCode == KeyEvent.VK_DOWN || keyCode == KeyEvent.VK_S) { + return EGameControl.DOWN; + } + + if (keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_A) { + return EGameControl.LEFT; + } + + if (keyCode == KeyEvent.VK_RIGHT || keyCode == KeyEvent.VK_D) { + return EGameControl.RIGHT; + } + + if (keyCode == KeyEvent.VK_SPACE || keyCode == KeyEvent.VK_X) { + return EGameControl.SPACE; + } + + if (keyCode == KeyEvent.VK_ENTER) { + return EGameControl.ENTER; + } + + return EGameControl.NONE; + } + @Override public void keyTyped(KeyEvent e) {} @Override public void keyPressed(KeyEvent e) { keys[e.getKeyCode()] = true; - + + if (keyboardInputCallback.isPresent()) { + KeyboardInputCallback callback = keyboardInputCallback.get(); + callback.onKeyPressed(keyToGameControl(e.getKeyCode())); + } } @Override diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java new file mode 100644 index 0000000..33fb2a1 --- /dev/null +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -0,0 +1,114 @@ +package uet.oop.bomberman.screen; + +import uet.oop.bomberman.Game; +import uet.oop.bomberman.gui.GameScreen; +import uet.oop.bomberman.input.Keyboard; +import uet.oop.bomberman.utils.EGameControl; +import uet.oop.bomberman.utils.EGameLevel; +import uet.oop.bomberman.utils.EScreenName; +import uet.oop.bomberman.utils.Global; + +import java.awt.*; +import java.awt.event.KeyEvent; +import java.util.ArrayList; + +public class SelectLevelScreen extends GameScreen { + ArrayList levels = new ArrayList(); + int selectorIndex = 0; + private Keyboard _input; + + public SelectLevelScreen(Keyboard input) { + _input = input; + + levels.add(EGameLevel.EASY.getStringLevel()); + levels.add(EGameLevel.MEDIUM.getStringLevel()); + levels.add(EGameLevel.HARD.getStringLevel()); + + _input.keyboardInputCallback = java.util.Optional.of(new Keyboard.KeyboardInputCallback() { + @Override + public void onKeyPressed(EGameControl gameControl) { + switch (gameControl) { + case UP: + selectorIndex--; + break; + case DOWN: + selectorIndex++; + break; + case ENTER: + Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; + break; + } + + if (selectorIndex < 0) { + selectorIndex = levels.size() - 1; + } else if (selectorIndex > levels.size() - 1) { + selectorIndex = 0; + } + } + }); + } + + @Override + public void drawScreen(Graphics g) { + // set background + g.setColor(Color.black); + g.fillRect(0, 0, Global.screenWidth, Global.screenHeight); + + drawTitle(g); + drawOptions(g); + drawSelector(g); + } + + private void drawTitle(Graphics g) { + String title = "SELECT LEVEL"; + Font font = new Font("Arial", Font.BOLD, 20 * Game.SCALE); + g.setFont(font); + g.setColor(Color.white); + + FontMetrics fm = g.getFontMetrics(); + int x = (Global.screenWidth - fm.stringWidth(title)) / 2; + int marginTop = 20; + int y = marginTop + fm.getAscent(); + + g.drawString(title, x, y); + } + + private void drawOptions(Graphics g) { + Font font = new Font("Arial", Font.PLAIN, 10 * Game.SCALE); + g.setFont(font); + g.setColor(Color.white); + + int w = Global.screenWidth; + int h = Global.screenHeight; + FontMetrics fm = g.getFontMetrics(); + int textHeight = fm.getAscent() + fm.getDescent(); + int boxHeight = textHeight * this.levels.size(); + int marginTop = (h - boxHeight) / 2; + + for (int i=0; i < this.levels.size(); i++) { + String level = this.levels.get(i); + int x = (w - fm.stringWidth(level)) / 2; + int y = marginTop + fm.getAscent() + textHeight*i; + + g.drawString(level, x, y); + } + } + + private void drawSelector(Graphics g) { + String level = this.levels.get(selectorIndex); + int w = Global.screenWidth; + int h = Global.screenHeight; + FontMetrics fm = g.getFontMetrics(); + int textHeight = fm.getAscent() + fm.getDescent(); + int boxHeight = textHeight * this.levels.size(); + int marginTop = (h - boxHeight) / 2; + + int x = (w - fm.stringWidth(level)) / 2 - 30; + int y = marginTop + fm.getAscent() + textHeight*selectorIndex; + + g.drawString(">", x, y); + } + + @Override + public void update() {} +} diff --git a/src/uet/oop/bomberman/utils/EGameControl.java b/src/uet/oop/bomberman/utils/EGameControl.java new file mode 100644 index 0000000..fa8cea4 --- /dev/null +++ b/src/uet/oop/bomberman/utils/EGameControl.java @@ -0,0 +1,11 @@ +package uet.oop.bomberman.utils; + +public enum EGameControl { + NONE, + UP, + DOWN, + LEFT, + RIGHT, + ENTER, + SPACE, +} diff --git a/src/uet/oop/bomberman/utils/EGameLevel.java b/src/uet/oop/bomberman/utils/EGameLevel.java new file mode 100644 index 0000000..7644772 --- /dev/null +++ b/src/uet/oop/bomberman/utils/EGameLevel.java @@ -0,0 +1,17 @@ +package uet.oop.bomberman.utils; + +public enum EGameLevel { + EASY("Easy"), + MEDIUM("Medium"), + HARD("Hard"); + + private final String level; + + EGameLevel(String level) { + this.level = level; + } + + public String getStringLevel() { + return this.level; + } +} diff --git a/src/uet/oop/bomberman/utils/EScreenName.java b/src/uet/oop/bomberman/utils/EScreenName.java new file mode 100644 index 0000000..515a6e8 --- /dev/null +++ b/src/uet/oop/bomberman/utils/EScreenName.java @@ -0,0 +1,6 @@ +package uet.oop.bomberman.utils; + +public enum EScreenName { + SELECT_LEVEL_SCREEN, + GAME_PLAY_SCREEN, +} diff --git a/src/uet/oop/bomberman/utils/Global.java b/src/uet/oop/bomberman/utils/Global.java new file mode 100644 index 0000000..623e0a6 --- /dev/null +++ b/src/uet/oop/bomberman/utils/Global.java @@ -0,0 +1,8 @@ +package uet.oop.bomberman.utils; + +public class Global { + public static int screenWidth; + public static int screenHeight; + + public static EScreenName currentScreen; +} From f0a9bcd660dade615c472c67025dceb3a8cecdc4 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Tue, 14 May 2024 16:43:18 +0000 Subject: [PATCH 13/66] use constant for TICKS_PER_SECOND --- src/uet/oop/bomberman/Board.java | 2 +- src/uet/oop/bomberman/Game.java | 3 ++- src/uet/oop/bomberman/entities/Message.java | 3 ++- src/uet/oop/bomberman/entities/bomb/Bomb.java | 2 +- src/uet/oop/bomberman/entities/character/enemy/Balloon.java | 4 ++-- src/uet/oop/bomberman/entities/character/enemy/Doll.java | 5 +++-- src/uet/oop/bomberman/entities/character/enemy/Enemy.java | 2 +- src/uet/oop/bomberman/entities/character/enemy/Kondoria.java | 4 ++-- src/uet/oop/bomberman/entities/character/enemy/Minvo.java | 4 ++-- src/uet/oop/bomberman/entities/character/enemy/Oneal.java | 4 ++-- src/uet/oop/bomberman/entities/tile/item/Item.java | 2 +- src/uet/oop/bomberman/gui/InfoPanel.java | 2 +- src/uet/oop/bomberman/input/Keyboard.java | 2 +- 13 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 0bf31f2..5d05ee3 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -348,7 +348,7 @@ public int subtractTime() { public int getItemTime() { int totalTime = 0; for (int i = 0; i < _activeItems.size(); i++) { - totalTime += _activeItems.get(i).getDuration() / 60; + totalTime += _activeItems.get(i).getDuration() / Game.TICKS_PER_SECOND; } return totalTime; } diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index f043707..b217f0b 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -22,6 +22,7 @@ public class Game extends Canvas { public static int SCALE = 3; public static final String TITLE = "BombermanGame"; + public static final int TICKS_PER_SECOND = 60; private static final int BOMBRATE = 1; private static final int BOMBRADIUS = 1; @@ -113,7 +114,7 @@ public void start() { long lastTime = System.nanoTime(); long timer = System.currentTimeMillis(); - final double ns = 1000000000.0 / 60.0; // nanosecond, 60 frames per second + final double ns = 1000000000.0 / TICKS_PER_SECOND; // nanosecond, 60 frames per second double delta = 0; int frames = 0; int updates = 0; diff --git a/src/uet/oop/bomberman/entities/Message.java b/src/uet/oop/bomberman/entities/Message.java index 1e743e7..4bfab68 100644 --- a/src/uet/oop/bomberman/entities/Message.java +++ b/src/uet/oop/bomberman/entities/Message.java @@ -1,5 +1,6 @@ package uet.oop.bomberman.entities; +import uet.oop.bomberman.Game; import uet.oop.bomberman.graphics.Screen; import java.awt.*; @@ -27,7 +28,7 @@ public Message(String message, double x, double y, int duration, Color color, in _x =x; _y = y; _message = message; - _duration = duration * 60; //seconds + _duration = duration * Game.TICKS_PER_SECOND; //seconds _color = color; _size = size; } diff --git a/src/uet/oop/bomberman/entities/bomb/Bomb.java b/src/uet/oop/bomberman/entities/bomb/Bomb.java index 34e1a20..f65b5d7 100644 --- a/src/uet/oop/bomberman/entities/bomb/Bomb.java +++ b/src/uet/oop/bomberman/entities/bomb/Bomb.java @@ -52,7 +52,7 @@ public void render(Screen screen) { _sprite = Sprite.bomb_exploded2; renderFlames(screen); } else - _sprite = Sprite.movingSprite(Sprite.bomb, Sprite.bomb_1, Sprite.bomb_2, _animate, 60); + _sprite = Sprite.movingSprite(Sprite.bomb, Sprite.bomb_1, Sprite.bomb_2, _animate, Game.TICKS_PER_SECOND); int xt = (int)_x << 4; int yt = (int)_y << 4; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Balloon.java b/src/uet/oop/bomberman/entities/character/enemy/Balloon.java index e0d43dc..f8a3ab1 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Balloon.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Balloon.java @@ -25,11 +25,11 @@ protected void chooseSprite() { switch(_direction) { case 0: case 1: - _sprite = Sprite.movingSprite(Sprite.balloom_right1, Sprite.balloom_right2, Sprite.balloom_right3, _animate, 60); + _sprite = Sprite.movingSprite(Sprite.balloom_right1, Sprite.balloom_right2, Sprite.balloom_right3, _animate, Game.TICKS_PER_SECOND); break; case 2: case 3: - _sprite = Sprite.movingSprite(Sprite.balloom_left1, Sprite.balloom_left2, Sprite.balloom_left3, _animate, 60); + _sprite = Sprite.movingSprite(Sprite.balloom_left1, Sprite.balloom_left2, Sprite.balloom_left3, _animate, Game.TICKS_PER_SECOND); break; } } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Doll.java b/src/uet/oop/bomberman/entities/character/enemy/Doll.java index dc85fce..72fbc18 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Doll.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Doll.java @@ -6,6 +6,7 @@ package uet.oop.bomberman.entities.character.enemy; import uet.oop.bomberman.Board; +import uet.oop.bomberman.Game; import uet.oop.bomberman.entities.character.enemy.ai.AILow; import uet.oop.bomberman.entities.character.enemy.ai.AIMedium; import uet.oop.bomberman.graphics.Sprite; @@ -32,7 +33,7 @@ protected void chooseSprite() { case 0: case 1: if (_moving) { - _sprite = Sprite.movingSprite(Sprite.doll_right1, Sprite.doll_right2, Sprite.doll_right3, _animate, 60); + _sprite = Sprite.movingSprite(Sprite.doll_right1, Sprite.doll_right2, Sprite.doll_right3, _animate, Game.TICKS_PER_SECOND); } else { _sprite = Sprite.doll_left1; } @@ -40,7 +41,7 @@ protected void chooseSprite() { case 2: case 3: if (_moving) { - _sprite = Sprite.movingSprite(Sprite.doll_left1, Sprite.doll_left2, Sprite.doll_left3, _animate, 60); + _sprite = Sprite.movingSprite(Sprite.doll_left1, Sprite.doll_left2, Sprite.doll_left3, _animate, Game.TICKS_PER_SECOND); } else { _sprite = Sprite.doll_left1; } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java index 61a7b99..cabd65d 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java @@ -66,7 +66,7 @@ public void render(Screen screen) { _sprite = _deadSprite; _animate = 0; } else { - _sprite = Sprite.movingSprite(Sprite.mob_dead1, Sprite.mob_dead2, Sprite.mob_dead3, _animate, 60); + _sprite = Sprite.movingSprite(Sprite.mob_dead1, Sprite.mob_dead2, Sprite.mob_dead3, _animate, Game.TICKS_PER_SECOND); } } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java index 95fe5d4..b7cb406 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java @@ -23,7 +23,7 @@ protected void chooseSprite() { case 1: if (_moving) _sprite = Sprite.movingSprite(Sprite.kondoria_right1, Sprite.kondoria_right2, - Sprite.kondoria_right3, _animate, 60); + Sprite.kondoria_right3, _animate, Game.TICKS_PER_SECOND); else _sprite = Sprite.kondoria_left1; break; @@ -31,7 +31,7 @@ protected void chooseSprite() { case 3: if (_moving) _sprite = Sprite.movingSprite(Sprite.kondoria_left1, Sprite.kondoria_left2, Sprite.kondoria_left3, - _animate, 60); + _animate, Game.TICKS_PER_SECOND); else _sprite = Sprite.kondoria_left1; break; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java index e4ad4d7..c16c976 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java @@ -24,7 +24,7 @@ protected void chooseSprite() { case 1: if (_moving) _sprite = Sprite.movingSprite(Sprite.minvo_right1, Sprite.minvo_right2, Sprite.minvo_right3, - _animate, 60); + _animate, Game.TICKS_PER_SECOND); else _sprite = Sprite.minvo_left1; break; @@ -32,7 +32,7 @@ protected void chooseSprite() { case 3: if (_moving) _sprite = Sprite.movingSprite(Sprite.minvo_left1, Sprite.minvo_left2, Sprite.minvo_left3, _animate, - 60); + Game.TICKS_PER_SECOND); else _sprite = Sprite.minvo_left1; break; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java index 3ad4b23..608255f 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java @@ -27,14 +27,14 @@ protected void chooseSprite() { case 0: case 1: if(_moving) - _sprite = Sprite.movingSprite(Sprite.oneal_right1, Sprite.oneal_right2, Sprite.oneal_right3, _animate, 60); + _sprite = Sprite.movingSprite(Sprite.oneal_right1, Sprite.oneal_right2, Sprite.oneal_right3, _animate, Game.TICKS_PER_SECOND); else _sprite = Sprite.oneal_left1; break; case 2: case 3: if(_moving) - _sprite = Sprite.movingSprite(Sprite.oneal_left1, Sprite.oneal_left2, Sprite.oneal_left3, _animate, 60); + _sprite = Sprite.movingSprite(Sprite.oneal_left1, Sprite.oneal_left2, Sprite.oneal_left3, _animate, Game.TICKS_PER_SECOND); else _sprite = Sprite.oneal_left1; break; diff --git a/src/uet/oop/bomberman/entities/tile/item/Item.java b/src/uet/oop/bomberman/entities/tile/item/Item.java index b67655a..59b6ba8 100644 --- a/src/uet/oop/bomberman/entities/tile/item/Item.java +++ b/src/uet/oop/bomberman/entities/tile/item/Item.java @@ -8,7 +8,7 @@ import uet.oop.bomberman.sound.Sound; public abstract class Item extends Tile { - protected int _duration = 300; // 5s + protected int _duration = 30 * Game.TICKS_PER_SECOND; // 30s protected boolean _active = false; protected int _level; diff --git a/src/uet/oop/bomberman/gui/InfoPanel.java b/src/uet/oop/bomberman/gui/InfoPanel.java index 166630b..825e741 100644 --- a/src/uet/oop/bomberman/gui/InfoPanel.java +++ b/src/uet/oop/bomberman/gui/InfoPanel.java @@ -58,7 +58,7 @@ public void setItemTime(int t) { if ((item.getDuration()) == 0) { continue; } - label += item.getDisplayActiveItem() + item.getDuration() / 60 + " "; + label += item.getDisplayActiveItem() + item.getDuration() / Game.TICKS_PER_SECOND + " "; } itemTimeLabel.setText(label); } diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index bb8daad..d338c50 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -8,7 +8,7 @@ */ public class Keyboard implements KeyListener { - private boolean[] keys = new boolean[120]; //120 is enough to this game + private boolean[] keys = new boolean[65536]; public boolean up, down, left, right, space; public void update() { From 165c802254a7b80cc17a62172990e801e7c4b999 Mon Sep 17 00:00:00 2001 From: 21522098_HuyHoang <21522098@gm.uit.edu.vn> Date: Wed, 15 May 2024 16:35:53 +0700 Subject: [PATCH 14/66] Changes Pause to ESC --- src/uet/oop/bomberman/Game.java | 23 ++++++++--------------- src/uet/oop/bomberman/gui/InfoPanel.java | 20 +------------------- src/uet/oop/bomberman/input/Keyboard.java | 5 +++-- 3 files changed, 12 insertions(+), 36 deletions(-) diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index c44c977..55f9388 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -3,13 +3,13 @@ import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.gui.Frame; import uet.oop.bomberman.input.Keyboard; -import uet.oop.bomberman.gui.InfoPanel; import java.awt.*; import java.awt.image.BufferStrategy; import java.awt.image.BufferedImage; import java.awt.image.DataBufferInt; -import javafx.event.ActionEvent; +import javax.swing.JButton; + /** * Tạo vòng lặp cho game, lưu trữ một vài tham số cấu hình toàn cục, @@ -47,7 +47,6 @@ public class Game extends Canvas { private boolean _running = false; private boolean _paused = true; private boolean _paused1 = true; - private Board _board; private Screen screen; private Frame _frame; @@ -64,6 +63,7 @@ public Game(Frame frame) { _board = new Board(this, _input, screen); addKeyListener(_input); + } @@ -144,19 +144,12 @@ public void start() { } else { renderGame(); } - if (_paused1) { - _board.setShow(3); - } else { - _board.setShow(-1); - } - if (_input.pause) { - _paused1 = !_paused1; - if (_paused) { - _board.setShow(3); - } else { - } - } + if (_input.resume) { + _paused = false; + _board.setShow(-1); + } + frames++; diff --git a/src/uet/oop/bomberman/gui/InfoPanel.java b/src/uet/oop/bomberman/gui/InfoPanel.java index 2341c67..8d2f9ae 100644 --- a/src/uet/oop/bomberman/gui/InfoPanel.java +++ b/src/uet/oop/bomberman/gui/InfoPanel.java @@ -10,15 +10,11 @@ * Swing Panel hiển thị thông tin thời gian, điểm mà người chơi đạt được */ public class InfoPanel extends JPanel { - private static Board _board; - private boolean gamePaused = false; private JLabel timeLabel; private JLabel pointsLabel; - private JButton pauseButton; - private Game game; + public InfoPanel(Game game) { setLayout(new GridLayout(1, 3)); - this.game = game; timeLabel = new JLabel("Time: " + game.getBoard().getTime()); timeLabel.setForeground(Color.white); timeLabel.setHorizontalAlignment(JLabel.CENTER); @@ -26,23 +22,9 @@ public InfoPanel(Game game) { pointsLabel = new JLabel("Points: " + game.getBoard().getPoints()); pointsLabel.setForeground(Color.white); pointsLabel.setHorizontalAlignment(JLabel.CENTER); - - pauseButton = new JButton("Pause"); - pauseButton.setForeground(Color.WHITE); - pauseButton.setHorizontalAlignment(JButton.CENTER); - pauseButton.setBackground(Color.BLACK); - pauseButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - game.pause(); - gamePaused = !gamePaused; - pauseButton.setText(gamePaused? "Resume" : "Pause"); - } - }); add(timeLabel); add(pointsLabel); - add(pauseButton); setBackground(Color.black); setPreferredSize(new Dimension(0, 40)); } diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index 44fdf07..d3ab986 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -9,7 +9,7 @@ public class Keyboard implements KeyListener { private boolean[] keys = new boolean[120]; //120 is enough to this game - public boolean up, down, left, right, space,pause; + public boolean up, down, left, right, space,pause,resume; public void update() { up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W]; @@ -17,7 +17,8 @@ public void update() { left = keys[KeyEvent.VK_LEFT] || keys[KeyEvent.VK_A]; right = keys[KeyEvent.VK_RIGHT] || keys[KeyEvent.VK_D]; space = keys[KeyEvent.VK_SPACE] || keys[KeyEvent.VK_X]; - pause = keys[KeyEvent.VK_P]; + pause = keys[KeyEvent.VK_ESCAPE]; + resume = keys[KeyEvent.VK_ENTER]; } @Override From a791aafcc64739a537e2db17e75a3b2ef81c05f6 Mon Sep 17 00:00:00 2001 From: 21522098_HuyHoang <21522098@gm.uit.edu.vn> Date: Wed, 15 May 2024 18:15:07 +0700 Subject: [PATCH 15/66] Fixed --- src/uet/oop/bomberman/Game.java | 5 +---- src/uet/oop/bomberman/gui/InfoPanel.java | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 64c1b08..aaa12d1 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -45,8 +45,7 @@ public class Game extends Canvas { private Keyboard _input; private boolean _running = false; private boolean _paused = true; - private boolean _paused1 = true; - private Board _board; + private static Board _board; private Screen screen; private Frame _frame; @@ -196,11 +195,9 @@ public static void addBombRate(int i) { public void resetScreenDelay() { _screenDelay = SCREENDELAY; } - public static Board getBoard() { return _board; } - public boolean isPaused() { return _paused; } diff --git a/src/uet/oop/bomberman/gui/InfoPanel.java b/src/uet/oop/bomberman/gui/InfoPanel.java index d06a1ed..9958ca3 100644 --- a/src/uet/oop/bomberman/gui/InfoPanel.java +++ b/src/uet/oop/bomberman/gui/InfoPanel.java @@ -15,7 +15,7 @@ public class InfoPanel extends JPanel { private JLabel timeLabel; private JLabel pointsLabel; private JLabel itemTimeLabel; - + private Game game; public InfoPanel(Game game) { setLayout(new GridLayout()); timeLabel = new JLabel("Time: " + game.getBoard().getTime()); From a228e7c90d6618f912cd83c527fb7f5b9fd86060 Mon Sep 17 00:00:00 2001 From: Hang Le Thi Bich <21522041@gm.uit.edu.vn> Date: Wed, 15 May 2024 23:30:29 +0700 Subject: [PATCH 16/66] update infopanel --- src/uet/oop/bomberman/Game.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 6af2a57..a95382b 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -139,6 +139,7 @@ private void showScreen() { if(System.currentTimeMillis() - timer > 1000) { _frame.setTime(_board.subtractTime()); _frame.setPoints(_board.getPoints()); + _frame.setItemTime(_board.getItemTime()); timer += 1000; _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); updates = 0; From 4042a325aba03efde6aaca8b9887f88dbbfd0c4b Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Thu, 16 May 2024 13:35:57 +0000 Subject: [PATCH 17/66] extract interface IEntityManager and IMessageManager from Board --- src/uet/oop/bomberman/Board.java | 15 ++++++++++- .../oop/bomberman/base/IEntityManager.java | 26 +++++++++++++++++++ .../oop/bomberman/base/IMessageManager.java | 9 +++++++ src/uet/oop/bomberman/entities/bomb/Bomb.java | 6 ++--- .../oop/bomberman/entities/bomb/Flame.java | 6 ++--- .../bomberman/entities/character/Bomber.java | 16 +++++++----- .../entities/character/Character.java | 7 ++--- .../entities/character/enemy/Doll.java | 2 +- .../entities/character/enemy/Enemy.java | 7 ++++- .../entities/character/enemy/Kondoria.java | 2 +- .../oop/bomberman/level/FileLevelLoader.java | 2 +- 11 files changed, 78 insertions(+), 20 deletions(-) create mode 100644 src/uet/oop/bomberman/base/IEntityManager.java create mode 100644 src/uet/oop/bomberman/base/IMessageManager.java diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 5d05ee3..34b6e49 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -1,5 +1,7 @@ package uet.oop.bomberman; +import uet.oop.bomberman.base.IEntityManager; +import uet.oop.bomberman.base.IMessageManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.Message; import uet.oop.bomberman.entities.bomb.Bomb; @@ -22,7 +24,7 @@ /** * Quản lý thao tác điều khiển, load level, render các màn hình của game */ -public class Board implements IRender { +public class Board implements IRender, IEntityManager, IMessageManager { protected LevelLoader _levelLoader; protected Game _game; protected Keyboard _input; @@ -153,6 +155,7 @@ public void drawScreen(Graphics g) { } } + @Override public Entity getEntity(double x, double y, Character m) { Entity res = null; @@ -174,10 +177,12 @@ public Entity getEntity(double x, double y, Character m) { return res; } + @Override public List getBombs() { return _bombs; } + @Override public Bomb getBombAt(double x, double y) { Iterator bs = _bombs.iterator(); Bomb b; @@ -190,6 +195,7 @@ public Bomb getBombAt(double x, double y) { return null; } + @Override public Bomber getBomber() { Iterator itr = _characters.iterator(); @@ -204,6 +210,7 @@ public Bomber getBomber() { return null; } + @Override public Character getCharacterAtExcluding(int x, int y, Character a) { Iterator itr = _characters.iterator(); @@ -223,6 +230,7 @@ public Character getCharacterAtExcluding(int x, int y, Character a) { return null; } + @Override public FlameSegment getFlameSegmentAt(int x, int y) { Iterator bs = _bombs.iterator(); Bomb b; @@ -238,6 +246,7 @@ public FlameSegment getFlameSegmentAt(int x, int y) { return null; } + @Override public Entity getEntityAt(double x, double y) { return _entities[(int) x + (int) y * _levelLoader.getWidth()]; } @@ -246,18 +255,22 @@ public void addActiveItem(Item item) { _activeItems.add(item); } + @Override public void addEntity(int pos, Entity e) { _entities[pos] = e; } + @Override public void addCharacter(Character e) { _characters.add(e); } + @Override public void addBomb(Bomb e) { _bombs.add(e); } + @Override public void addMessage(Message e) { _messages.add(e); } diff --git a/src/uet/oop/bomberman/base/IEntityManager.java b/src/uet/oop/bomberman/base/IEntityManager.java new file mode 100644 index 0000000..ddf0d77 --- /dev/null +++ b/src/uet/oop/bomberman/base/IEntityManager.java @@ -0,0 +1,26 @@ +package uet.oop.bomberman.base; + +import java.util.List; + +import uet.oop.bomberman.entities.Entity; +import uet.oop.bomberman.entities.bomb.Bomb; +import uet.oop.bomberman.entities.bomb.FlameSegment; +import uet.oop.bomberman.entities.character.Bomber; +import uet.oop.bomberman.entities.character.Character; + +public interface IEntityManager { + + public List getBombs(); + public Bomber getBomber(); + + public Entity getEntity(double x, double y, Character m); + public Entity getEntityAt(double x, double y); + public Bomb getBombAt(double x, double y); + public Character getCharacterAtExcluding(int x, int y, Character a); + public FlameSegment getFlameSegmentAt(int x, int y); + + public void addEntity(int pos, Entity e); + public void addCharacter(Character e); + public void addBomb(Bomb e); + +} \ No newline at end of file diff --git a/src/uet/oop/bomberman/base/IMessageManager.java b/src/uet/oop/bomberman/base/IMessageManager.java new file mode 100644 index 0000000..ec01310 --- /dev/null +++ b/src/uet/oop/bomberman/base/IMessageManager.java @@ -0,0 +1,9 @@ +package uet.oop.bomberman.base; + +import uet.oop.bomberman.entities.Message; + +public interface IMessageManager { + + public void addMessage(Message e); + +} \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/bomb/Bomb.java b/src/uet/oop/bomberman/entities/bomb/Bomb.java index f65b5d7..6e200ab 100644 --- a/src/uet/oop/bomberman/entities/bomb/Bomb.java +++ b/src/uet/oop/bomberman/entities/bomb/Bomb.java @@ -1,7 +1,7 @@ package uet.oop.bomberman.entities.bomb; -import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.AnimatedEntitiy; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Bomber; @@ -15,12 +15,12 @@ public class Bomb extends AnimatedEntitiy { protected double _timeToExplode = 120; //2 seconds - thoi gian phat no public int _timeAfter = 20;// thoi gian de no - protected Board _board; + protected IEntityManager _board; protected Flame[] _flames; protected boolean _exploded = false; protected boolean _allowedToPassThru = true; - public Bomb(int x, int y, Board board) { + public Bomb(int x, int y, IEntityManager board) { _x = x; _y = y; _board = board; diff --git a/src/uet/oop/bomberman/entities/bomb/Flame.java b/src/uet/oop/bomberman/entities/bomb/Flame.java index 721bc25..71f8fd3 100644 --- a/src/uet/oop/bomberman/entities/bomb/Flame.java +++ b/src/uet/oop/bomberman/entities/bomb/Flame.java @@ -1,6 +1,6 @@ package uet.oop.bomberman.entities.bomb; -import uet.oop.bomberman.Board; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.entities.character.enemy.Enemy; @@ -8,7 +8,7 @@ public class Flame extends Entity { - protected Board _board; + protected IEntityManager _board; protected int _direction; private int _radius; protected int xOrigin, yOrigin; @@ -21,7 +21,7 @@ public class Flame extends Entity { * @param direction là hướng của Flame * @param radius độ dài cực đại của Flame */ - public Flame(int x, int y, int direction, int radius, Board board) { + public Flame(int x, int y, int direction, int radius, IEntityManager board) { xOrigin = x; yOrigin = y; _x = x; diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index bcc797d..4e34e9c 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.bomb.Bomb; import uet.oop.bomberman.graphics.Screen; @@ -29,9 +30,12 @@ public class Bomber extends Character { */ protected int _timeBetweenPutBombs = 0; - public Bomber(int x, int y, Board board) { - super(x, y, board); - _bombs = _board.getBombs(); + private Board _board; + + public Bomber(int x, int y, IEntityManager entityManager, Board board) { + super(x, y, entityManager); + this._board = board; + _bombs = entityManager.getBombs(); _input = _board.getInput(); _sprite = Sprite.player_right; } @@ -94,8 +98,8 @@ private void detectPlaceBomb() { protected void placeBomb(int x, int y) { // TODO: thực hiện tạo đối tượng bom, đặt vào vị trí (x, y) - Bomb b = new Bomb(x, y, _board); - _board.addBomb(b); + Bomb b = new Bomb(x, y, entityManager); + entityManager.addBomb(b); Sound.play("BOM_SET"); } @@ -153,7 +157,7 @@ public boolean canMove(double x, double y) { double xt = ((_x + x) + c % 2 * 9) / Game.TILES_SIZE; //divide with tiles size to pass to tile coordinate double yt = ((_y + y) + c / 2 * 10 - 13) / Game.TILES_SIZE; //these values are the best from multiple tests - Entity a = _board.getEntity(xt, yt, this); + Entity a = entityManager.getEntity(xt, yt, this); if(!a.collide(this)) return false; diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 52842a9..2a2335b 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -2,6 +2,7 @@ import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.AnimatedEntitiy; import uet.oop.bomberman.graphics.Screen; @@ -10,16 +11,16 @@ */ public abstract class Character extends AnimatedEntitiy { - protected Board _board; + protected IEntityManager entityManager; protected int _direction = -1; protected boolean _alive = true; protected boolean _moving = false; public int _timeAfter = 40; - public Character(int x, int y, Board board) { + public Character(int x, int y, IEntityManager entityManager) { _x = x; _y = y; - _board = board; + this.entityManager = entityManager; } @Override diff --git a/src/uet/oop/bomberman/entities/character/enemy/Doll.java b/src/uet/oop/bomberman/entities/character/enemy/Doll.java index 72fbc18..18c2924 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Doll.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Doll.java @@ -22,7 +22,7 @@ public Doll(int x, int y, Board board) { _sprite = Sprite.balloom_left1; - _ai = new AIMedium(_board.getBomber(), this); + _ai = new AIMedium(entityManager.getBomber(), this); _direction = _ai.calculateDirection(); } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java index cabd65d..a3a33f9 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java @@ -2,6 +2,7 @@ import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.Message; import uet.oop.bomberman.entities.bomb.Flame; @@ -28,9 +29,13 @@ public abstract class Enemy extends Character { protected int _finalAnimation = 30; protected Sprite _deadSprite; + + private Board _board; public Enemy(int x, int y, Board board, Sprite dead, double speed, int points) { super(x, y, board); + + this._board = board; _points = points; _speed = speed; @@ -122,7 +127,7 @@ public boolean canMove(double x, double y) { int xx = Coordinates.pixelToTile(xr) +(int)x; int yy = Coordinates.pixelToTile(yr) +(int)y; - Entity a = _board.getEntity(xx, yy, this); //entity of the position we want to go + Entity a = entityManager.getEntity(xx, yy, this); //entity of the position we want to go return a.collide(this); } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java index b7cb406..a7f20a7 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java @@ -11,7 +11,7 @@ public Kondoria(int x, int y, Board board) { _sprite = Sprite.kondoria_right1; - _ai = new AIMedium(_board.getBomber(), this); + _ai = new AIMedium(entityManager.getBomber(), this); _direction = _ai.calculateDirection(); // this._speed += random.nextDouble()/2; } diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index d7ca60a..d673ca8 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -103,7 +103,7 @@ public void createEntities() { break; // Thêm Bomber case 'p': - _board.addCharacter(new Bomber(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board)); + _board.addCharacter(new Bomber(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board, _board)); Screen.setOffset(0, 0); _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); break; From e7b5244735d9759bc359d88ec6ae3a8177a7032f Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Thu, 16 May 2024 14:49:33 +0000 Subject: [PATCH 18/66] decouple Bomber class by adding isPlayer() --- src/uet/oop/bomberman/Board.java | 34 ++++++---------- .../oop/bomberman/base/IEntityManager.java | 7 +++- .../oop/bomberman/entities/bomb/Flame.java | 11 +++-- .../bomberman/entities/bomb/FlameSegment.java | 7 +--- .../entities/character/Character.java | 4 ++ .../entities/character/enemy/Doll.java | 2 +- .../entities/character/enemy/Enemy.java | 16 ++++---- .../entities/character/enemy/Kondoria.java | 2 +- .../entities/character/enemy/Minvo.java | 2 +- .../entities/character/enemy/ai/AIMedium.java | 18 ++++----- .../oop/bomberman/entities/tile/Portal.java | 40 +++++++++---------- .../entities/tile/item/BombItem.java | 3 -- .../entities/tile/item/FlameItem.java | 3 -- .../bomberman/entities/tile/item/Item.java | 5 +-- .../entities/tile/item/SpeedItem.java | 3 -- src/uet/oop/bomberman/graphics/Screen.java | 11 +++-- .../oop/bomberman/level/FileLevelLoader.java | 7 ++-- 17 files changed, 78 insertions(+), 97 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 34b6e49..57561b1 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -6,7 +6,6 @@ import uet.oop.bomberman.entities.Message; import uet.oop.bomberman.entities.bomb.Bomb; import uet.oop.bomberman.entities.bomb.FlameSegment; -import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.exceptions.LoadLevelException; @@ -36,6 +35,8 @@ public class Board implements IRender, IEntityManager, IMessageManager { private List _messages = new ArrayList<>(); private List _activeItems = new ArrayList<>(); + private Character player; + public List getActiveItems() { return _activeItems; } @@ -131,14 +132,10 @@ public void endGame() { _game.pause(); } - public boolean detectNoEnemies() {// phat hien enemies - int total = 0; - for (int i = 0; i < _characters.size(); i++) { - if (_characters.get(i) instanceof Bomber == false) - ++total; - } - - return total == 0; + @Override + public boolean isEnemyCleared() { + return _characters.stream() + .allMatch(character -> character != getPlayer()); } public void drawScreen(Graphics g) { @@ -196,18 +193,8 @@ public Bomb getBombAt(double x, double y) { } @Override - public Bomber getBomber() { - Iterator itr = _characters.iterator(); - - Character cur; - while (itr.hasNext()) { - cur = itr.next(); - - if (cur instanceof Bomber) - return (Bomber) cur; - } - - return null; + public Character getPlayer() { + return this.player; } @Override @@ -406,4 +393,9 @@ public int getHeight() { return _levelLoader.getHeight(); } + @Override + public void setPlayer(Character character) { + this.player = character; + } + } diff --git a/src/uet/oop/bomberman/base/IEntityManager.java b/src/uet/oop/bomberman/base/IEntityManager.java index ddf0d77..2135078 100644 --- a/src/uet/oop/bomberman/base/IEntityManager.java +++ b/src/uet/oop/bomberman/base/IEntityManager.java @@ -5,13 +5,11 @@ import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.bomb.Bomb; import uet.oop.bomberman.entities.bomb.FlameSegment; -import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.entities.character.Character; public interface IEntityManager { public List getBombs(); - public Bomber getBomber(); public Entity getEntity(double x, double y, Character m); public Entity getEntityAt(double x, double y); @@ -23,4 +21,9 @@ public interface IEntityManager { public void addCharacter(Character e); public void addBomb(Bomb e); + public void setPlayer(Character character); + public Character getPlayer(); + + public boolean isEnemyCleared(); + } \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/bomb/Flame.java b/src/uet/oop/bomberman/entities/bomb/Flame.java index 71f8fd3..f009521 100644 --- a/src/uet/oop/bomberman/entities/bomb/Flame.java +++ b/src/uet/oop/bomberman/entities/bomb/Flame.java @@ -2,8 +2,7 @@ import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; -import uet.oop.bomberman.entities.character.Bomber; -import uet.oop.bomberman.entities.character.enemy.Enemy; +import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.graphics.Screen; public class Flame extends Entity { @@ -110,9 +109,9 @@ public void render(Screen screen) { @Override public boolean collide(Entity e) { - // TODO: xử lý va chạm với Bomber, Enemy. Chú ý đối tượng này có vị trí chính là vị trí của Bomb đã nổ - if(e instanceof Bomber) ((Bomber) e).kill(); - if(e instanceof Enemy) ((Enemy) e).kill(); - return true; + if (e instanceof Character) { + ((Character)e).kill(); + } + return true; } } diff --git a/src/uet/oop/bomberman/entities/bomb/FlameSegment.java b/src/uet/oop/bomberman/entities/bomb/FlameSegment.java index 8a28539..4adf084 100644 --- a/src/uet/oop/bomberman/entities/bomb/FlameSegment.java +++ b/src/uet/oop/bomberman/entities/bomb/FlameSegment.java @@ -1,8 +1,7 @@ package uet.oop.bomberman.entities.bomb; import uet.oop.bomberman.entities.Entity; -import uet.oop.bomberman.entities.character.Bomber; -import uet.oop.bomberman.entities.character.enemy.Enemy; +import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.graphics.Sprite; @@ -69,9 +68,7 @@ public void update() {} @Override public boolean collide(Entity e) { - // TODO: xử lý khi FlameSegment va chạm với Character - if(e instanceof Bomber) ((Bomber) e).kill(); - if(e instanceof Enemy) ((Enemy) e).kill(); + if (e instanceof Character) ((Character)e).kill(); return true; } diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 2a2335b..028432b 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -61,5 +61,9 @@ protected double getXMessage() { protected double getYMessage() { return (_y* Game.SCALE) - (_sprite.SIZE / 2 * Game.SCALE); } + + public boolean isPlayer() { + return entityManager.getPlayer() == this; + } } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Doll.java b/src/uet/oop/bomberman/entities/character/enemy/Doll.java index 18c2924..bc60e2c 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Doll.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Doll.java @@ -22,7 +22,7 @@ public Doll(int x, int y, Board board) { _sprite = Sprite.balloom_left1; - _ai = new AIMedium(entityManager.getBomber(), this); + _ai = new AIMedium(entityManager.getPlayer(), this); _direction = _ai.calculateDirection(); } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java index a3a33f9..e205c89 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java @@ -2,11 +2,9 @@ import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; -import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.Message; import uet.oop.bomberman.entities.bomb.Flame; -import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.character.enemy.ai.AI; import uet.oop.bomberman.graphics.Screen; @@ -135,13 +133,13 @@ public boolean canMove(double x, double y) { @Override public boolean collide(Entity e) { if(e instanceof Flame){ - this.kill(); - return false; - } - if(e instanceof Bomber){ - ((Bomber) e).kill(); - return false; - } + this.kill(); + return false; + } + if(e instanceof Character && ((Character)e).isPlayer()){ + ((Character) e).kill(); + return false; + } return true; } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java index a7f20a7..6f2a1f9 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java @@ -11,7 +11,7 @@ public Kondoria(int x, int y, Board board) { _sprite = Sprite.kondoria_right1; - _ai = new AIMedium(entityManager.getBomber(), this); + _ai = new AIMedium(entityManager.getPlayer(), this); _direction = _ai.calculateDirection(); // this._speed += random.nextDouble()/2; } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java index c16c976..5ec04b3 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java @@ -13,7 +13,7 @@ public Minvo(int x, int y, Board board) { _board = board; _sprite = Sprite.minvo_right1; - _ai = new AIMedium(_board.getBomber(), this); + _ai = new AIMedium(_board.getPlayer(), this); _direction = _ai.calculateDirection(); } diff --git a/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java b/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java index 1fa7960..17a7bfc 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java +++ b/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java @@ -1,21 +1,21 @@ package uet.oop.bomberman.entities.character.enemy.ai; -import uet.oop.bomberman.entities.character.Bomber; +import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.character.enemy.Enemy; public class AIMedium extends AI { - Bomber _bomber; + Character player; Enemy _e; - public AIMedium(Bomber bomber, Enemy e) { - _bomber = bomber; + public AIMedium(Character player, Enemy e) { + this.player = player; _e = e; } @Override public int calculateDirection() { // TODO: cài đặt thuật toán tìm đường đi - if(_bomber == null) + if(player == null) return random.nextInt(4); int vertical = random.nextInt(2); @@ -37,18 +37,18 @@ public int calculateDirection() { } } protected int calculateColDirection() { - if(_bomber.getXTile() < _e.getXTile()) + if(player.getXTile() < _e.getXTile()) return 3; - else if(_bomber.getXTile() > _e.getXTile()) + else if(player.getXTile() > _e.getXTile()) return 1; return -1; } protected int calculateRowDirection() { - if(_bomber.getYTile() < _e.getYTile()) + if(player.getYTile() < _e.getYTile()) return 0; - else if(_bomber.getYTile() > _e.getYTile()) + else if(player.getYTile() > _e.getYTile()) return 2; return -1; } diff --git a/src/uet/oop/bomberman/entities/tile/Portal.java b/src/uet/oop/bomberman/entities/tile/Portal.java index 9b077d7..0b42570 100644 --- a/src/uet/oop/bomberman/entities/tile/Portal.java +++ b/src/uet/oop/bomberman/entities/tile/Portal.java @@ -1,40 +1,38 @@ package uet.oop.bomberman.entities.tile; import uet.oop.bomberman.Board; -import uet.oop.bomberman.Game; import uet.oop.bomberman.entities.Entity; -import uet.oop.bomberman.entities.character.Bomber; -import uet.oop.bomberman.entities.tile.item.Item; +import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.graphics.Sprite; import uet.oop.bomberman.sound.Sound; public class Portal extends Tile { - protected Board _board; - public Portal(int x, int y,Board board, Sprite sprite) { + protected Board _board; + + public Portal(int x, int y, Board board, Sprite sprite) { super(x, y, sprite); - _board = board; + _board = board; } - + @Override - public boolean collide(Entity e) {//xu li khi 2 entity va cham - //true cho di qua - //false khong cho di qua + public boolean collide(Entity e) {// xu li khi 2 entity va cham + // true cho di qua + // false khong cho di qua // TODO: xử lý khi Bomber đi vào - if(e instanceof Bomber ) { - - if(_board.detectNoEnemies() == false) + if (e instanceof Character && ((Character)e).isPlayer()) { + + if (!_board.isEnemyCleared()) return false; - - if(e.getXTile() == getX() && e.getYTile() == getY()) { - if(_board.detectNoEnemies()){ + + if (e.getXTile() == getX() && e.getYTile() == getY()) { + if (_board.isEnemyCleared()) { _board.nextLevel(); - Sound.play("CRYST_UP"); - } + Sound.play("CRYST_UP"); + } } - - return true; + } - + return true; } diff --git a/src/uet/oop/bomberman/entities/tile/item/BombItem.java b/src/uet/oop/bomberman/entities/tile/item/BombItem.java index cf9b5fc..598202a 100644 --- a/src/uet/oop/bomberman/entities/tile/item/BombItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/BombItem.java @@ -1,10 +1,7 @@ package uet.oop.bomberman.entities.tile.item; import uet.oop.bomberman.Game; -import uet.oop.bomberman.entities.Entity; -import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.graphics.Sprite; -import uet.oop.bomberman.sound.Sound; public class BombItem extends Item { diff --git a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java index 6507dcf..66fd498 100644 --- a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java @@ -1,10 +1,7 @@ package uet.oop.bomberman.entities.tile.item; import uet.oop.bomberman.Game; -import uet.oop.bomberman.entities.Entity; -import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.graphics.Sprite; -import uet.oop.bomberman.sound.Sound; public class FlameItem extends Item { diff --git a/src/uet/oop/bomberman/entities/tile/item/Item.java b/src/uet/oop/bomberman/entities/tile/item/Item.java index 59b6ba8..5e9f676 100644 --- a/src/uet/oop/bomberman/entities/tile/item/Item.java +++ b/src/uet/oop/bomberman/entities/tile/item/Item.java @@ -2,7 +2,7 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.entities.Entity; -import uet.oop.bomberman.entities.character.Bomber; +import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.tile.Tile; import uet.oop.bomberman.graphics.Sprite; import uet.oop.bomberman.sound.Sound; @@ -22,8 +22,7 @@ public Item(int x, int y, Sprite sprite) { @Override public boolean collide(Entity e) { - // TODO: xử lý Bomber ăn Item - if (e instanceof Bomber) { + if (e instanceof Character && ((Character)e).isPlayer()) { Sound.play("Item"); handleItemActive(); _active = true; diff --git a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java index e8ebfd8..bb0bd22 100644 --- a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java @@ -1,10 +1,7 @@ package uet.oop.bomberman.entities.tile.item; import uet.oop.bomberman.Game; -import uet.oop.bomberman.entities.Entity; -import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.graphics.Sprite; -import uet.oop.bomberman.sound.Sound; public class SpeedItem extends Item { diff --git a/src/uet/oop/bomberman/graphics/Screen.java b/src/uet/oop/bomberman/graphics/Screen.java index 9aa0058..e787942 100644 --- a/src/uet/oop/bomberman/graphics/Screen.java +++ b/src/uet/oop/bomberman/graphics/Screen.java @@ -3,7 +3,6 @@ import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; import uet.oop.bomberman.entities.Entity; -import uet.oop.bomberman.entities.character.Bomber; import java.awt.*; @@ -66,17 +65,17 @@ public static void setOffset(int xO, int yO) { yOffset = yO; } - public static int calculateXOffset(Board board, Bomber bomber) { - if(bomber == null) return 0; + public static int calculateXOffset(Board board, Entity entity) { + if(entity == null) return 0; int temp = xOffset; - double BomberX = bomber.getX() / 16; + double x = entity.getX() / 16; double complement = 0.5; int firstBreakpoint = board.getWidth() / 4; int lastBreakpoint = board.getWidth() - firstBreakpoint; - if( BomberX > firstBreakpoint + complement && BomberX < lastBreakpoint - complement) { - temp = (int)bomber.getX() - (Game.WIDTH / 2); + if( x > firstBreakpoint + complement && x < lastBreakpoint - complement) { + temp = (int)entity.getX() - (Game.WIDTH / 2); } return temp; diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index d673ca8..4bfe991 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -1,7 +1,6 @@ package uet.oop.bomberman.level; import java.io.BufferedReader; -import java.io.File; import java.io.FileReader; import java.util.ArrayList; import java.util.List; @@ -101,9 +100,11 @@ public void createEntities() { ) ); break; - // Thêm Bomber + // Thêm Bomber player case 'p': - _board.addCharacter(new Bomber(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board, _board)); + Bomber bomber = new Bomber(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board, _board); + _board.addCharacter(bomber); + _board.setPlayer(bomber); Screen.setOffset(0, 0); _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); break; From 68cb07d0794ac13e79545459a3d5d28a748545a2 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Thu, 16 May 2024 15:12:38 +0000 Subject: [PATCH 19/66] move camera snapping from Bomber to Board --- src/uet/oop/bomberman/Board.java | 7 +++++++ src/uet/oop/bomberman/entities/character/Bomber.java | 7 ------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 57561b1..dad56ea 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -54,6 +54,11 @@ public Board(Game game, Keyboard input, Screen screen) { loadLevel(1); // start in level 1 } + private void snapCameraToPlayer() { + int xScroll = Screen.calculateXOffset(this, getPlayer()); + Screen.setOffset(xScroll, 0); + } + @Override public void update() { if (_game.isPaused()) @@ -66,6 +71,8 @@ public void update() { updateActiveItems(); detectEndGame(); + snapCameraToPlayer(); + for (int i = 0; i < _characters.size(); i++) { Character a = _characters.get(i); if (a.isRemoved()) diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index 4e34e9c..b1c9a9f 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -60,8 +60,6 @@ public void update() { @Override public void render(Screen screen) { - calculateXOffset(); - if (_alive) chooseSprite(); else @@ -70,11 +68,6 @@ public void render(Screen screen) { screen.renderEntity((int) _x, (int) _y - _sprite.SIZE, this); } - public void calculateXOffset() { - int xScroll = Screen.calculateXOffset(_board, this); - Screen.setOffset(xScroll, 0); - } - /** * Kiểm tra xem có đặt được bom hay không? nếu có thì đặt bom tại vị trí hiện tại của Bomber */ From 9c7c88ebad47a165310e4c3a663ef17a9285dd08 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Thu, 16 May 2024 16:58:12 +0000 Subject: [PATCH 20/66] refactor Bomber input --- src/uet/oop/bomberman/Board.java | 29 +++++++++++ .../bomberman/entities/character/Bomber.java | 48 +++++-------------- .../entities/character/Character.java | 12 ++++- 3 files changed, 52 insertions(+), 37 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index dad56ea..286ed15 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -6,6 +6,7 @@ import uet.oop.bomberman.entities.Message; import uet.oop.bomberman.entities.bomb.Bomb; import uet.oop.bomberman.entities.bomb.FlameSegment; +import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.exceptions.LoadLevelException; @@ -72,6 +73,7 @@ public void update() { detectEndGame(); snapCameraToPlayer(); + processPlayerInput(); for (int i = 0; i < _characters.size(); i++) { Character a = _characters.get(i); @@ -80,6 +82,33 @@ public void update() { } } + private void processPlayerInput() { + Character player = getPlayer(); + if (!player.isAlive()) return; + + processPlayerInputMove(player); + + if (player instanceof Bomber) { + Bomber bomber = (Bomber) player; + if(_input.space) bomber.placeBomb(); + } + } + + private void processPlayerInputMove(Character player) { + int xa = 0, ya = 0; + if(_input.up) ya--; + if(_input.down) ya++; + if(_input.left) xa--; + if(_input.right) xa++; + + if(xa != 0 || ya != 0) { + player.move(xa * Game.getBomberSpeed(), ya * Game.getBomberSpeed()); + player.setMoving(true); + } else { + player.setMoving(false); + } + } + @Override public void render(Screen screen) { if (_game.isPaused()) diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index b1c9a9f..c2b641c 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -8,7 +8,6 @@ import uet.oop.bomberman.entities.bomb.Bomb; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.graphics.Sprite; -import uet.oop.bomberman.input.Keyboard; import java.util.Iterator; import java.util.List; @@ -22,13 +21,16 @@ public class Bomber extends Character { private List _bombs; - protected Keyboard _input; public static List _items = new ArrayList();//xu li Item /** * nếu giá trị này < 0 thì cho phép đặt đối tượng Bomb tiếp theo, * cứ mỗi lần đặt 1 Bomb mới, giá trị này sẽ được reset về 0 và giảm dần trong mỗi lần update() */ - protected int _timeBetweenPutBombs = 0; + protected int bombCooldown = 0; + + public int getBombCooldown() { + return bombCooldown; + } private Board _board; @@ -36,7 +38,6 @@ public Bomber(int x, int y, IEntityManager entityManager, Board board) { super(x, y, entityManager); this._board = board; _bombs = entityManager.getBombs(); - _input = _board.getInput(); _sprite = Sprite.player_right; } @@ -48,14 +49,11 @@ public void update() { return; } - if (_timeBetweenPutBombs < -7500) _timeBetweenPutBombs = 0; - else _timeBetweenPutBombs--; + if (bombCooldown < -7500) bombCooldown = 0; + else bombCooldown--; animate(); - calculateMove(); - - detectPlaceBomb(); } @Override @@ -68,16 +66,8 @@ public void render(Screen screen) { screen.renderEntity((int) _x, (int) _y - _sprite.SIZE, this); } - /** - * Kiểm tra xem có đặt được bom hay không? nếu có thì đặt bom tại vị trí hiện tại của Bomber - */ - private void detectPlaceBomb() { - // TODO: kiểm tra xem phím điều khiển đặt bom có được gõ và giá trị _timeBetweenPutBombs, Game.getBombRate() có thỏa mãn hay không - // TODO: Game.getBombRate() sẽ trả về số lượng bom có thể đặt liên tiếp tại thời điểm hiện tại - // TODO: _timeBetweenPutBombs dùng để ngăn chặn Bomber đặt 2 Bomb cùng tại 1 vị trí trong 1 khoảng thời gian quá ngắn - // TODO: nếu 3 điều kiện trên thỏa mãn thì thực hiện đặt bom bằng placeBomb() - // TODO: sau khi đặt, nhớ giảm số lượng Bomb Rate và reset _timeBetweenPutBombs về 0 - if(_input.space && Game.getBombRate() > 0 && _timeBetweenPutBombs < 0) { + public boolean placeBomb() { + if(Game.getBombRate() > 0 && bombCooldown < 0) { int xt = Coordinates.pixelToTile(_x + _sprite.getSize() / 2); int yt = Coordinates.pixelToTile( (_y + _sprite.getSize() / 2) - _sprite.getSize() ); //subtract half player height and minus 1 y position @@ -85,11 +75,13 @@ private void detectPlaceBomb() { placeBomb(xt,yt); Game.addBombRate(-1); - _timeBetweenPutBombs = 30; + bombCooldown = 30; + return true; } + return false; } - protected void placeBomb(int x, int y) { + public void placeBomb(int x, int y) { // TODO: thực hiện tạo đối tượng bom, đặt vào vị trí (x, y) Bomb b = new Bomb(x, y, entityManager); entityManager.addBomb(b); @@ -127,20 +119,6 @@ protected void afterKill() { @Override protected void calculateMove() { - // TODO: xử lý nhận tín hiệu điều khiển hướng đi từ _input và gọi move() để thực hiện di chuyển - // TODO: nhớ cập nhật lại giá trị cờ _moving khi thay đổi trạng thái di chuyển - int xa = 0, ya = 0; - if(_input.up) ya--; - if(_input.down) ya++; - if(_input.left) xa--; - if(_input.right) xa++; - - if(xa != 0 || ya != 0) { - move(xa * Game.getBomberSpeed(), ya * Game.getBomberSpeed()); - _moving = true; - } else { - _moving = false; - } } @Override diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 028432b..8a71806 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -1,6 +1,5 @@ package uet.oop.bomberman.entities.character; -import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.AnimatedEntitiy; @@ -14,7 +13,16 @@ public abstract class Character extends AnimatedEntitiy { protected IEntityManager entityManager; protected int _direction = -1; protected boolean _alive = true; + public boolean isAlive() { + return _alive; + } + protected boolean _moving = false; + + public void setMoving(boolean moving) { + this._moving = moving; + } + public int _timeAfter = 40; public Character(int x, int y, IEntityManager entityManager) { @@ -34,7 +42,7 @@ public Character(int x, int y, IEntityManager entityManager) { */ protected abstract void calculateMove(); - protected abstract void move(double xa, double ya); + public abstract void move(double xa, double ya); /** * Được gọi khi đối tượng bị tiêu diệt From af1da6684793d522c8ae94fca287092ea9dd4cf8 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Thu, 16 May 2024 17:52:29 +0000 Subject: [PATCH 21/66] SpeedItem managed by Character instead of global Game --- src/uet/oop/bomberman/Board.java | 6 +-- src/uet/oop/bomberman/Game.java | 2 +- .../bomberman/entities/character/Bomber.java | 4 +- .../entities/character/Character.java | 42 +++++++++++++++---- .../entities/character/enemy/Enemy.java | 2 +- .../bomberman/entities/tile/item/Item.java | 9 +++- .../entities/tile/item/SpeedItem.java | 2 + .../oop/bomberman/level/FileLevelLoader.java | 8 +++- 8 files changed, 57 insertions(+), 18 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 286ed15..6346501 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -102,7 +102,7 @@ private void processPlayerInputMove(Character player) { if(_input.right) xa++; if(xa != 0 || ya != 0) { - player.move(xa * Game.getBomberSpeed(), ya * Game.getBomberSpeed()); + player.move(xa * player.getSpeed(), ya * player.getSpeed()); player.setMoving(true); } else { player.setMoving(false); @@ -170,8 +170,8 @@ public void endGame() { @Override public boolean isEnemyCleared() { - return _characters.stream() - .allMatch(character -> character != getPlayer()); + return !_characters.stream() + .anyMatch(character -> character != getPlayer()); } public void drawScreen(Graphics g) { diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index f53ff52..2928cec 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -28,7 +28,7 @@ public class Game extends Canvas { private static final int BOMBRATE = 1; private static final int BOMBRADIUS = 1; - private static final double BOMBERSPEED = 1.0;// toc do bomber + public static final double BOMBERSPEED = 1.0;// toc do bomber private static int itemTime; public static final int TIME = 200; diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index c2b641c..fff1f62 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -34,8 +34,8 @@ public int getBombCooldown() { private Board _board; - public Bomber(int x, int y, IEntityManager entityManager, Board board) { - super(x, y, entityManager); + public Bomber(int x, int y, double baseSpeed, IEntityManager entityManager, Board board) { + super(x, y, baseSpeed, entityManager); this._board = board; _bombs = entityManager.getBombs(); _sprite = Sprite.player_right; diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 8a71806..4adb718 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -1,8 +1,13 @@ package uet.oop.bomberman.entities.character; +import java.util.ArrayList; +import java.util.List; + import uet.oop.bomberman.Game; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.AnimatedEntitiy; +import uet.oop.bomberman.entities.tile.item.Item; +import uet.oop.bomberman.entities.tile.item.SpeedItem; import uet.oop.bomberman.graphics.Screen; /** @@ -13,22 +18,18 @@ public abstract class Character extends AnimatedEntitiy { protected IEntityManager entityManager; protected int _direction = -1; protected boolean _alive = true; - public boolean isAlive() { - return _alive; - } - protected boolean _moving = false; + public int _timeAfter = 40; - public void setMoving(boolean moving) { - this._moving = moving; - } + private final double baseSpeed; - public int _timeAfter = 40; + private List activeItems = new ArrayList<>(); - public Character(int x, int y, IEntityManager entityManager) { + public Character(int x, int y, double baseSpeed, IEntityManager entityManager) { _x = x; _y = y; this.entityManager = entityManager; + this.baseSpeed = baseSpeed; } @Override @@ -74,4 +75,27 @@ public boolean isPlayer() { return entityManager.getPlayer() == this; } + public boolean isAlive() { + return _alive; + } + + public void setMoving(boolean moving) { + this._moving = moving; + } + + public void addActiveItem(Item item) { + this.activeItems.add(item); + } + + public double getSpeed() { + double speedMultiplier = 1; + for (Item item: activeItems) { + if (!item.isActive()) continue; + if (item instanceof SpeedItem) { + speedMultiplier += SpeedItem.SPEED_MULTIPLIER; + } + } + return speedMultiplier * this.baseSpeed; + } + } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java index e205c89..56e05a1 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java @@ -31,7 +31,7 @@ public abstract class Enemy extends Character { private Board _board; public Enemy(int x, int y, Board board, Sprite dead, double speed, int points) { - super(x, y, board); + super(x, y, speed, board); this._board = board; diff --git a/src/uet/oop/bomberman/entities/tile/item/Item.java b/src/uet/oop/bomberman/entities/tile/item/Item.java index 5e9f676..b2d6ff5 100644 --- a/src/uet/oop/bomberman/entities/tile/item/Item.java +++ b/src/uet/oop/bomberman/entities/tile/item/Item.java @@ -10,6 +10,7 @@ public abstract class Item extends Tile { protected int _duration = 30 * Game.TICKS_PER_SECOND; // 30s protected boolean _active = false; + protected int _level; public Item(int x, int y, Sprite sprite) { @@ -23,10 +24,12 @@ public Item(int x, int y, Sprite sprite) { @Override public boolean collide(Entity e) { if (e instanceof Character && ((Character)e).isPlayer()) { + Character player = (Character) e; Sound.play("Item"); handleItemActive(); _active = true; Game.getBoard().addActiveItem(this); + player.addActiveItem(this); remove(); } return false; @@ -48,5 +51,9 @@ public int getDuration() { return _duration; } - public abstract String getDisplayActiveItem(); + public abstract String getDisplayActiveItem(); + + public boolean isActive() { + return _active; + } } diff --git a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java index bb0bd22..afcbbe9 100644 --- a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java @@ -5,6 +5,8 @@ public class SpeedItem extends Item { + public static final double SPEED_MULTIPLIER = 0.5; + public SpeedItem(int x, int y, Sprite sprite) { super(x, y, sprite); } diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 4bfe991..7531ff1 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -102,7 +102,13 @@ public void createEntities() { break; // Thêm Bomber player case 'p': - Bomber bomber = new Bomber(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board, _board); + Bomber bomber = new Bomber( + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + Game.BOMBERSPEED, + _board, + _board + ); _board.addCharacter(bomber); _board.setPlayer(bomber); Screen.setOffset(0, 0); From d49cc1dc6e2e43e1beb91e2c68bd45471c66dda9 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Thu, 16 May 2024 23:17:51 +0000 Subject: [PATCH 22/66] move BombItem to Bomber instead of Game --- src/uet/oop/bomberman/Game.java | 4 +-- .../bomberman/entities/character/Bomber.java | 29 ++++++++++++++----- .../entities/character/Character.java | 5 ++++ .../entities/tile/item/BombItem.java | 4 ++- .../oop/bomberman/level/FileLevelLoader.java | 1 + 5 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 2928cec..737f8de 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -26,8 +26,8 @@ public class Game extends Canvas { public static final String TITLE = "BombermanGame"; public static final int TICKS_PER_SECOND = 60; - private static final int BOMBRATE = 1; - private static final int BOMBRADIUS = 1; + public static final int BOMBRATE = 1; + public static final int BOMBRADIUS = 1; public static final double BOMBERSPEED = 1.0;// toc do bomber private static int itemTime; diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index fff1f62..96a7343 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -14,6 +14,7 @@ import uet.oop.bomberman.entities.LayeredEntity; import uet.oop.bomberman.entities.bomb.Flame; import uet.oop.bomberman.entities.character.enemy.Enemy; +import uet.oop.bomberman.entities.tile.item.BombItem; import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.level.Coordinates; import uet.oop.bomberman.sound.Sound; @@ -22,10 +23,8 @@ public class Bomber extends Character { private List _bombs; public static List _items = new ArrayList();//xu li Item - /** - * nếu giá trị này < 0 thì cho phép đặt đối tượng Bomb tiếp theo, - * cứ mỗi lần đặt 1 Bomb mới, giá trị này sẽ được reset về 0 và giảm dần trong mỗi lần update() - */ + + private final int baseBombLimit; protected int bombCooldown = 0; public int getBombCooldown() { @@ -34,8 +33,9 @@ public int getBombCooldown() { private Board _board; - public Bomber(int x, int y, double baseSpeed, IEntityManager entityManager, Board board) { + public Bomber(int x, int y, double baseSpeed, int baseBombLimit, IEntityManager entityManager, Board board) { super(x, y, baseSpeed, entityManager); + this.baseBombLimit = baseBombLimit; this._board = board; _bombs = entityManager.getBombs(); _sprite = Sprite.player_right; @@ -66,14 +66,28 @@ public void render(Screen screen) { screen.renderEntity((int) _x, (int) _y - _sprite.SIZE, this); } + public int getBombLimit() { + int bombLimitBonus = 0; + for (Item item: getActiveItems()) { + if (!item.isActive()) continue; + if (item instanceof BombItem) { + bombLimitBonus += BombItem.BOMB_LIMIT_BONUS; + } + } + return this.baseBombLimit + bombLimitBonus; + } + + public int getBombRemainingQuota() { + return getBombLimit() - _bombs.size(); + } + public boolean placeBomb() { - if(Game.getBombRate() > 0 && bombCooldown < 0) { + if(getBombRemainingQuota() > 0 && bombCooldown < 0) { int xt = Coordinates.pixelToTile(_x + _sprite.getSize() / 2); int yt = Coordinates.pixelToTile( (_y + _sprite.getSize() / 2) - _sprite.getSize() ); //subtract half player height and minus 1 y position placeBomb(xt,yt); - Game.addBombRate(-1); bombCooldown = 30; return true; @@ -96,7 +110,6 @@ private void clearBombs() { b = bs.next(); if (b.isRemoved()) { bs.remove(); - Game.addBombRate(1); } } diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 4adb718..c2d266d 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -1,6 +1,7 @@ package uet.oop.bomberman.entities.character; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import uet.oop.bomberman.Game; @@ -83,6 +84,10 @@ public void setMoving(boolean moving) { this._moving = moving; } + public List getActiveItems() { + return Collections.unmodifiableList(activeItems); + } + public void addActiveItem(Item item) { this.activeItems.add(item); } diff --git a/src/uet/oop/bomberman/entities/tile/item/BombItem.java b/src/uet/oop/bomberman/entities/tile/item/BombItem.java index 598202a..6bf1a5a 100644 --- a/src/uet/oop/bomberman/entities/tile/item/BombItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/BombItem.java @@ -5,7 +5,9 @@ public class BombItem extends Item { - public BombItem(int x, int y, Sprite sprite) { + public static final int BOMB_LIMIT_BONUS = 1; + + public BombItem(int x, int y, Sprite sprite) { super(x, y, sprite); } diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 7531ff1..e79c447 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -106,6 +106,7 @@ public void createEntities() { Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, Game.BOMBERSPEED, + Game.BOMBRATE, _board, _board ); From 53b74c6ca17e710c541ea9212922e25b7256617d Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Fri, 17 May 2024 06:38:27 +0000 Subject: [PATCH 23/66] move FlameItem to Bomber instead of Game --- src/uet/oop/bomberman/entities/bomb/Bomb.java | 7 ++++-- .../bomberman/entities/character/Bomber.java | 24 ++++++++++++------- .../entities/character/Character.java | 5 ++-- .../entities/tile/item/FlameItem.java | 2 ++ .../oop/bomberman/level/FileLevelLoader.java | 1 + 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/uet/oop/bomberman/entities/bomb/Bomb.java b/src/uet/oop/bomberman/entities/bomb/Bomb.java index 6e200ab..69fe8f1 100644 --- a/src/uet/oop/bomberman/entities/bomb/Bomb.java +++ b/src/uet/oop/bomberman/entities/bomb/Bomb.java @@ -19,12 +19,15 @@ public class Bomb extends AnimatedEntitiy { protected Flame[] _flames; protected boolean _exploded = false; protected boolean _allowedToPassThru = true; + + private final int bombRadius; - public Bomb(int x, int y, IEntityManager board) { + public Bomb(int x, int y, int bombRadius, IEntityManager board) { _x = x; _y = y; _board = board; _sprite = Sprite.bomb; + this.bombRadius = bombRadius; } @Override @@ -86,7 +89,7 @@ protected void explode() {//nổ // TODO: tạo các Flame _flames = new Flame[4]; for (int i = 0; i < _flames.length; i++) { - _flames[i] = new Flame((int) _x, (int) _y, i, Game.getBombRadius(), _board); + _flames[i] = new Flame((int) _x, (int) _y, i, bombRadius, _board); } Sound.play("BOM_11_M"); } diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index 96a7343..2d6bd58 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -15,6 +15,7 @@ import uet.oop.bomberman.entities.bomb.Flame; import uet.oop.bomberman.entities.character.enemy.Enemy; import uet.oop.bomberman.entities.tile.item.BombItem; +import uet.oop.bomberman.entities.tile.item.FlameItem; import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.level.Coordinates; import uet.oop.bomberman.sound.Sound; @@ -27,15 +28,19 @@ public class Bomber extends Character { private final int baseBombLimit; protected int bombCooldown = 0; + private final int baseBombRadius; + private int bombRadius; + public int getBombCooldown() { return bombCooldown; } private Board _board; - public Bomber(int x, int y, double baseSpeed, int baseBombLimit, IEntityManager entityManager, Board board) { + public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRadius, IEntityManager entityManager, Board board) { super(x, y, baseSpeed, entityManager); this.baseBombLimit = baseBombLimit; + this.baseBombRadius = baseBombRadius; this._board = board; _bombs = entityManager.getBombs(); _sprite = Sprite.player_right; @@ -67,13 +72,8 @@ public void render(Screen screen) { } public int getBombLimit() { - int bombLimitBonus = 0; - for (Item item: getActiveItems()) { - if (!item.isActive()) continue; - if (item instanceof BombItem) { - bombLimitBonus += BombItem.BOMB_LIMIT_BONUS; - } - } + int countActiveItem = (int) getActiveItems().filter(item -> item instanceof BombItem).count(); + int bombLimitBonus = countActiveItem * BombItem.BOMB_LIMIT_BONUS; return this.baseBombLimit + bombLimitBonus; } @@ -81,6 +81,12 @@ public int getBombRemainingQuota() { return getBombLimit() - _bombs.size(); } + public int getBombRadius() { + int countActiveItem = (int) getActiveItems().filter(item -> item instanceof FlameItem).count(); + int bombRadiusBonus = countActiveItem * FlameItem.BOMB_RADIUS_BONUS; + return this.baseBombRadius + bombRadiusBonus; + } + public boolean placeBomb() { if(getBombRemainingQuota() > 0 && bombCooldown < 0) { @@ -97,7 +103,7 @@ public boolean placeBomb() { public void placeBomb(int x, int y) { // TODO: thực hiện tạo đối tượng bom, đặt vào vị trí (x, y) - Bomb b = new Bomb(x, y, entityManager); + Bomb b = new Bomb(x, y, getBombRadius(), entityManager); entityManager.addBomb(b); Sound.play("BOM_SET"); } diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index c2d266d..47aea17 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.stream.Stream; import uet.oop.bomberman.Game; import uet.oop.bomberman.base.IEntityManager; @@ -84,8 +85,8 @@ public void setMoving(boolean moving) { this._moving = moving; } - public List getActiveItems() { - return Collections.unmodifiableList(activeItems); + public Stream getActiveItems() { + return activeItems.stream().filter(Item::isActive); } public void addActiveItem(Item item) { diff --git a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java index 66fd498..590201b 100644 --- a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java @@ -5,6 +5,8 @@ public class FlameItem extends Item { + public static final int BOMB_RADIUS_BONUS = 1; + public FlameItem(int x, int y, Sprite sprite) { super(x, y, sprite); } diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index e79c447..c14974f 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -107,6 +107,7 @@ public void createEntities() { Coordinates.tileToPixel(y) + Game.TILES_SIZE, Game.BOMBERSPEED, Game.BOMBRATE, + Game.BOMBRADIUS, _board, _board ); From 68ac3fc93dc77977e4e1b48c92566ec37f083876 Mon Sep 17 00:00:00 2001 From: 21522098_HuyHoang <21522098@gm.uit.edu.vn> Date: Fri, 17 May 2024 18:53:45 +0700 Subject: [PATCH 24/66] Dead_Screen_Changes --- src/uet/oop/bomberman/Board.java | 10 +- src/uet/oop/bomberman/Game.java | 427 ++++++++++-------- .../bomberman/entities/character/Bomber.java | 1 - src/uet/oop/bomberman/graphics/Screen.java | 11 +- src/uet/oop/bomberman/input/Keyboard.java | 4 + .../bomberman/screen/SelectLevelScreen.java | 1 + src/uet/oop/bomberman/utils/EGameControl.java | 2 + 7 files changed, 253 insertions(+), 203 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 0bf31f2..a38a6dd 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -39,7 +39,7 @@ public List getActiveItems() { } private int _screenToShow = -1; // 1:endgame, 2:changelevel, 3:paused - + private boolean GameOver = false; private int _time = Game.TIME; private int _points = Game.POINTS; @@ -122,9 +122,15 @@ protected void detectEndGame() { if (_time <= 0) endGame(); } - + public boolean isGameOver(){ + return GameOver; + } + public boolean GameNotOver(){ + return GameOver = false; + } public void endGame() { _screenToShow = 1; + GameOver = true; _game.resetScreenDelay(); _game.pause(); } diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index a95382b..382b8ae 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -1,5 +1,6 @@ package uet.oop.bomberman; +import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.gui.Frame; import uet.oop.bomberman.input.Keyboard; @@ -18,230 +19,262 @@ */ public class Game extends Canvas { - public static final int TILES_SIZE = 16, - WIDTH = TILES_SIZE * (31 / 2), - HEIGHT = 13 * TILES_SIZE; + public static final int TILES_SIZE = 16, + WIDTH = TILES_SIZE * (31 / 2), + HEIGHT = 13 * TILES_SIZE; - public static int SCALE = 3; + public static int SCALE = 3; - public static final String TITLE = "BombermanGame"; + public static final String TITLE = "BombermanGame"; - private static final int BOMBRATE = 1; - private static final int BOMBRADIUS = 1; - private static final double BOMBERSPEED = 1.0;// toc do bomber - private static int itemTime; + private static final int BOMBRATE = 1; + private static final int BOMBRADIUS = 1; + private static final double BOMBERSPEED = 1.0; // toc do bomber + private static int itemTime; - public static final int TIME = 200; - public static final int ITEM_TIME = 20; - public static final int POINTS = 0; + public static final int TIME = 200; + public static final int ITEM_TIME = 20; + public static final int POINTS = 0; - protected static int SCREENDELAY = 3; + protected static int SCREENDELAY = 3; - protected static int bombRate = BOMBRATE; - protected static int bombRadius = BOMBRADIUS; - protected static double bomberSpeed = BOMBERSPEED; + protected static int bombRate = BOMBRATE; + protected static int bombRadius = BOMBRADIUS; + protected static double bomberSpeed = BOMBERSPEED; - protected int _screenDelay = SCREENDELAY; + protected int _screenDelay = SCREENDELAY; - private Keyboard _input; - private boolean _running = false; - private boolean _paused = true; + private Keyboard _input; + private boolean _running = false; + private boolean _paused = true; - private static Board _board; - private Screen screen; - private Frame _frame; + private static Board _board; + private Screen screen; + private Frame _frame; + private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); + private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData(); - private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); - private int[] pixels = ((DataBufferInt)image.getRaster().getDataBuffer()).getData(); + // game variable + private int frames; + private int updates; + private long timer; - // game variable - private int frames; - private int updates; - private long timer; + // game screens + private SelectLevelScreen selectLevelScreen; - // game screens - private SelectLevelScreen selectLevelScreen; - - public Game(Frame frame) { - _frame = frame; - _frame.setTitle(TITLE); - screen = new Screen(WIDTH, HEIGHT); - _input = new Keyboard(); + public Game(Frame frame) { + _frame = frame; + _frame.setTitle(TITLE); - _board = new Board(this, _input, screen); - addKeyListener(_input); + screen = new Screen(WIDTH, HEIGHT); + _input = new Keyboard(); - initScreen(); - } - - - private void renderGame(Graphics g) { - screen.clear(); - - _board.render(screen); - - for (int i = 0; i < pixels.length; i++) { - pixels[i] = screen._pixels[i]; - } - - g.drawImage(image, 0, 0, getWidth(), getHeight(), null); - _board.renderMessages(g); - } - - private void renderScreen(Graphics g) { - screen.clear(); - _board.drawScreen(g); - } + _board = new Board(this, _input, screen); + addKeyListener(_input); - private void initScreen() { - Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; + initScreen(); + } - this.selectLevelScreen = new SelectLevelScreen(_input); - } - private void update() { - _input.update(); - switch (Global.currentScreen) { - case GAME_PLAY_SCREEN: - _board.update(); - break; - case SELECT_LEVEL_SCREEN: - // TODO: call select level screen update - selectLevelScreen.update(); - break; - } - } + private void renderGame(Graphics g) { + screen.clear(); - private void showScreen() { - BufferStrategy bs = getBufferStrategy(); - if (bs == null) { - createBufferStrategy(3); - return; - } - Graphics g = bs.getDrawGraphics(); - - switch (Global.currentScreen) { - case GAME_PLAY_SCREEN: - if(_paused) { - if(_screenDelay <= 0) { - _board.setShow(-1); - _paused = false; - } - - renderScreen(g); - } else { - renderGame(g); - } - - - frames++; - if(System.currentTimeMillis() - timer > 1000) { - _frame.setTime(_board.subtractTime()); - _frame.setPoints(_board.getPoints()); - _frame.setItemTime(_board.getItemTime()); - timer += 1000; - _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); - updates = 0; - frames = 0; - - if(_board.getShow() == 2) - --_screenDelay; - } - break; - case SELECT_LEVEL_SCREEN: - // TODO: render select level screen - selectLevelScreen.drawScreen(g); - break; - } - - g.dispose(); - bs.show(); - } + _board.render(screen); - private void initGame() { - this.timer = System.currentTimeMillis(); - this.frames = 0; - this.updates = 0; - } + for (int i = 0; i < pixels.length; i++) { + pixels[i] = screen._pixels[i]; + } - public void start() { - _running = true; - - initGame(); - - long lastTime = System.nanoTime(); - final double ns = 1000000000.0 / 60.0; //nanosecond, 60 frames per second - double delta = 0; - requestFocus(); - while (_running) { - long now = System.nanoTime(); - delta += (now - lastTime) / ns; - lastTime = now; - while (delta >= 1) { - update(); - updates++; - delta--; - } - - showScreen(); - } - } + g.drawImage(image, 0, 0, getWidth(), getHeight(), null); + _board.renderMessages(g); + } - public static int getItemTime() { - return itemTime; - } + private void renderScreen(Graphics g) { + screen.clear(); + _board.drawScreen(g); + } - public static double getBomberSpeed() { - return bomberSpeed; - } + private void initScreen() { + Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; - public static int getBombRate() { - return bombRate; - } + this.selectLevelScreen = new SelectLevelScreen(_input); + } - public static int getBombRadius() { - return bombRadius; - } + private void update() { + _input.update(); + switch (Global.currentScreen) { + case GAME_PLAY_SCREEN: + _board.update(); + break; + case SELECT_LEVEL_SCREEN: + selectLevelScreen.update(); + break; + } - public static void addBomberSpeed(double i) { - bomberSpeed += i; - } + // Check if the game is over + if (_board.isGameOver()) { + if (_input.restart) { + restartGame(); + } else if (_input.backhome) { + _board.setShow(-1); + _paused = false; + initScreen(); + _board.GameNotOver(); + resetGameParams(); + startNewGame(); - public static void addBombRadius(int i) { - bombRadius += i; - } + } + } - public static void addBombRate(int i) { - bombRate += i; + + } + private void resetGameParams() { + bombRate = BOMBRATE; + bombRadius = BOMBRADIUS; + bomberSpeed = BOMBERSPEED; } - - public void resetScreenDelay() { - _screenDelay = SCREENDELAY; - } - - public static Board getBoard() { - return _board; - } - - public boolean isPaused() { - return _paused; - } - - public void pause() { - _paused = true; - } - - public static void setBombRate(int bombRate) { - Game.bombRate = bombRate; - } - - public static void setBombRadius(int bombRadius) { - Game.bombRadius = bombRadius; - } - - public static void setBomberSpeed(double bomberSpeed) { - Game.bomberSpeed = bomberSpeed; - } - + private void restartGame() { + Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; + screen = new Screen(WIDTH, HEIGHT); + _input.restart = false; + _board = new Board(this, _input, screen); + } + private void startNewGame() { + initScreen(); + _input.backhome = false; + screen = new Screen(WIDTH, HEIGHT); + _board = new Board(this, _input, screen); + resetGameParams(); + } + + private void showScreen() { + BufferStrategy bs = getBufferStrategy(); + if (bs == null) { + createBufferStrategy(3); + return; + } + Graphics g = bs.getDrawGraphics(); + + switch (Global.currentScreen) { + case GAME_PLAY_SCREEN: + if (_paused) { + if (_screenDelay <= 0) { + _board.setShow(-1); + _paused = false; + } + + renderScreen(g); + } else { + renderGame(g); + } + + frames++; + if (System.currentTimeMillis() - timer > 1000) { + _frame.setTime(_board.subtractTime()); + _frame.setPoints(_board.getPoints()); + _frame.setItemTime(_board.getItemTime()); + timer += 1000; + _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); + updates = 0; + frames = 0; + + if (_board.getShow() == 2) + --_screenDelay; + } + break; + case SELECT_LEVEL_SCREEN: + // TODO: render select level screen + selectLevelScreen.drawScreen(g); + break; + } + + g.dispose(); + bs.show(); + } + + private void initGame() { + this.timer = System.currentTimeMillis(); + this.frames = 0; + this.updates = 0; + } + + public void start() { + _running = true; + + initGame(); + + long lastTime = System.nanoTime(); + final double ns = 1000000000.0 / 60.0; //nanosecond, 60 frames per second + double delta = 0; + requestFocus(); + while (_running) { + long now = System.nanoTime(); + delta += (now - lastTime) / ns; + lastTime = now; + while (delta >= 1) { + update(); + updates++; + delta--; + } + + showScreen(); + } + } + + public static int getItemTime() { + return itemTime; + } + + public static double getBomberSpeed() { + return bomberSpeed; + } + + public static int getBombRate() { + return bombRate; + } + + public static int getBombRadius() { + return bombRadius; + } + + public static void addBomberSpeed(double i) { + bomberSpeed += i; + } + + public static void addBombRadius(int i) { + bombRadius += i; + } + + public static void addBombRate(int i) { + bombRate += i; + } + + public void resetScreenDelay() { + _screenDelay = SCREENDELAY; + } + + public static Board getBoard() { + return _board; + } + + public boolean isPaused() { + return _paused; + } + + public void pause() { + _paused = true; + } + + public static void setBombRate(int bombRate) { + Game.bombRate = bombRate; + } + + public static void setBombRadius(int bombRadius) { + Game.bombRadius = bombRadius; + } + + public static void setBomberSpeed(double bomberSpeed) { + Game.bomberSpeed = bomberSpeed; + } } diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index bcc797d..3dd7aa6 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -196,7 +196,6 @@ public boolean collide(Entity e) { if( e instanceof LayeredEntity) return(e.collide(this)); return true; } - //sprite private void chooseSprite() { switch (_direction) { diff --git a/src/uet/oop/bomberman/graphics/Screen.java b/src/uet/oop/bomberman/graphics/Screen.java index 8cbc134..082d451 100644 --- a/src/uet/oop/bomberman/graphics/Screen.java +++ b/src/uet/oop/bomberman/graphics/Screen.java @@ -95,13 +95,18 @@ public void drawEndGame(Graphics g, int points) { Font font = new Font("Arial", Font.PLAIN, 20 * Game.SCALE); g.setFont(font); g.setColor(Color.white); - drawCenteredString("GAME OVER", getRealWidth(), getRealHeight(), g); + drawCenteredString("GAME OVER", getRealWidth(), getRealHeight()/4, g); font = new Font("Arial", Font.PLAIN, 10 * Game.SCALE); g.setFont(font); g.setColor(Color.yellow); - drawCenteredString("POINTS: " + points, getRealWidth(), getRealHeight() + (Game.TILES_SIZE * 2) * Game.SCALE, g); - } + drawCenteredString("POINTS: " + points, getRealWidth(), getRealHeight()/3 + (Game.TILES_SIZE * 2) * Game.SCALE, g); + font = new Font("Arial", Font.PLAIN, 8 * Game.SCALE); + g.setFont(font); + g.setColor(Color.white); + drawCenteredString("Press R to retry", getRealWidth(), getRealHeight()/2 + (Game.TILES_SIZE * 4) * Game.SCALE, g); + drawCenteredString("Press ENTER to select level", getRealWidth(), getRealHeight() + (Game.TILES_SIZE * 5) * Game.SCALE, g); + } public void drawChangeLevel(Graphics g, int level) { g.setColor(Color.black); diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index 7026dc9..e375db2 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -17,6 +17,8 @@ public interface KeyboardInputCallback { private boolean[] keys = new boolean[120]; //120 is enough to this game public boolean up, down, left, right, space; + public boolean restart,backhome = false; + public Optional keyboardInputCallback; public void update() { @@ -25,6 +27,8 @@ public void update() { left = keys[KeyEvent.VK_LEFT] || keys[KeyEvent.VK_A]; right = keys[KeyEvent.VK_RIGHT] || keys[KeyEvent.VK_D]; space = keys[KeyEvent.VK_SPACE] || keys[KeyEvent.VK_X]; + restart = keys[KeyEvent.VK_R]; + backhome = keys[KeyEvent.VK_B]; } private EGameControl keyToGameControl(int keyCode) { diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index 33fb2a1..4b14b14 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -3,6 +3,7 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.gui.GameScreen; import uet.oop.bomberman.input.Keyboard; + import uet.oop.bomberman.utils.EGameControl; import uet.oop.bomberman.utils.EGameLevel; import uet.oop.bomberman.utils.EScreenName; diff --git a/src/uet/oop/bomberman/utils/EGameControl.java b/src/uet/oop/bomberman/utils/EGameControl.java index fa8cea4..9400a1d 100644 --- a/src/uet/oop/bomberman/utils/EGameControl.java +++ b/src/uet/oop/bomberman/utils/EGameControl.java @@ -8,4 +8,6 @@ public enum EGameControl { RIGHT, ENTER, SPACE, + RESTART, + BACK } From 2b3c2c43a7ad6bd03cc95125a2da3c9016c34e65 Mon Sep 17 00:00:00 2001 From: 21522098_HuyHoang <21522098@gm.uit.edu.vn> Date: Fri, 17 May 2024 18:56:41 +0700 Subject: [PATCH 25/66] Fixed Text --- src/uet/oop/bomberman/graphics/Screen.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/uet/oop/bomberman/graphics/Screen.java b/src/uet/oop/bomberman/graphics/Screen.java index 082d451..1daaa2d 100644 --- a/src/uet/oop/bomberman/graphics/Screen.java +++ b/src/uet/oop/bomberman/graphics/Screen.java @@ -15,7 +15,7 @@ public class Screen { protected int _width, _height; public int[] _pixels; private int _transparentColor = 0xffff00ff; - + public static int xOffset = 0, yOffset = 0; public Screen(int width, int height) { @@ -105,7 +105,7 @@ public void drawEndGame(Graphics g, int points) { g.setFont(font); g.setColor(Color.white); drawCenteredString("Press R to retry", getRealWidth(), getRealHeight()/2 + (Game.TILES_SIZE * 4) * Game.SCALE, g); - drawCenteredString("Press ENTER to select level", getRealWidth(), getRealHeight() + (Game.TILES_SIZE * 5) * Game.SCALE, g); + drawCenteredString("Press B to Back Home", getRealWidth(), getRealHeight()/2 + (Game.TILES_SIZE * 5) * Game.SCALE, g); } public void drawChangeLevel(Graphics g, int level) { From 53f10aa19471a37f69ee30c5449fc45a2c8d47d2 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Sat, 18 May 2024 06:46:35 +0000 Subject: [PATCH 26/66] decouple bomber stats from global Game --- src/uet/oop/bomberman/Board.java | 23 ++++---- src/uet/oop/bomberman/Game.java | 57 ++----------------- .../bomberman/base/IActiveItemManager.java | 12 ++++ .../oop/bomberman/base/IEntityManager.java | 2 +- .../oop/bomberman/base/IGameInfoManager.java | 11 ++++ .../entities/character/Character.java | 2 +- .../entities/character/enemy/Kondoria.java | 2 +- .../entities/character/enemy/Minvo.java | 2 +- .../entities/tile/item/BombItem.java | 2 - .../entities/tile/item/FlameItem.java | 2 - .../bomberman/entities/tile/item/Item.java | 1 - .../entities/tile/item/SpeedItem.java | 2 - src/uet/oop/bomberman/gui/Frame.java | 6 +- src/uet/oop/bomberman/gui/InfoPanel.java | 18 +++--- 14 files changed, 55 insertions(+), 87 deletions(-) create mode 100644 src/uet/oop/bomberman/base/IActiveItemManager.java create mode 100644 src/uet/oop/bomberman/base/IGameInfoManager.java diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 6346501..5e09cfd 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -1,6 +1,7 @@ package uet.oop.bomberman; import uet.oop.bomberman.base.IEntityManager; +import uet.oop.bomberman.base.IGameInfoManager; import uet.oop.bomberman.base.IMessageManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.Message; @@ -20,11 +21,12 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; /** * Quản lý thao tác điều khiển, load level, render các màn hình của game */ -public class Board implements IRender, IEntityManager, IMessageManager { +public class Board implements IRender, IEntityManager, IMessageManager, IGameInfoManager { protected LevelLoader _levelLoader; protected Game _game; protected Keyboard _input; @@ -38,8 +40,9 @@ public class Board implements IRender, IEntityManager, IMessageManager { private Character player; + @Override public List getActiveItems() { - return _activeItems; + return getPlayer().getActiveItems().collect(Collectors.toList()); } private int _screenToShow = -1; // 1:endgame, 2:changelevel, 3:paused @@ -132,9 +135,6 @@ public void render(Screen screen) { } public void nextLevel() { - Game.setBombRadius(1); - Game.setBombRate(1); - Game.setBomberSpeed(1.0); loadLevel(_levelLoader.getLevel() + 1); } @@ -274,6 +274,7 @@ public Entity getEntityAt(double x, double y) { return _entities[(int) x + (int) y * _levelLoader.getWidth()]; } + @Override public void addActiveItem(Item item) { _activeItems.add(item); } @@ -374,6 +375,7 @@ protected void updateMessages() { } } + @Override public int subtractTime() { if (!_game.isPaused() && _time > 0) return --_time; @@ -381,14 +383,6 @@ public int subtractTime() { return _time; } - public int getItemTime() { - int totalTime = 0; - for (int i = 0; i < _activeItems.size(); i++) { - totalTime += _activeItems.get(i).getDuration() / Game.TICKS_PER_SECOND; - } - return totalTime; - } - public Keyboard getInput() { return _input; } @@ -409,14 +403,17 @@ public void setShow(int i) { _screenToShow = i; } + @Override public int getTime() { return _time; } + @Override public int getPoints() { return _points; } + @Override public void addPoints(int points) { this._points += points; } diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 737f8de..d5ee103 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -1,5 +1,6 @@ package uet.oop.bomberman; +import uet.oop.bomberman.base.IGameInfoManager; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.gui.Frame; import uet.oop.bomberman.input.Keyboard; @@ -8,9 +9,6 @@ import java.awt.image.BufferedImage; import java.awt.image.DataBufferInt; -import javax.swing.JButton; - - /** * Tạo vòng lặp cho game, lưu trữ một vài tham số cấu hình toàn cục, * Gọi phương thức render(), update() cho tất cả các entity @@ -29,24 +27,18 @@ public class Game extends Canvas { public static final int BOMBRATE = 1; public static final int BOMBRADIUS = 1; public static final double BOMBERSPEED = 1.0;// toc do bomber - private static int itemTime; public static final int TIME = 200; - public static final int ITEM_TIME = 20; public static final int POINTS = 0; protected static int SCREENDELAY = 3; - protected static int bombRate = BOMBRATE; - protected static int bombRadius = BOMBRADIUS; - protected static double bomberSpeed = BOMBERSPEED; - protected int _screenDelay = SCREENDELAY; private Keyboard _input; private boolean _running = false; private boolean _paused = true; - private static Board _board; + private Board _board; private Screen screen; private Frame _frame; @@ -153,7 +145,7 @@ public void start() { if (System.currentTimeMillis() - timer > 1000) { _frame.setTime(_board.subtractTime()); _frame.setPoints(_board.getPoints()); - _frame.setItemTime(_board.getItemTime()); + _frame.renderItemTime(); timer += 1000; _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); updates = 0; @@ -165,40 +157,9 @@ public void start() { } } - public static int getItemTime() { - return itemTime; - } - - public static double getBomberSpeed() { - return bomberSpeed; - } - - public static int getBombRate() { - return bombRate; - } - - public static int getBombRadius() { - return bombRadius; - } - - public static void addBomberSpeed(double i) { - bomberSpeed += i; - } - - public static void addBombRadius(int i) { - bombRadius += i; - } - - public static void addBombRate(int i) { - bombRate += i; - } - public void resetScreenDelay() { _screenDelay = SCREENDELAY; } - public static Board getBoard() { - return _board; - } public boolean isPaused() { return _paused; } @@ -207,16 +168,8 @@ public void pause() { _paused = !_paused; } - public static void setBombRate(int bombRate) { - Game.bombRate = bombRate; - } - - public static void setBombRadius(int bombRadius) { - Game.bombRadius = bombRadius; - } - - public static void setBomberSpeed(double bomberSpeed) { - Game.bomberSpeed = bomberSpeed; + public IGameInfoManager getGameInfoManager() { + return _board; } } diff --git a/src/uet/oop/bomberman/base/IActiveItemManager.java b/src/uet/oop/bomberman/base/IActiveItemManager.java new file mode 100644 index 0000000..dc86201 --- /dev/null +++ b/src/uet/oop/bomberman/base/IActiveItemManager.java @@ -0,0 +1,12 @@ +package uet.oop.bomberman.base; + +import java.util.List; + +import uet.oop.bomberman.entities.tile.item.Item; + +public interface IActiveItemManager { + + public List getActiveItems(); + public void addActiveItem(Item item); + +} \ No newline at end of file diff --git a/src/uet/oop/bomberman/base/IEntityManager.java b/src/uet/oop/bomberman/base/IEntityManager.java index 2135078..46f23ce 100644 --- a/src/uet/oop/bomberman/base/IEntityManager.java +++ b/src/uet/oop/bomberman/base/IEntityManager.java @@ -7,7 +7,7 @@ import uet.oop.bomberman.entities.bomb.FlameSegment; import uet.oop.bomberman.entities.character.Character; -public interface IEntityManager { +public interface IEntityManager extends IActiveItemManager { public List getBombs(); diff --git a/src/uet/oop/bomberman/base/IGameInfoManager.java b/src/uet/oop/bomberman/base/IGameInfoManager.java new file mode 100644 index 0000000..ce0b57b --- /dev/null +++ b/src/uet/oop/bomberman/base/IGameInfoManager.java @@ -0,0 +1,11 @@ +package uet.oop.bomberman.base; + +public interface IGameInfoManager extends IActiveItemManager { + + public int subtractTime(); + public int getTime(); + + public int getPoints(); + public void addPoints(int points); + +} \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 47aea17..75191db 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -1,7 +1,6 @@ package uet.oop.bomberman.entities.character; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.stream.Stream; @@ -91,6 +90,7 @@ public Stream getActiveItems() { public void addActiveItem(Item item) { this.activeItems.add(item); + entityManager.addActiveItem(item); } public double getSpeed() { diff --git a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java index 6f2a1f9..478c97b 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java @@ -7,7 +7,7 @@ public class Kondoria extends Enemy { public Kondoria(int x, int y, Board board) { - super(x, y, board, Sprite.balloom_dead, Game.getBomberSpeed() / 4, 1000); + super(x, y, board, Sprite.balloom_dead, Game.BOMBERSPEED / 4, 1000); _sprite = Sprite.kondoria_right1; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java index 5ec04b3..677f3ba 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java @@ -9,7 +9,7 @@ public class Minvo extends Enemy { private Board _board; public Minvo(int x, int y, Board board) { - super(x, y, board, Sprite.minvo_dead, Game.getBomberSpeed() * 1.5, 800); + super(x, y, board, Sprite.minvo_dead, Game.BOMBERSPEED * 1.5, 800); _board = board; _sprite = Sprite.minvo_right1; diff --git a/src/uet/oop/bomberman/entities/tile/item/BombItem.java b/src/uet/oop/bomberman/entities/tile/item/BombItem.java index 6bf1a5a..4413976 100644 --- a/src/uet/oop/bomberman/entities/tile/item/BombItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/BombItem.java @@ -13,12 +13,10 @@ public BombItem(int x, int y, Sprite sprite) { @Override protected void handleItemActive() { - Game.addBombRate(1); } @Override protected void handleItemInactive() { - Game.addBombRate(-1); } @Override diff --git a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java index 590201b..8e7f17a 100644 --- a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java @@ -13,12 +13,10 @@ public FlameItem(int x, int y, Sprite sprite) { @Override protected void handleItemActive() { - Game.addBombRadius(1); } @Override protected void handleItemInactive() { - Game.addBombRadius(-1); } @Override diff --git a/src/uet/oop/bomberman/entities/tile/item/Item.java b/src/uet/oop/bomberman/entities/tile/item/Item.java index b2d6ff5..3f78feb 100644 --- a/src/uet/oop/bomberman/entities/tile/item/Item.java +++ b/src/uet/oop/bomberman/entities/tile/item/Item.java @@ -28,7 +28,6 @@ public boolean collide(Entity e) { Sound.play("Item"); handleItemActive(); _active = true; - Game.getBoard().addActiveItem(this); player.addActiveItem(this); remove(); } diff --git a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java index afcbbe9..9094772 100644 --- a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java @@ -13,12 +13,10 @@ public SpeedItem(int x, int y, Sprite sprite) { @Override protected void handleItemActive() { - Game.addBomberSpeed(0.5); } @Override protected void handleItemInactive() { - Game.addBomberSpeed(-0.5); } @Override diff --git a/src/uet/oop/bomberman/gui/Frame.java b/src/uet/oop/bomberman/gui/Frame.java index 0ccb41c..99a635b 100644 --- a/src/uet/oop/bomberman/gui/Frame.java +++ b/src/uet/oop/bomberman/gui/Frame.java @@ -20,7 +20,7 @@ public Frame() { _containerpane = new JPanel(new BorderLayout()); _gamepane = new GamePanel(this); - _infopanel = new InfoPanel(_gamepane.getGame()); + _infopanel = new InfoPanel(_gamepane.getGame().getGameInfoManager()); _containerpane.add(_infopanel, BorderLayout.PAGE_START); _containerpane.add(_gamepane, BorderLayout.PAGE_END); @@ -46,8 +46,8 @@ public void setPoints(int points) { _infopanel.setPoints(points); } - public void setItemTime(int itemTime) { - _infopanel.setItemTime(itemTime); + public void renderItemTime() { + _infopanel.renderItemTime(); } } diff --git a/src/uet/oop/bomberman/gui/InfoPanel.java b/src/uet/oop/bomberman/gui/InfoPanel.java index bd9e183..b6eb091 100644 --- a/src/uet/oop/bomberman/gui/InfoPanel.java +++ b/src/uet/oop/bomberman/gui/InfoPanel.java @@ -1,11 +1,10 @@ package uet.oop.bomberman.gui; -import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.IGameInfoManager; import uet.oop.bomberman.entities.tile.item.Item; import javax.swing.*; import java.awt.*; -import java.awt.event.*; import java.util.List; /** @@ -15,14 +14,17 @@ public class InfoPanel extends JPanel { private JLabel timeLabel; private JLabel pointsLabel; private JLabel itemTimeLabel; - private Game game; - public InfoPanel(Game game) { + + private final IGameInfoManager gameInfoManager; + + public InfoPanel(IGameInfoManager gameInfoManager) { + this.gameInfoManager = gameInfoManager; setLayout(new GridLayout()); - timeLabel = new JLabel("Time: " + game.getBoard().getTime()); + timeLabel = new JLabel("Time: " + gameInfoManager.getTime()); timeLabel.setForeground(Color.white); timeLabel.setHorizontalAlignment(JLabel.CENTER); - pointsLabel = new JLabel("Points: " + game.getBoard().getPoints()); + pointsLabel = new JLabel("Points: " + gameInfoManager.getPoints()); pointsLabel.setForeground(Color.white); pointsLabel.setHorizontalAlignment(JLabel.CENTER); @@ -46,9 +48,9 @@ public void setPoints(int t) { pointsLabel.setText("Score: " + t); } - public void setItemTime(int t) { + public void renderItemTime() { String label = ""; - List items = game.getBoard().getActiveItems(); + List items = gameInfoManager.getActiveItems(); for (int i = 0; i < items.size(); i++) { Item item = items.get(i); if ((item.getDuration()) == 0) { From f705f8dc323adfcbe68082d6408f50c700788aba Mon Sep 17 00:00:00 2001 From: 21522098_HuyHoang <21522098@gm.uit.edu.vn> Date: Sat, 18 May 2024 14:38:45 +0700 Subject: [PATCH 27/66] Fixed Error --- src/uet/oop/bomberman/Board.java | 9 +- src/uet/oop/bomberman/Game.java | 49 ++++--- src/uet/oop/bomberman/input/Keyboard.java | 27 ++-- .../oop/bomberman/screen/SelectOption.java | 128 ++++++++++++++++++ src/uet/oop/bomberman/utils/EGameControl.java | 3 +- src/uet/oop/bomberman/utils/EScreenName.java | 1 + 6 files changed, 170 insertions(+), 47 deletions(-) create mode 100644 src/uet/oop/bomberman/screen/SelectOption.java diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index a38a6dd..1260bb1 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -13,6 +13,8 @@ import uet.oop.bomberman.input.Keyboard; import uet.oop.bomberman.level.FileLevelLoader; import uet.oop.bomberman.level.LevelLoader; +import uet.oop.bomberman.utils.EScreenName; +import uet.oop.bomberman.utils.Global; import java.awt.*; import java.util.ArrayList; @@ -129,10 +131,9 @@ public boolean GameNotOver(){ return GameOver = false; } public void endGame() { - _screenToShow = 1; - GameOver = true; - _game.resetScreenDelay(); - _game.pause(); + + Global.currentScreen = EScreenName.END_GAME_SCREEN; + } public boolean detectNoEnemies() {// phat hien enemies diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 382b8ae..3c4b5f7 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -7,7 +7,7 @@ import uet.oop.bomberman.screen.SelectLevelScreen; import uet.oop.bomberman.utils.EScreenName; import uet.oop.bomberman.utils.Global; - +import uet.oop.bomberman.screen.SelectOption; import java.awt.*; import java.awt.image.BufferStrategy; import java.awt.image.BufferedImage; @@ -43,12 +43,13 @@ public class Game extends Canvas { protected static double bomberSpeed = BOMBERSPEED; protected int _screenDelay = SCREENDELAY; - private Keyboard _input; + private Keyboard _input1; private boolean _running = false; private boolean _paused = true; private static Board _board; + private Screen screen; private Frame _frame; private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); @@ -61,7 +62,7 @@ public class Game extends Canvas { // game screens private SelectLevelScreen selectLevelScreen; - + private SelectOption selectOption; public Game(Frame frame) { _frame = frame; @@ -69,9 +70,11 @@ public Game(Frame frame) { screen = new Screen(WIDTH, HEIGHT); _input = new Keyboard(); - + _input1 = new Keyboard(); _board = new Board(this, _input, screen); + addKeyListener(_input); + addKeyListener(_input1); initScreen(); } @@ -97,8 +100,8 @@ private void renderScreen(Graphics g) { private void initScreen() { Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; - this.selectLevelScreen = new SelectLevelScreen(_input); + this.selectOption = new SelectOption(_input1, this); } private void update() { @@ -110,23 +113,10 @@ private void update() { case SELECT_LEVEL_SCREEN: selectLevelScreen.update(); break; + case END_GAME_SCREEN: + selectOption.update(); + break; } - - // Check if the game is over - if (_board.isGameOver()) { - if (_input.restart) { - restartGame(); - } else if (_input.backhome) { - _board.setShow(-1); - _paused = false; - initScreen(); - _board.GameNotOver(); - resetGameParams(); - startNewGame(); - - } - } - } private void resetGameParams() { @@ -134,18 +124,22 @@ private void resetGameParams() { bombRadius = BOMBRADIUS; bomberSpeed = BOMBERSPEED; } - private void restartGame() { + public void restartGame() { Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; screen = new Screen(WIDTH, HEIGHT); - _input.restart = false; _board = new Board(this, _input, screen); } - private void startNewGame() { + + public void startNewGame() { + _board.setShow(-1); + _paused = false; initScreen(); - _input.backhome = false; + _board.GameNotOver(); + resetGameParams(); + initScreen(); screen = new Screen(WIDTH, HEIGHT); _board = new Board(this, _input, screen); - resetGameParams(); + resetGameParams(); } private void showScreen() { @@ -187,6 +181,9 @@ private void showScreen() { // TODO: render select level screen selectLevelScreen.drawScreen(g); break; + case END_GAME_SCREEN: + selectOption.drawScreen(g); + break; } g.dispose(); diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index e375db2..9fb8b29 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -17,8 +17,6 @@ public interface KeyboardInputCallback { private boolean[] keys = new boolean[120]; //120 is enough to this game public boolean up, down, left, right, space; - public boolean restart,backhome = false; - public Optional keyboardInputCallback; public void update() { @@ -26,9 +24,7 @@ public void update() { down = keys[KeyEvent.VK_DOWN] || keys[KeyEvent.VK_S]; left = keys[KeyEvent.VK_LEFT] || keys[KeyEvent.VK_A]; right = keys[KeyEvent.VK_RIGHT] || keys[KeyEvent.VK_D]; - space = keys[KeyEvent.VK_SPACE] || keys[KeyEvent.VK_X]; - restart = keys[KeyEvent.VK_R]; - backhome = keys[KeyEvent.VK_B]; + space = keys[KeyEvent.VK_SPACE]; } private EGameControl keyToGameControl(int keyCode) { @@ -48,29 +44,30 @@ private EGameControl keyToGameControl(int keyCode) { return EGameControl.RIGHT; } - if (keyCode == KeyEvent.VK_SPACE || keyCode == KeyEvent.VK_X) { + if (keyCode == KeyEvent.VK_SPACE) { return EGameControl.SPACE; } if (keyCode == KeyEvent.VK_ENTER) { return EGameControl.ENTER; } + if (keyCode == KeyEvent.VK_X) { + return EGameControl.X; + } return EGameControl.NONE; } - @Override public void keyTyped(KeyEvent e) {} @Override public void keyPressed(KeyEvent e) { - keys[e.getKeyCode()] = true; - - if (keyboardInputCallback.isPresent()) { - KeyboardInputCallback callback = keyboardInputCallback.get(); - callback.onKeyPressed(keyToGameControl(e.getKeyCode())); - } - } + keys[e.getKeyCode()] = true; + if (keyboardInputCallback.isPresent()) { + KeyboardInputCallback callback = keyboardInputCallback.get(); + callback.onKeyPressed(keyToGameControl(e.getKeyCode())); + } + } @Override public void keyReleased(KeyEvent e) { @@ -78,4 +75,4 @@ public void keyReleased(KeyEvent e) { } -} +} \ No newline at end of file diff --git a/src/uet/oop/bomberman/screen/SelectOption.java b/src/uet/oop/bomberman/screen/SelectOption.java new file mode 100644 index 0000000..bce7c24 --- /dev/null +++ b/src/uet/oop/bomberman/screen/SelectOption.java @@ -0,0 +1,128 @@ +package uet.oop.bomberman.screen; +import uet.oop.bomberman.Game; +import uet.oop.bomberman.gui.GameScreen; +import uet.oop.bomberman.input.Keyboard; +import uet.oop.bomberman.sound.Sound; +import uet.oop.bomberman.utils.EGameControl; +import uet.oop.bomberman.utils.EScreenName; +import uet.oop.bomberman.utils.Global; +import java.awt.*; +import java.util.ArrayList; + +public class SelectOption extends GameScreen { + ArrayList options = new ArrayList(); + int selectorIndex = 0; + private Game game; + private Keyboard _input; + public SelectOption(Keyboard input, Game game) { + _input = input; + this.game = game; + options.add("Restart"); + options.add("Back Home"); + + _input.keyboardInputCallback = java.util.Optional.of(new Keyboard.KeyboardInputCallback() { + @Override + public void onKeyPressed(EGameControl gameControl) { + switch (gameControl) { + case LEFT: + selectorIndex--; + break; + case RIGHT: + selectorIndex++; + break; + case X: + if (selectorIndex == 0) { + game.restartGame(); + } else if (selectorIndex == 1) { + game.startNewGame(); + } + break; + } + + if (selectorIndex < 0) { + selectorIndex = options.size() - 1; + } else if (selectorIndex > options.size() - 1) { + selectorIndex = 0; + } + } + }); + } + + @Override + public void drawScreen(Graphics g) { + g.setColor(Color.black); + g.fillRect(0, 0, Global.screenWidth, Global.screenHeight); + drawTitle(g); + drawPOINTS(g, game.getBoard().getPoints()); + drawOptions(g); + drawSelector(g); + } + + private void drawTitle(Graphics g) { + String title = "GAME OVER"; + Font font = new Font("Arial", Font.BOLD, 20 * Game.SCALE); + g.setFont(font); + g.setColor(Color.white); + + FontMetrics fm = g.getFontMetrics(); + int x = (Global.screenWidth - fm.stringWidth(title)) / 2; + int marginTop = 20; + int y = marginTop + fm.getAscent(); + + g.drawString(title, x, y); + } + private void drawPOINTS(Graphics g,int points) + { + String Point = "POINTS: " + points; + Font font = new Font("Arial", Font.BOLD, 10 * Game.SCALE); + g.setFont(font); + g.setColor(Color.yellow); + + FontMetrics fm = g.getFontMetrics(); + int textWidth = fm.stringWidth(Point); + int x = (Global.screenWidth - textWidth) / 2; // Vị trí x để chuỗi ở giữa màn hình + int marginTop = 100; + int y = marginTop + fm.getAscent(); + + g.drawString(Point, x, y); + + } + private void drawOptions(Graphics g) { + Font font = new Font("Arial", Font.PLAIN, 10 * Game.SCALE); + g.setFont(font); + g.setColor(Color.white); + + int w = Global.screenWidth; + int h = Global.screenHeight; + FontMetrics fm = g.getFontMetrics(); + int textHeight = fm.getAscent() + fm.getDescent(); + int marginTop = (h - options.size() * textHeight) / 2; + + for (int i = 0; i < options.size(); i++) { + String option = options.get(i); + int x = (w - fm.stringWidth(option)) / 2; + int y = marginTop + fm.getAscent() + textHeight * i; + + g.drawString(option, x, y); + } + } + + private void drawSelector(Graphics g) { + String option = this.options.get(selectorIndex); + int w = Global.screenWidth; + int h = Global.screenHeight; + FontMetrics fm = g.getFontMetrics(); + int textHeight = fm.getAscent() + fm.getDescent(); + int marginTop = (h - options.size() * textHeight) / 2; + + int x = (w - fm.stringWidth(option)) / 2 - 30; + int y = marginTop + fm.getAscent() + textHeight * selectorIndex; + + g.drawString(">", x, y); + } + + @Override + public void update() { + // No need to update anything in this screen + } +} diff --git a/src/uet/oop/bomberman/utils/EGameControl.java b/src/uet/oop/bomberman/utils/EGameControl.java index 9400a1d..4d1e3f8 100644 --- a/src/uet/oop/bomberman/utils/EGameControl.java +++ b/src/uet/oop/bomberman/utils/EGameControl.java @@ -8,6 +8,5 @@ public enum EGameControl { RIGHT, ENTER, SPACE, - RESTART, - BACK + X, } diff --git a/src/uet/oop/bomberman/utils/EScreenName.java b/src/uet/oop/bomberman/utils/EScreenName.java index 515a6e8..93d27af 100644 --- a/src/uet/oop/bomberman/utils/EScreenName.java +++ b/src/uet/oop/bomberman/utils/EScreenName.java @@ -3,4 +3,5 @@ public enum EScreenName { SELECT_LEVEL_SCREEN, GAME_PLAY_SCREEN, + END_GAME_SCREEN, } From 1eecfdddf0cf3e99f0048e99e663b41dfbd7e9db Mon Sep 17 00:00:00 2001 From: 21522098_HuyHoang <21522098@gm.uit.edu.vn> Date: Sun, 19 May 2024 18:17:24 +0700 Subject: [PATCH 28/66] . --- src/uet/oop/bomberman/Game.java | 2 +- src/uet/oop/bomberman/screen/SelectLevelScreen.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index ab50be3..eac0821 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -108,7 +108,7 @@ private void renderScreen(Graphics g) { private void initScreen() { Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; this.selectLevelScreen = new SelectLevelScreen(_input); - this.selectOption = new SelectOption(_input1, this); + this.selectOption = new SelectOption(_input, this); } private void update() { diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index 4b14b14..d8fd07a 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -59,7 +59,6 @@ public void drawScreen(Graphics g) { drawOptions(g); drawSelector(g); } - private void drawTitle(Graphics g) { String title = "SELECT LEVEL"; Font font = new Font("Arial", Font.BOLD, 20 * Game.SCALE); From 0320c2d117a6fb0f7743a8741cb29f34710722c2 Mon Sep 17 00:00:00 2001 From: Hang Le Thi Bich <21522041@gm.uit.edu.vn> Date: Sun, 19 May 2024 20:09:42 +0700 Subject: [PATCH 29/66] update selected level --- src/uet/oop/bomberman/Board.java | 3 ++- src/uet/oop/bomberman/Game.java | 2 +- src/uet/oop/bomberman/screen/SelectLevelScreen.java | 7 ++++++- src/uet/oop/bomberman/utils/Global.java | 3 +++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 5e09cfd..7e133cd 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -16,6 +16,7 @@ import uet.oop.bomberman.input.Keyboard; import uet.oop.bomberman.level.FileLevelLoader; import uet.oop.bomberman.level.LevelLoader; +import uet.oop.bomberman.utils.Global; import java.awt.*; import java.util.ArrayList; @@ -55,7 +56,7 @@ public Board(Game game, Keyboard input, Screen screen) { _input = input; _screen = screen; - loadLevel(1); // start in level 1 + loadLevel(Global.gameLevel); // start in level 1 } private void snapCameraToPlayer() { diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 15c16a3..4cefe1b 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -93,7 +93,7 @@ private void renderScreen(Graphics g) { private void initScreen() { Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; - this.selectLevelScreen = new SelectLevelScreen(_input); + this.selectLevelScreen = new SelectLevelScreen(_input, _board); } private void update() { diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index 33fb2a1..8813815 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -1,5 +1,6 @@ package uet.oop.bomberman.screen; +import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; import uet.oop.bomberman.gui.GameScreen; import uet.oop.bomberman.input.Keyboard; @@ -16,9 +17,11 @@ public class SelectLevelScreen extends GameScreen { ArrayList levels = new ArrayList(); int selectorIndex = 0; private Keyboard _input; + private Board _board; - public SelectLevelScreen(Keyboard input) { + public SelectLevelScreen(Keyboard input, Board board) { _input = input; + _board = board; levels.add(EGameLevel.EASY.getStringLevel()); levels.add(EGameLevel.MEDIUM.getStringLevel()); @@ -36,6 +39,8 @@ public void onKeyPressed(EGameControl gameControl) { break; case ENTER: Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; + Global.gameLevel = selectorIndex + 1; + _board.loadLevel(Global.gameLevel); break; } diff --git a/src/uet/oop/bomberman/utils/Global.java b/src/uet/oop/bomberman/utils/Global.java index 623e0a6..9c3329c 100644 --- a/src/uet/oop/bomberman/utils/Global.java +++ b/src/uet/oop/bomberman/utils/Global.java @@ -5,4 +5,7 @@ public class Global { public static int screenHeight; public static EScreenName currentScreen; + + // GAME PLAY + public static int gameLevel = 1; } From 35a14321c246596a180ae3c45b91cd66273c1058 Mon Sep 17 00:00:00 2001 From: Hang Le Thi Bich <21522041@gm.uit.edu.vn> Date: Mon, 20 May 2024 01:14:07 +0700 Subject: [PATCH 30/66] select game mode screen --- src/uet/oop/bomberman/Game.java | 30 +++-- src/uet/oop/bomberman/gui/GameScreen.java | 1 + .../screen/SelectGameModeScreen.java | 124 ++++++++++++++++++ .../bomberman/screen/SelectLevelScreen.java | 19 ++- src/uet/oop/bomberman/utils/EGameMode.java | 16 +++ src/uet/oop/bomberman/utils/EScreenName.java | 1 + src/uet/oop/bomberman/utils/Global.java | 4 +- 7 files changed, 181 insertions(+), 14 deletions(-) create mode 100644 src/uet/oop/bomberman/screen/SelectGameModeScreen.java create mode 100644 src/uet/oop/bomberman/utils/EGameMode.java diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 4cefe1b..3d050c0 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -4,6 +4,7 @@ import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.gui.Frame; import uet.oop.bomberman.input.Keyboard; +import uet.oop.bomberman.screen.SelectGameModeScreen; import uet.oop.bomberman.screen.SelectLevelScreen; import uet.oop.bomberman.utils.EScreenName; import uet.oop.bomberman.utils.Global; @@ -56,6 +57,7 @@ public class Game extends Canvas { // game screens private SelectLevelScreen selectLevelScreen; + private SelectGameModeScreen selectGameModeScreen; public Game(Frame frame) { _frame = frame; @@ -91,26 +93,30 @@ private void renderScreen(Graphics g) { } private void initScreen() { - Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; + Global.currentScreen = EScreenName.SELECT_GAME_MODE; - this.selectLevelScreen = new SelectLevelScreen(_input, _board); + this.selectGameModeScreen = new SelectGameModeScreen(); + this.selectLevelScreen = new SelectLevelScreen(_board); } private void update() { _input.update(); switch (Global.currentScreen) { case GAME_PLAY_SCREEN: - _board.update(); - if (_input.pause) { // Kiểm tra nếu phím "p" được nhấn - _board.setShow(3); // Hiển thị màn hình tạm dừng - _paused = true; // Đặt trạng thái game là tạm dừng - return; - } + _board.update(); + if (_input.pause) { // Kiểm tra nếu phím "p" được nhấn + _board.setShow(3); // Hiển thị màn hình tạm dừng + _paused = true; // Đặt trạng thái game là tạm dừng + return; + } break; case SELECT_LEVEL_SCREEN: // TODO: call select level screen update selectLevelScreen.update(); break; + case SELECT_GAME_MODE: + selectGameModeScreen.update(); + break; } } @@ -155,8 +161,16 @@ private void showScreen() { break; case SELECT_LEVEL_SCREEN: // TODO: render select level screen + if (Global.currentScreen != Global.previousScreen) { + selectLevelScreen.setInput(_input); + } selectLevelScreen.drawScreen(g); break; + case SELECT_GAME_MODE: + if (Global.currentScreen != Global.previousScreen) { + selectGameModeScreen.setInput(_input); + } + selectGameModeScreen.drawScreen(g); } g.dispose(); diff --git a/src/uet/oop/bomberman/gui/GameScreen.java b/src/uet/oop/bomberman/gui/GameScreen.java index 93a79c1..a473496 100644 --- a/src/uet/oop/bomberman/gui/GameScreen.java +++ b/src/uet/oop/bomberman/gui/GameScreen.java @@ -5,4 +5,5 @@ public abstract class GameScreen { public abstract void drawScreen(Graphics g); public abstract void update(); + public abstract void onDestroy(); } diff --git a/src/uet/oop/bomberman/screen/SelectGameModeScreen.java b/src/uet/oop/bomberman/screen/SelectGameModeScreen.java new file mode 100644 index 0000000..fce9572 --- /dev/null +++ b/src/uet/oop/bomberman/screen/SelectGameModeScreen.java @@ -0,0 +1,124 @@ +package uet.oop.bomberman.screen; + +import uet.oop.bomberman.Game; +import uet.oop.bomberman.gui.GameScreen; +import uet.oop.bomberman.input.Keyboard; +import uet.oop.bomberman.utils.*; + +import java.awt.*; +import java.util.ArrayList; +import java.util.Optional; + +public class SelectGameModeScreen extends GameScreen { + ArrayList gameModes = new ArrayList(); + int selectorIndex = 0; + private Optional _input; + + public SelectGameModeScreen() { + gameModes.add(EGameMode.ONE_PLAYER.getStringLevel()); + gameModes.add(EGameMode.TWO_PLAYER.getStringLevel()); + } + + public void setInput(Keyboard input) { + _input = Optional.ofNullable(input); + + _input.get().keyboardInputCallback = Optional.of(new Keyboard.KeyboardInputCallback() { + @Override + public void onKeyPressed(EGameControl gameControl) { + switch (gameControl) { + case UP: + selectorIndex--; + break; + case DOWN: + selectorIndex++; + break; + case ENTER: + Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; + if (selectorIndex == 1) { + Global.gameMode = EGameMode.TWO_PLAYER; + } else { + Global.gameMode = EGameMode.ONE_PLAYER; + } + break; + } + + if (selectorIndex < 0) { + selectorIndex = gameModes.size() - 1; + } else if (selectorIndex > gameModes.size() - 1) { + selectorIndex = 0; + } + } + }); + } + + @Override + public void drawScreen(Graphics g) { + // set background + g.setColor(Color.black); + g.fillRect(0, 0, Global.screenWidth, Global.screenHeight); + + drawTitle(g); + drawOptions(g); + drawSelector(g); + } + + private void drawTitle(Graphics g) { + String title = "SELECT GAME MODE"; + Font font = new Font("Arial", Font.BOLD, 20 * Game.SCALE); + g.setFont(font); + g.setColor(Color.white); + + FontMetrics fm = g.getFontMetrics(); + int x = (Global.screenWidth - fm.stringWidth(title)) / 2; + int marginTop = 20; + int y = marginTop + fm.getAscent(); + + g.drawString(title, x, y); + } + + private void drawOptions(Graphics g) { + Font font = new Font("Arial", Font.PLAIN, 10 * Game.SCALE); + g.setFont(font); + g.setColor(Color.white); + + int w = Global.screenWidth; + int h = Global.screenHeight; + FontMetrics fm = g.getFontMetrics(); + int textHeight = fm.getAscent() + fm.getDescent(); + int boxHeight = textHeight * this.gameModes.size(); + int marginTop = (h - boxHeight) / 2; + + for (int i=0; i < this.gameModes.size(); i++) { + String level = this.gameModes.get(i); + int x = (w - fm.stringWidth(level)) / 2; + int y = marginTop + fm.getAscent() + textHeight*i; + + g.drawString(level, x, y); + } + } + + private void drawSelector(Graphics g) { + String level = this.gameModes.get(selectorIndex); + int w = Global.screenWidth; + int h = Global.screenHeight; + FontMetrics fm = g.getFontMetrics(); + int textHeight = fm.getAscent() + fm.getDescent(); + int boxHeight = textHeight * this.gameModes.size(); + int marginTop = (h - boxHeight) / 2; + + int x = (w - fm.stringWidth(level)) / 2 - 30; + int y = marginTop + fm.getAscent() + textHeight*selectorIndex; + + g.drawString(">", x, y); + } + + @Override + public void update() { + + } + + @Override + public void onDestroy() { + this._input = null; + } +} diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index 8813815..716c860 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -10,24 +10,27 @@ import uet.oop.bomberman.utils.Global; import java.awt.*; -import java.awt.event.KeyEvent; import java.util.ArrayList; +import java.util.Optional; public class SelectLevelScreen extends GameScreen { ArrayList levels = new ArrayList(); int selectorIndex = 0; - private Keyboard _input; + private Optional _input; private Board _board; - public SelectLevelScreen(Keyboard input, Board board) { - _input = input; + public SelectLevelScreen(Board board) { _board = board; levels.add(EGameLevel.EASY.getStringLevel()); levels.add(EGameLevel.MEDIUM.getStringLevel()); levels.add(EGameLevel.HARD.getStringLevel()); + } + + public void setInput(Keyboard input) { + _input = Optional.ofNullable(input); - _input.keyboardInputCallback = java.util.Optional.of(new Keyboard.KeyboardInputCallback() { + _input.get().keyboardInputCallback = java.util.Optional.of(new Keyboard.KeyboardInputCallback() { @Override public void onKeyPressed(EGameControl gameControl) { switch (gameControl) { @@ -41,6 +44,7 @@ public void onKeyPressed(EGameControl gameControl) { Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; Global.gameLevel = selectorIndex + 1; _board.loadLevel(Global.gameLevel); + onDestroy(); break; } @@ -116,4 +120,9 @@ private void drawSelector(Graphics g) { @Override public void update() {} + + @Override + public void onDestroy() { + this._input = null; + } } diff --git a/src/uet/oop/bomberman/utils/EGameMode.java b/src/uet/oop/bomberman/utils/EGameMode.java new file mode 100644 index 0000000..9efd976 --- /dev/null +++ b/src/uet/oop/bomberman/utils/EGameMode.java @@ -0,0 +1,16 @@ +package uet.oop.bomberman.utils; + +public enum EGameMode { + ONE_PLAYER("1 Player"), + TWO_PLAYER("2 Players"); + + private final String mode; + + EGameMode(String level) { + this.mode = level; + } + + public String getStringLevel() { + return this.mode; + } +} diff --git a/src/uet/oop/bomberman/utils/EScreenName.java b/src/uet/oop/bomberman/utils/EScreenName.java index 515a6e8..be8c6be 100644 --- a/src/uet/oop/bomberman/utils/EScreenName.java +++ b/src/uet/oop/bomberman/utils/EScreenName.java @@ -1,6 +1,7 @@ package uet.oop.bomberman.utils; public enum EScreenName { + SELECT_GAME_MODE, SELECT_LEVEL_SCREEN, GAME_PLAY_SCREEN, } diff --git a/src/uet/oop/bomberman/utils/Global.java b/src/uet/oop/bomberman/utils/Global.java index 9c3329c..ff4616e 100644 --- a/src/uet/oop/bomberman/utils/Global.java +++ b/src/uet/oop/bomberman/utils/Global.java @@ -4,8 +4,10 @@ public class Global { public static int screenWidth; public static int screenHeight; - public static EScreenName currentScreen; + public static EScreenName currentScreen = EScreenName.SELECT_GAME_MODE; + public static EScreenName previousScreen = EScreenName.GAME_PLAY_SCREEN; // GAME PLAY public static int gameLevel = 1; + public static EGameMode gameMode; } From ef3a9884a382465105f66eee078712ffef3210be Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Mon, 20 May 2024 15:59:23 +0000 Subject: [PATCH 31/66] refactor collision logic: split into collide and canBePassedThroughBy --- res/levels/Level3.txt | 2 +- src/uet/oop/bomberman/Board.java | 18 ++++ .../oop/bomberman/base/IEntityManager.java | 1 + src/uet/oop/bomberman/entities/Entity.java | 16 +++- .../oop/bomberman/entities/LayeredEntity.java | 23 +++-- src/uet/oop/bomberman/entities/Message.java | 5 ++ src/uet/oop/bomberman/entities/bomb/Bomb.java | 34 ++++---- .../oop/bomberman/entities/bomb/Flame.java | 33 ++++++-- .../bomberman/entities/bomb/FlameSegment.java | 8 +- .../bomberman/entities/character/Bomber.java | 64 +++----------- .../entities/character/Character.java | 83 +++++++++++++++++-- .../entities/character/enemy/Enemy.java | 73 ++++------------ .../oop/bomberman/entities/tile/Grass.java | 7 +- .../entities/tile/NonDestroyableTile.java | 16 ++++ .../oop/bomberman/entities/tile/Portal.java | 24 ++++-- src/uet/oop/bomberman/entities/tile/Tile.java | 8 ++ src/uet/oop/bomberman/entities/tile/Wall.java | 2 +- .../tile/destroyable/DestroyableTile.java | 10 +++ .../bomberman/entities/tile/item/Item.java | 10 ++- src/uet/oop/bomberman/sound/Sound.java | 4 +- 20 files changed, 282 insertions(+), 159 deletions(-) create mode 100644 src/uet/oop/bomberman/entities/tile/NonDestroyableTile.java diff --git a/res/levels/Level3.txt b/res/levels/Level3.txt index 40a9bf4..5a6ca2f 100644 --- a/res/levels/Level3.txt +++ b/res/levels/Level3.txt @@ -11,4 +11,4 @@ # **** *2 # # # # # # # # # # #*# # # # #*# # ** ** * 5 # -############################### \ No newline at end of file +############################### diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 5e09cfd..71415c4 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -16,6 +16,7 @@ import uet.oop.bomberman.input.Keyboard; import uet.oop.bomberman.level.FileLevelLoader; import uet.oop.bomberman.level.LevelLoader; +import uet.oop.bomberman.sound.Sound; import java.awt.*; import java.util.ArrayList; @@ -431,4 +432,21 @@ public void setPlayer(Character character) { this.player = character; } + @Override + public void handleOnDeath(Character character, Character killer) { + if (character.isPlayer()) { + // TODO: handle player death + Sound.play("endgame3"); + } else { + // TODO: document how to calculate message coord + double messageX = (character.getX() * Game.SCALE) + (character.getSprite().SIZE / 2 * Game.SCALE); + double messageY = (character.getY() * Game.SCALE) - (character.getSprite().SIZE / 2 * Game.SCALE); + int points = character.getPoints(); + addPoints(points); + Message msg = new Message("+" + points, messageX, messageY, 2, Color.white, 14); + addMessage(msg); + Sound.play("AA126_11"); + } + } + } diff --git a/src/uet/oop/bomberman/base/IEntityManager.java b/src/uet/oop/bomberman/base/IEntityManager.java index 46f23ce..de47e76 100644 --- a/src/uet/oop/bomberman/base/IEntityManager.java +++ b/src/uet/oop/bomberman/base/IEntityManager.java @@ -25,5 +25,6 @@ public interface IEntityManager extends IActiveItemManager { public Character getPlayer(); public boolean isEnemyCleared(); + public void handleOnDeath(Character character, Character killer); } \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/Entity.java b/src/uet/oop/bomberman/entities/Entity.java index c1021cb..6e9317a 100644 --- a/src/uet/oop/bomberman/entities/Entity.java +++ b/src/uet/oop/bomberman/entities/Entity.java @@ -40,13 +40,27 @@ public Sprite getSprite() { return _sprite; } + public double getCenterX() { + return _x + _sprite.SIZE / 2; + } + + public double getCenterY() { + return _y - _sprite.SIZE / 2; + } + /** * Phương thức này được gọi để xử lý khi hai entity va chạm vào nhau * @param e * @return */ public abstract boolean collide(Entity e); - //xu li 2 entity va cham + + /** + * Check if other Entity can pass through this + * @param other + * @return + */ + public abstract boolean canBePassedThroughBy(Entity other); public double getX() { return _x; diff --git a/src/uet/oop/bomberman/entities/LayeredEntity.java b/src/uet/oop/bomberman/entities/LayeredEntity.java index e183f24..7d824a3 100644 --- a/src/uet/oop/bomberman/entities/LayeredEntity.java +++ b/src/uet/oop/bomberman/entities/LayeredEntity.java @@ -1,5 +1,6 @@ package uet.oop.bomberman.entities; +import uet.oop.bomberman.entities.tile.Tile; import uet.oop.bomberman.entities.tile.destroyable.DestroyableTile; import uet.oop.bomberman.graphics.Screen; @@ -9,11 +10,12 @@ * Chứa và quản lý nhiều Entity tại cùng một vị trí * Ví dụ: tại vị trí dấu Item, có 3 Entity [Grass, Item, Brick] */ -public class LayeredEntity extends Entity { +public class LayeredEntity extends Tile { - protected LinkedList _entities = new LinkedList<>(); + protected LinkedList _entities = new LinkedList<>(); - public LayeredEntity(int x, int y, Entity ... entities) { + public LayeredEntity(int x, int y, Tile ... entities) { + super(x, y, null); _x = x; _y = y; @@ -38,7 +40,7 @@ public void render(Screen screen) { getTopEntity().render(screen); } - public Entity getTopEntity() { + public Tile getTopEntity() { return _entities.getLast(); } @@ -51,15 +53,24 @@ private void clearRemoved() { } } - public void addBeforeTop(Entity e) { + public void addBeforeTop(Tile e) { _entities.add(_entities.size() - 1, e); } @Override public boolean collide(Entity e) { // TODO: lấy entity trên cùng ra để xử lý va chạm - return getTopEntity().collide(e); } + @Override + public boolean canBePassedThroughBy(Entity other) { + return getTopEntity().canBePassedThroughBy(other); + } + + @Override + public boolean isDestroyable() { + return getTopEntity().isDestroyable(); + } + } diff --git a/src/uet/oop/bomberman/entities/Message.java b/src/uet/oop/bomberman/entities/Message.java index 4bfab68..74cc779 100644 --- a/src/uet/oop/bomberman/entities/Message.java +++ b/src/uet/oop/bomberman/entities/Message.java @@ -65,6 +65,11 @@ public void render(Screen screen) { public boolean collide(Entity e) { return true; } + + @Override + public boolean canBePassedThroughBy(Entity other) { + return true; + } } diff --git a/src/uet/oop/bomberman/entities/bomb/Bomb.java b/src/uet/oop/bomberman/entities/bomb/Bomb.java index 69fe8f1..8863a87 100644 --- a/src/uet/oop/bomberman/entities/bomb/Bomb.java +++ b/src/uet/oop/bomberman/entities/bomb/Bomb.java @@ -83,9 +83,9 @@ protected void explode() {//nổ _allowedToPassThru = true; // TODO: xử lý khi Character đứng tại vị trí Bomb Character x = _board.getCharacterAtExcluding((int)_x, (int)_y, null); - if(x != null){ - x.kill(); - } + if(x != null){ + x.handleOnDeath(); + } // TODO: tạo các Flame _flames = new Flame[4]; for (int i = 0; i < _flames.length; i++) { @@ -93,7 +93,7 @@ protected void explode() {//nổ } Sound.play("BOM_11_M"); } - public void time_explode() { + public void handleChainExplode() { _timeToExplode = 0; } public FlameSegment flameAt(int x, int y) { @@ -110,11 +110,20 @@ public FlameSegment flameAt(int x, int y) { @Override public boolean collide(Entity e) { - // TODO: xử lý khi Bomber đi ra sau khi vừa đặt bom (_allowedToPassThru) - - if(e instanceof Bomber) { - double diffX = e.getX() - Coordinates.tileToPixel(getX()); - double diffY = e.getY() - Coordinates.tileToPixel(getY()); + // Xử lý va chạm với Flame của Bomb khác: chain explosion + if(e instanceof Flame) { + handleChainExplode(); + return true; + } + return false; + } + + @Override + public boolean canBePassedThroughBy(Entity other) { + // Xử lý khi Bomber đi ra sau khi vừa đặt bom (_allowedToPassThru) + if(other instanceof Bomber) { + double diffX = other.getX() - Coordinates.tileToPixel(getX()); + double diffY = other.getY() - Coordinates.tileToPixel(getY()); if(!(diffX >= -10 && diffX < 16 && diffY >= 1 && diffY <= 28)) { // differences to see if the player has moved out of the bomb, tested values _allowedToPassThru = false; @@ -122,11 +131,8 @@ public boolean collide(Entity e) { return _allowedToPassThru; } - // TODO: xử lý va chạm với Flame của Bomb khác - if(e instanceof Flame ) { - time_explode(); - return true; - } + return false; } + } diff --git a/src/uet/oop/bomberman/entities/bomb/Flame.java b/src/uet/oop/bomberman/entities/bomb/Flame.java index f009521..4e2ac84 100644 --- a/src/uet/oop/bomberman/entities/bomb/Flame.java +++ b/src/uet/oop/bomberman/entities/bomb/Flame.java @@ -3,11 +3,13 @@ import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.tile.Tile; +import uet.oop.bomberman.entities.tile.destroyable.DestroyableTile; import uet.oop.bomberman.graphics.Screen; public class Flame extends Entity { - protected IEntityManager _board; + protected IEntityManager entityManager; protected int _direction; private int _radius; protected int xOrigin, yOrigin; @@ -20,14 +22,14 @@ public class Flame extends Entity { * @param direction là hướng của Flame * @param radius độ dài cực đại của Flame */ - public Flame(int x, int y, int direction, int radius, IEntityManager board) { + public Flame(int x, int y, int direction, int radius, IEntityManager entityManager) { xOrigin = x; yOrigin = y; _x = x; _y = y; _direction = direction; _radius = radius; - _board = board; + this.entityManager = entityManager; createFlameSegments(); } @@ -59,6 +61,10 @@ private void createFlameSegments() { case 3: x--; break; } _flameSegments[i] = new FlameSegment(x, y, _direction, last); + Entity entity = entityManager.getEntity(x, y, null); + if (entity!=null) { + entity.collide(this); + } } } @@ -77,17 +83,26 @@ private int calculatePermitedDistance() { if(_direction == 2) y++; if(_direction == 3) x--; - Entity a = _board.getEntity(x, y, null); + Entity a = entityManager.getEntity(x, y, null); if(a instanceof Bomb) ++radius; //explosion has to be below the bom - if(a.collide(this) == false) //cannot pass thru + if(!canSpawnFlameOn(a)) break; ++radius; } return radius; } + + private boolean canSpawnFlameOn(Entity entity) { + if (entity.canBePassedThroughBy(this)) return true; + if (entity instanceof Tile) { + Tile tile = (Tile) entity; + if (tile.isDestroyable()) return true; + } + return false; + } public FlameSegment flameSegmentAt(int x, int y) { for (int i = 0; i < _flameSegments.length; i++) { @@ -110,8 +125,14 @@ public void render(Screen screen) { @Override public boolean collide(Entity e) { if (e instanceof Character) { - ((Character)e).kill(); + ((Character)e).handleOnDeath(); } return true; } + + @Override + public boolean canBePassedThroughBy(Entity other) { + return true; + } + } diff --git a/src/uet/oop/bomberman/entities/bomb/FlameSegment.java b/src/uet/oop/bomberman/entities/bomb/FlameSegment.java index 4adf084..cbbb2a5 100644 --- a/src/uet/oop/bomberman/entities/bomb/FlameSegment.java +++ b/src/uet/oop/bomberman/entities/bomb/FlameSegment.java @@ -68,9 +68,13 @@ public void update() {} @Override public boolean collide(Entity e) { - if (e instanceof Character) ((Character)e).kill(); + if (e instanceof Character) ((Character)e).handleOnDeath(); + return true; + } + + @Override + public boolean canBePassedThroughBy(Entity other) { return true; } - } \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index 2d6bd58..af2572a 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -29,7 +29,6 @@ public class Bomber extends Character { protected int bombCooldown = 0; private final int baseBombRadius; - private int bombRadius; public int getBombCooldown() { return bombCooldown; @@ -47,16 +46,10 @@ public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRad } @Override - public void update() { - clearBombs(); - if (!_alive) { - afterKill(); - return; - } - + public void handleUpdate() { + clearExpiredBombs(); if (bombCooldown < -7500) bombCooldown = 0; else bombCooldown--; - animate(); } @@ -108,7 +101,7 @@ public void placeBomb(int x, int y) { Sound.play("BOM_SET"); } - private void clearBombs() { + private void clearExpiredBombs() { Iterator bs = _bombs.iterator(); Bomb b; @@ -122,18 +115,8 @@ private void clearBombs() { } @Override - public void kill() { - if (!_alive) return; - _alive = false; - Sound.play("endgame3"); - } - - @Override - protected void afterKill() { - if (_timeAfter > 0) --_timeAfter; - else { - _board.endGame(); - } + protected void handleAfterDeath() { + _board.endGame(); } @Override @@ -149,7 +132,7 @@ public boolean canMove(double x, double y) { Entity a = entityManager.getEntity(xt, yt, this); - if(!a.collide(this)) + if(!a.canBePassedThroughBy(this)) return false; } @@ -157,37 +140,9 @@ public boolean canMove(double x, double y) { //return false; } - @Override - public void move(double xa, double ya) { - // TODO: sử dụng canMove() để kiểm tra xem có thể di chuyển tới điểm đã tính toán hay không và thực hiện thay đổi tọa độ _x, _y - // TODO: nhớ cập nhật giá trị _direction sau khi di chuyển - if(xa > 0) _direction = 1; - if(xa < 0) _direction = 3; - if(ya > 0) _direction = 2; - if(ya < 0) _direction = 0; - - if(canMove(0, ya)) { //separate the moves for the player can slide when is colliding - _y += ya; - } - - if(canMove(xa, 0)) { - _x += xa; - } - } - @Override public boolean collide(Entity e) { - // TODO: xử lý va chạm với Flame - // TODO: xử lý va chạm với Enemy - if(e instanceof Flame){ - this.kill(); - return false; - } - if(e instanceof Enemy){ - this.kill(); - return true; - } - if( e instanceof LayeredEntity) return(e.collide(this)); + if (!super.collide(e)) return false; return true; } @@ -226,4 +181,9 @@ private void chooseSprite() { break; } } + + @Override + public int getPoints() { + return 0; + } } diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 75191db..a630f79 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -7,20 +7,24 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.AnimatedEntitiy; +import uet.oop.bomberman.entities.Entity; +import uet.oop.bomberman.entities.LayeredEntity; +import uet.oop.bomberman.entities.bomb.Flame; import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.entities.tile.item.SpeedItem; import uet.oop.bomberman.graphics.Screen; +import uet.oop.bomberman.level.Coordinates; /** * Bao gồm Bomber và Enemy */ public abstract class Character extends AnimatedEntitiy { - protected IEntityManager entityManager; + protected final IEntityManager entityManager; protected int _direction = -1; protected boolean _alive = true; protected boolean _moving = false; - public int _timeAfter = 40; + protected int timerDeathAnimation = 40; private final double baseSpeed; @@ -34,7 +38,19 @@ public Character(int x, int y, double baseSpeed, IEntityManager entityManager) { } @Override - public abstract void update(); + public final void update() { + if (!_alive) { + if (timerDeathAnimation > 0) { + timerDeathAnimation -= 1; + } else { + handleAfterDeath(); + } + return; + } + handleUpdate(); + }; + + protected abstract void handleUpdate(); @Override public abstract void render(Screen screen); @@ -44,17 +60,44 @@ public Character(int x, int y, double baseSpeed, IEntityManager entityManager) { */ protected abstract void calculateMove(); - public abstract void move(double xa, double ya); + /** Check if can be moved with vector (xa, ya). + * @param xa + * @param ya + */ + public void move(double xa, double ya) { + if(xa > 0) _direction = 1; + if(xa < 0) _direction = 3; + if(ya > 0) _direction = 2; + if(ya < 0) _direction = 0; + + if(canMove(0, ya)) _y += ya; + if(canMove(xa, 0)) _x += xa; + + Entity collidingEntity = entityManager.getEntity( + Coordinates.pixelToTile(getCenterX()), + Coordinates.pixelToTile(getCenterY()), + this + ); + if (collidingEntity != null) { + this.collide(collidingEntity); + collidingEntity.collide(this); + } + } /** * Được gọi khi đối tượng bị tiêu diệt */ - public abstract void kill(); + public final void handleOnDeath() { + if(!_alive) return; + _alive = false; + // TODO: determine killer + entityManager.handleOnDeath(this, null); + } /** * Xử lý hiệu ứng bị tiêu diệt */ - protected abstract void afterKill(); + protected abstract void handleAfterDeath(); /** * Kiểm tra xem đối tượng có di chuyển tới vị trí đã tính toán hay không @@ -104,4 +147,32 @@ public double getSpeed() { return speedMultiplier * this.baseSpeed; } + public abstract int getPoints(); + + @Override + public boolean collide(Entity e) { + if(e instanceof Flame){ + this.handleOnDeath(); + return false; + } + if (e instanceof Character) { + Character other = (Character) e; + if (this.isPlayer() && !other.isPlayer()) { + this.handleOnDeath(); + return false; + } + if (other.isPlayer() && !this.isPlayer()) { + other.handleOnDeath(); + return false; + } + } + if( e instanceof LayeredEntity) return(e.collide(this)); + return true; + } + + @Override + public boolean canBePassedThroughBy(Entity other) { + return true; + } + } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java index 56e05a1..adb5562 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java @@ -1,19 +1,14 @@ package uet.oop.bomberman.entities.character.enemy; -import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; -import uet.oop.bomberman.entities.Message; -import uet.oop.bomberman.entities.bomb.Flame; import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.character.enemy.ai.AI; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.graphics.Sprite; import uet.oop.bomberman.level.Coordinates; -import java.awt.*; -import uet.oop.bomberman.sound.Sound; - public abstract class Enemy extends Character { protected int _points; @@ -28,13 +23,9 @@ public abstract class Enemy extends Character { protected int _finalAnimation = 30; protected Sprite _deadSprite; - private Board _board; - - public Enemy(int x, int y, Board board, Sprite dead, double speed, int points) { - super(x, y, speed, board); + public Enemy(int x, int y, IEntityManager entityManager, Sprite dead, double speed, int points) { + super(x, y, speed, entityManager); - this._board = board; - _points = points; _speed = speed; @@ -42,21 +33,14 @@ public Enemy(int x, int y, Board board, Sprite dead, double speed, int points) { rest = (MAX_STEPS - (int) MAX_STEPS) / MAX_STEPS; _steps = MAX_STEPS; - _timeAfter = 20; + timerDeathAnimation = 20; _deadSprite = dead; } @Override - public void update() { + public void handleUpdate() { animate(); - - if(!_alive) { - afterKill(); - return; - } - - if(_alive) - calculateMove(); + calculateMove(); } @Override @@ -65,7 +49,7 @@ public void render(Screen screen) { if(_alive) chooseSprite(); else { - if(_timeAfter > 0) { + if(timerDeathAnimation > 0) { _sprite = _deadSprite; _animate = 0; } else { @@ -104,13 +88,6 @@ public void calculateMove() { } } - @Override - public void move(double xa, double ya) { - if(!_alive) return; - _y += ya; - _x += xa; - } - @Override public boolean canMove(double x, double y) { double xr = _x, yr = _y - 16; //subtract y to get more accurate results @@ -127,44 +104,24 @@ public boolean canMove(double x, double y) { Entity a = entityManager.getEntity(xx, yy, this); //entity of the position we want to go - return a.collide(this); + return a.canBePassedThroughBy(this); } @Override public boolean collide(Entity e) { - if(e instanceof Flame){ - this.kill(); - return false; - } - if(e instanceof Character && ((Character)e).isPlayer()){ - ((Character) e).kill(); - return false; - } + if (!super.collide(e)) return false; return true; } @Override - public void kill() { - if(!_alive) return; - _alive = false; - - _board.addPoints(_points); - - Message msg = new Message("+" + _points, getXMessage(), getYMessage(), 2, Color.white, 14); - _board.addMessage(msg); - Sound.play("AA126_11"); + protected void handleAfterDeath() { + remove(); } - + protected abstract void chooseSprite(); + @Override - protected void afterKill() { - if(_timeAfter > 0) --_timeAfter; - else { - if(_finalAnimation > 0) --_finalAnimation; - else - remove(); - } + public int getPoints() { + return _points; } - - protected abstract void chooseSprite(); } diff --git a/src/uet/oop/bomberman/entities/tile/Grass.java b/src/uet/oop/bomberman/entities/tile/Grass.java index 6046143..acd57c0 100644 --- a/src/uet/oop/bomberman/entities/tile/Grass.java +++ b/src/uet/oop/bomberman/entities/tile/Grass.java @@ -4,7 +4,7 @@ import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.graphics.Sprite; -public class Grass extends Tile { +public class Grass extends NonDestroyableTile { public Grass(int x, int y, Sprite sprite) { super(x, y, sprite); @@ -19,4 +19,9 @@ public Grass(int x, int y, Sprite sprite) { public boolean collide(Entity e) { return true; } + + @Override + public boolean canBePassedThroughBy(Entity other) { + return true; + } } diff --git a/src/uet/oop/bomberman/entities/tile/NonDestroyableTile.java b/src/uet/oop/bomberman/entities/tile/NonDestroyableTile.java new file mode 100644 index 0000000..53b7101 --- /dev/null +++ b/src/uet/oop/bomberman/entities/tile/NonDestroyableTile.java @@ -0,0 +1,16 @@ +package uet.oop.bomberman.entities.tile; + +import uet.oop.bomberman.graphics.Sprite; + +public abstract class NonDestroyableTile extends Tile { + + public NonDestroyableTile(int x, int y, Sprite sprite) { + super(x, y, sprite); + } + + @Override + public boolean isDestroyable() { + return false; + } + +} diff --git a/src/uet/oop/bomberman/entities/tile/Portal.java b/src/uet/oop/bomberman/entities/tile/Portal.java index 0b42570..6a5d13e 100644 --- a/src/uet/oop/bomberman/entities/tile/Portal.java +++ b/src/uet/oop/bomberman/entities/tile/Portal.java @@ -6,7 +6,7 @@ import uet.oop.bomberman.graphics.Sprite; import uet.oop.bomberman.sound.Sound; -public class Portal extends Tile { +public class Portal extends NonDestroyableTile { protected Board _board; public Portal(int x, int y, Board board, Sprite sprite) { @@ -21,18 +21,28 @@ public boolean collide(Entity e) {// xu li khi 2 entity va cham // TODO: xử lý khi Bomber đi vào if (e instanceof Character && ((Character)e).isPlayer()) { + if (canBePassedThroughBy(e)) { + _board.nextLevel(); + Sound.play("CRYST_UP"); + } + + } + + return true; + } + + @Override + public boolean canBePassedThroughBy(Entity other) { + if (other instanceof Character && ((Character)other).isPlayer()) { + if (!_board.isEnemyCleared()) return false; - if (e.getXTile() == getX() && e.getYTile() == getY()) { - if (_board.isEnemyCleared()) { - _board.nextLevel(); - Sound.play("CRYST_UP"); - } + if (other.getXTile() == getX() && other.getYTile() == getY()) { + return true; } } - return true; } diff --git a/src/uet/oop/bomberman/entities/tile/Tile.java b/src/uet/oop/bomberman/entities/tile/Tile.java index 33f9272..f2036c9 100644 --- a/src/uet/oop/bomberman/entities/tile/Tile.java +++ b/src/uet/oop/bomberman/entities/tile/Tile.java @@ -26,6 +26,12 @@ public boolean collide(Entity e) { return false;//khong cho di qua } + + @Override + public boolean canBePassedThroughBy(Entity other) { + return false; + } + @Override public void render(Screen screen) { screen.renderEntity( Coordinates.tileToPixel(_x), Coordinates.tileToPixel(_y), this); @@ -33,4 +39,6 @@ public void render(Screen screen) { @Override public void update() {} + + public abstract boolean isDestroyable(); } diff --git a/src/uet/oop/bomberman/entities/tile/Wall.java b/src/uet/oop/bomberman/entities/tile/Wall.java index 3af3dad..4404dc1 100644 --- a/src/uet/oop/bomberman/entities/tile/Wall.java +++ b/src/uet/oop/bomberman/entities/tile/Wall.java @@ -3,7 +3,7 @@ import uet.oop.bomberman.graphics.Sprite; -public class Wall extends Tile { +public class Wall extends NonDestroyableTile { public Wall(int x, int y, Sprite sprite) { super(x, y, sprite); diff --git a/src/uet/oop/bomberman/entities/tile/destroyable/DestroyableTile.java b/src/uet/oop/bomberman/entities/tile/destroyable/DestroyableTile.java index 5148855..6c2683f 100644 --- a/src/uet/oop/bomberman/entities/tile/destroyable/DestroyableTile.java +++ b/src/uet/oop/bomberman/entities/tile/destroyable/DestroyableTile.java @@ -42,6 +42,11 @@ public boolean collide(Entity e) { return false; } + @Override + public boolean canBePassedThroughBy(Entity other) { + return false; + } + public void addBelowSprite(Sprite sprite) { _belowSprite = sprite; } @@ -59,5 +64,10 @@ protected Sprite movingSprite(Sprite normal, Sprite x1, Sprite x2) { return x2; } + + @Override + public boolean isDestroyable() { + return true; + } } diff --git a/src/uet/oop/bomberman/entities/tile/item/Item.java b/src/uet/oop/bomberman/entities/tile/item/Item.java index 3f78feb..a028765 100644 --- a/src/uet/oop/bomberman/entities/tile/item/Item.java +++ b/src/uet/oop/bomberman/entities/tile/item/Item.java @@ -3,11 +3,11 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Character; -import uet.oop.bomberman.entities.tile.Tile; +import uet.oop.bomberman.entities.tile.NonDestroyableTile; import uet.oop.bomberman.graphics.Sprite; import uet.oop.bomberman.sound.Sound; -public abstract class Item extends Tile { +public abstract class Item extends NonDestroyableTile { protected int _duration = 30 * Game.TICKS_PER_SECOND; // 30s protected boolean _active = false; @@ -23,6 +23,7 @@ public Item(int x, int y, Sprite sprite) { @Override public boolean collide(Entity e) { + if (isRemoved()) return false; if (e instanceof Character && ((Character)e).isPlayer()) { Character player = (Character) e; Sound.play("Item"); @@ -34,6 +35,11 @@ public boolean collide(Entity e) { return false; } + @Override + public boolean canBePassedThroughBy(Entity e) { + return (e instanceof Character && ((Character)e).isPlayer()); + } + @Override public void update() { if (!_active) diff --git a/src/uet/oop/bomberman/sound/Sound.java b/src/uet/oop/bomberman/sound/Sound.java index efafdc1..1993f37 100644 --- a/src/uet/oop/bomberman/sound/Sound.java +++ b/src/uet/oop/bomberman/sound/Sound.java @@ -18,7 +18,7 @@ public void run() { clip.open(inputStream); clip.start(); } catch (Exception e) { - System.err.println(e.getMessage()); + System.err.println("Failed playing sound '" + sound + "': " + e.getMessage()); } } }).start(); @@ -34,7 +34,7 @@ public void run() { clip.open(inputStream); clip.stop(); } catch (Exception e) { - System.err.println(e.getMessage()); + System.err.println("Failed stopping sound '" + sound + "': " + e.getMessage()); } } }).start(); From cd226421f2177c0ddeb4f03a2216b7fb5ba768d4 Mon Sep 17 00:00:00 2001 From: 21522098_HuyHoang <21522098@gm.uit.edu.vn> Date: Tue, 21 May 2024 06:41:32 +0700 Subject: [PATCH 32/66] DeadScreen --- res/menu/icons8-menu-50.png | Bin 0 -> 138 bytes res/menu/icons8-restart-50.png | Bin 0 -> 870 bytes src/uet/oop/bomberman/Board.java | 2 +- src/uet/oop/bomberman/BombermanGame.java | 1 - src/uet/oop/bomberman/Game.java | 18 +-- src/uet/oop/bomberman/gui/InfoPanel.java | 2 +- src/uet/oop/bomberman/input/Keyboard.java | 2 +- .../{SelectOption.java => DeadScreen.java} | 107 +++++++++++++----- src/uet/oop/bomberman/utils/Global.java | 1 - 9 files changed, 89 insertions(+), 44 deletions(-) create mode 100644 res/menu/icons8-menu-50.png create mode 100644 res/menu/icons8-restart-50.png rename src/uet/oop/bomberman/screen/{SelectOption.java => DeadScreen.java} (51%) diff --git a/res/menu/icons8-menu-50.png b/res/menu/icons8-menu-50.png new file mode 100644 index 0000000000000000000000000000000000000000..5a897f72fbb530ca88681e6afd3bcacbf3cd9f6c GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-&H|6fVg?3oVGw3ym^DWNC}`v9 z;uumf=k2wPoD2p$%#LsOmoUAHX$@g3W|wlftIptH={?QVoq^#&=B}vJniLxbhW*Pv hM;~)P#_TYQJM+KRlQs73r-0@#c)I$ztaD0e0su}qCRP9d literal 0 HcmV?d00001 diff --git a/res/menu/icons8-restart-50.png b/res/menu/icons8-restart-50.png new file mode 100644 index 0000000000000000000000000000000000000000..a206a9ba3e1fe7b0aa8d19914d24797b76227f8b GIT binary patch literal 870 zcmV-s1DX7ZP)B5>zw_qeO>F@ z!VdmFJOx&PU%&@o9Jm8q0GdfyAVGm=9hd~J0*xd9d(`{KfL`Dx@EG{*1oaij0qJV@ z-o~dAI0#$=UOM0X1av1Y5Eos*Yv=o8l^Puv8DOT$ff#lJH-Nm_m;>4?_3RUn4F&Xk_p?wYyh z46UsZ>JW&b)tP3t0hEQaz+dh2of~Ym4kTPN;Ray4TS;he7WYtuy&i!W2AvsF(i9ug z3-5rGM}ee(H)`90+A@{+Cg<)VhvpONgKlwK-YPfiljB?b#4g~KI9@L1_)t!k|M-f2 zahxdRZ~*uNta)B1G^@Tbo=s5>mlWv~{$om9&qo<=%Q%exxFxP5QO0o@v-pp!xZaO4 zF3NZm|8ZPgEur0n?=rf1m9J{-HuYWXpQyRZHSB8dt=gk)T{_>;q=S zVKz>Qk=byqkg4&(_uRRTi+$nK;S8-!vs2V&O)RO+MO`*k1ntf=%S(HW(uLz9rQK=8 znNEi)-ALNm00Ifhv2S0U6Wgvb!gC^A*i|jNyPRPUq{a4cQ=M#4?i8jSfu>T~TWp-s z8FbQ_KpE+@1iq}QxK?QZ4f=gTMbWT)L!BT@I|k|{el$uIpHK-9l=-YFi|zACy=el@ wscL(mf1vrHUSHMk_bN|E keyboardInputCallback; diff --git a/src/uet/oop/bomberman/screen/SelectOption.java b/src/uet/oop/bomberman/screen/DeadScreen.java similarity index 51% rename from src/uet/oop/bomberman/screen/SelectOption.java rename to src/uet/oop/bomberman/screen/DeadScreen.java index bce7c24..98c5601 100644 --- a/src/uet/oop/bomberman/screen/SelectOption.java +++ b/src/uet/oop/bomberman/screen/DeadScreen.java @@ -8,17 +8,31 @@ import uet.oop.bomberman.utils.Global; import java.awt.*; import java.util.ArrayList; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.IOException; -public class SelectOption extends GameScreen { - ArrayList options = new ArrayList(); +public class DeadScreen extends GameScreen { + ArrayList options = new ArrayList<>(); int selectorIndex = 0; private Game game; private Keyboard _input; - public SelectOption(Keyboard input, Game game) { + private BufferedImage restartIcon; + private BufferedImage homeIcon; + + public DeadScreen(Keyboard input, Game game) { _input = input; this.game = game; options.add("Restart"); options.add("Back Home"); + try { + restartIcon = ImageIO.read(getClass().getResource("/menu/icons8-restart-50.png")); + homeIcon = ImageIO.read(getClass().getResource("/menu/icons8-menu-50.png")); + restartIcon = colorizeIcon(restartIcon, Color.YELLOW); + homeIcon = colorizeIcon(homeIcon, Color.YELLOW); + } catch (IOException e) { + e.printStackTrace(); + } _input.keyboardInputCallback = java.util.Optional.of(new Keyboard.KeyboardInputCallback() { @Override @@ -30,7 +44,7 @@ public void onKeyPressed(EGameControl gameControl) { case RIGHT: selectorIndex++; break; - case X: + case ENTER: if (selectorIndex == 0) { game.restartGame(); } else if (selectorIndex == 1) { @@ -47,6 +61,22 @@ public void onKeyPressed(EGameControl gameControl) { } }); } + + // Rest of the class remains unchanged + private BufferedImage colorizeIcon(BufferedImage icon, Color color) { + BufferedImage newIcon = new BufferedImage(icon.getWidth(), icon.getHeight(), BufferedImage.TYPE_INT_ARGB); + for (int x = 0; x < icon.getWidth(); x++) { + for (int y = 0; y < icon.getHeight(); y++) { + int argb = icon.getRGB(x, y); + if ((argb >> 24) != 0x00) { // Check if pixel is not transparent + newIcon.setRGB(x, y, color.getRGB()); + } else { + newIcon.setRGB(x, y, argb); + } + } + } + return newIcon; + } @Override public void drawScreen(Graphics g) { @@ -54,6 +84,7 @@ public void drawScreen(Graphics g) { g.fillRect(0, 0, Global.screenWidth, Global.screenHeight); drawTitle(g); drawPOINTS(g, game.getBoard().getPoints()); + drawTIMES(g, game.getBoard().getTime()); drawOptions(g); drawSelector(g); } @@ -66,7 +97,7 @@ private void drawTitle(Graphics g) { FontMetrics fm = g.getFontMetrics(); int x = (Global.screenWidth - fm.stringWidth(title)) / 2; - int marginTop = 20; + int marginTop = 100; int y = marginTop + fm.getAscent(); g.drawString(title, x, y); @@ -81,48 +112,64 @@ private void drawPOINTS(Graphics g,int points) FontMetrics fm = g.getFontMetrics(); int textWidth = fm.stringWidth(Point); int x = (Global.screenWidth - textWidth) / 2; // Vị trí x để chuỗi ở giữa màn hình - int marginTop = 100; + int marginTop = 190; int y = marginTop + fm.getAscent(); g.drawString(Point, x, y); } - private void drawOptions(Graphics g) { - Font font = new Font("Arial", Font.PLAIN, 10 * Game.SCALE); + private void drawTIMES(Graphics g,int times) + { + String Point = "TIME : " + times; + Font font = new Font("Arial", Font.BOLD, 10 * Game.SCALE); g.setFont(font); - g.setColor(Color.white); + g.setColor(Color.yellow); - int w = Global.screenWidth; - int h = Global.screenHeight; FontMetrics fm = g.getFontMetrics(); - int textHeight = fm.getAscent() + fm.getDescent(); - int marginTop = (h - options.size() * textHeight) / 2; + int textWidth = fm.stringWidth(Point); + int x = (Global.screenWidth - textWidth) / 2; // Vị trí x để chuỗi ở giữa màn hình + int marginTop = 230; + int y = marginTop + fm.getAscent(); - for (int i = 0; i < options.size(); i++) { - String option = options.get(i); - int x = (w - fm.stringWidth(option)) / 2; - int y = marginTop + fm.getAscent() + textHeight * i; + g.drawString(Point, x, y); - g.drawString(option, x, y); - } } - + private void drawOptions(Graphics g) { + int w = Global.screenWidth; + int h = Global.screenHeight; + int iconHeight = restartIcon.getHeight(); + int marginTop = (h - iconHeight) / 2; + + int spacing = 100; + int totalOptionsWidth = restartIcon.getWidth() + spacing + homeIcon.getWidth(); + + int startX = (w - totalOptionsWidth) / 2; + + g.drawImage(restartIcon, startX, marginTop, null); + + int homeIconX = startX + restartIcon.getWidth() + spacing; + g.drawImage(homeIcon, homeIconX, marginTop, null); + } + private void drawSelector(Graphics g) { - String option = this.options.get(selectorIndex); int w = Global.screenWidth; int h = Global.screenHeight; - FontMetrics fm = g.getFontMetrics(); - int textHeight = fm.getAscent() + fm.getDescent(); - int marginTop = (h - options.size() * textHeight) / 2; - - int x = (w - fm.stringWidth(option)) / 2 - 30; - int y = marginTop + fm.getAscent() + textHeight * selectorIndex; - - g.drawString(">", x, y); + int iconHeight = restartIcon.getHeight(); + int marginTop = (h - iconHeight) / 2; + + int spacing = 90; + int totalOptionsWidth = restartIcon.getWidth() + spacing + homeIcon.getWidth(); + + int startX = (w - totalOptionsWidth) / 2; + + int selectorX = selectorIndex == 0 ? startX - 40 : startX + restartIcon.getWidth() + spacing - 40; + int y = marginTop + (iconHeight / 2) + 10; + + g.drawString(">", selectorX, y); } + @Override public void update() { - // No need to update anything in this screen } } diff --git a/src/uet/oop/bomberman/utils/Global.java b/src/uet/oop/bomberman/utils/Global.java index 623e0a6..eab41c0 100644 --- a/src/uet/oop/bomberman/utils/Global.java +++ b/src/uet/oop/bomberman/utils/Global.java @@ -3,6 +3,5 @@ public class Global { public static int screenWidth; public static int screenHeight; - public static EScreenName currentScreen; } From f277c5e59c51deb5faf3ba1411d5676a85a5785f Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Tue, 21 May 2024 06:21:09 +0000 Subject: [PATCH 33/66] rename Board.getPlayerActiveItems() --- src/uet/oop/bomberman/Board.java | 2 +- src/uet/oop/bomberman/base/IActiveItemManager.java | 2 +- src/uet/oop/bomberman/gui/InfoPanel.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 08fcfd9..d5f4018 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -43,7 +43,7 @@ public class Board implements IRender, IEntityManager, IMessageManager, IGameInf private Character player; @Override - public List getActiveItems() { + public List getPlayerActiveItems() { return getPlayer().getActiveItems().collect(Collectors.toList()); } diff --git a/src/uet/oop/bomberman/base/IActiveItemManager.java b/src/uet/oop/bomberman/base/IActiveItemManager.java index dc86201..5d5a988 100644 --- a/src/uet/oop/bomberman/base/IActiveItemManager.java +++ b/src/uet/oop/bomberman/base/IActiveItemManager.java @@ -6,7 +6,7 @@ public interface IActiveItemManager { - public List getActiveItems(); + public List getPlayerActiveItems(); public void addActiveItem(Item item); } \ No newline at end of file diff --git a/src/uet/oop/bomberman/gui/InfoPanel.java b/src/uet/oop/bomberman/gui/InfoPanel.java index b6eb091..ad9e5b5 100644 --- a/src/uet/oop/bomberman/gui/InfoPanel.java +++ b/src/uet/oop/bomberman/gui/InfoPanel.java @@ -50,7 +50,7 @@ public void setPoints(int t) { public void renderItemTime() { String label = ""; - List items = gameInfoManager.getActiveItems(); + List items = gameInfoManager.getPlayerActiveItems(); for (int i = 0; i < items.size(); i++) { Item item = items.get(i); if ((item.getDuration()) == 0) { From d2d0208969e8e4c9ecb51e485f58faa4b3c9d4e3 Mon Sep 17 00:00:00 2001 From: Hang Le Thi Bich <21522041@gm.uit.edu.vn> Date: Wed, 22 May 2024 00:11:59 +0700 Subject: [PATCH 34/66] edit text --- src/uet/oop/bomberman/utils/EGameMode.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/uet/oop/bomberman/utils/EGameMode.java b/src/uet/oop/bomberman/utils/EGameMode.java index 9efd976..d45b474 100644 --- a/src/uet/oop/bomberman/utils/EGameMode.java +++ b/src/uet/oop/bomberman/utils/EGameMode.java @@ -2,7 +2,7 @@ public enum EGameMode { ONE_PLAYER("1 Player"), - TWO_PLAYER("2 Players"); + TWO_PLAYER("2 Player"); private final String mode; From cbddb1488f538326ddeccc826ee7c45bc302f651 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Tue, 21 May 2024 17:26:23 +0000 Subject: [PATCH 35/66] standardize character action --- src/uet/oop/bomberman/Board.java | 15 +++++-- .../bomberman/entities/character/Bomber.java | 31 +++++++++++-- .../entities/character/Character.java | 44 +++++++++++++++++- .../entities/character/action/Action.java | 4 ++ .../character/action/ActionConstants.java | 31 +++++++++++++ .../entities/character/action/ActionMove.java | 45 +++++++++++++++++++ .../character/action/ActionPlaceBomb.java | 21 +++++++++ .../exceptions/ActionOnCooldownException.java | 5 +++ .../exceptions/BombQuotaReachedException.java | 5 +++ .../CannotPerformActionException.java | 5 +++ .../exceptions/CharacterActionException.java | 5 +++ .../exceptions/InvalidActionException.java | 5 +++ src/uet/oop/bomberman/input/Keyboard.java | 2 +- 13 files changed, 210 insertions(+), 8 deletions(-) create mode 100644 src/uet/oop/bomberman/entities/character/action/Action.java create mode 100644 src/uet/oop/bomberman/entities/character/action/ActionConstants.java create mode 100644 src/uet/oop/bomberman/entities/character/action/ActionMove.java create mode 100644 src/uet/oop/bomberman/entities/character/action/ActionPlaceBomb.java create mode 100644 src/uet/oop/bomberman/entities/character/exceptions/ActionOnCooldownException.java create mode 100644 src/uet/oop/bomberman/entities/character/exceptions/BombQuotaReachedException.java create mode 100644 src/uet/oop/bomberman/entities/character/exceptions/CannotPerformActionException.java create mode 100644 src/uet/oop/bomberman/entities/character/exceptions/CharacterActionException.java create mode 100644 src/uet/oop/bomberman/entities/character/exceptions/InvalidActionException.java diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index d5f4018..081cc99 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -9,6 +9,9 @@ import uet.oop.bomberman.entities.bomb.FlameSegment; import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.character.action.ActionConstants; +import uet.oop.bomberman.entities.character.action.ActionMove; +import uet.oop.bomberman.entities.character.exceptions.CharacterActionException; import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.exceptions.LoadLevelException; import uet.oop.bomberman.graphics.IRender; @@ -94,8 +97,11 @@ private void processPlayerInput() { processPlayerInputMove(player); if (player instanceof Bomber) { - Bomber bomber = (Bomber) player; - if(_input.space) bomber.placeBomb(); + if(_input.space) { + try { + player.performAction(ActionConstants.PLACE_BOMB); + } catch (CharacterActionException ignored) {} + } } } @@ -107,7 +113,10 @@ private void processPlayerInputMove(Character player) { if(_input.right) xa++; if(xa != 0 || ya != 0) { - player.move(xa * player.getSpeed(), ya * player.getSpeed()); + ActionMove actionMove = new ActionMove(xa, ya); + try { + player.performAction(actionMove); + } catch (CharacterActionException ignored) {} player.setMoving(true); } else { player.setMoving(false); diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index af2572a..d10fb08 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -6,14 +6,18 @@ import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.bomb.Bomb; +import uet.oop.bomberman.entities.character.action.Action; +import uet.oop.bomberman.entities.character.action.ActionConstants; +import uet.oop.bomberman.entities.character.action.ActionPlaceBomb; +import uet.oop.bomberman.entities.character.exceptions.ActionOnCooldownException; +import uet.oop.bomberman.entities.character.exceptions.BombQuotaReachedException; +import uet.oop.bomberman.entities.character.exceptions.CannotPerformActionException; +import uet.oop.bomberman.entities.character.exceptions.InvalidActionException; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.graphics.Sprite; import java.util.Iterator; import java.util.List; -import uet.oop.bomberman.entities.LayeredEntity; -import uet.oop.bomberman.entities.bomb.Flame; -import uet.oop.bomberman.entities.character.enemy.Enemy; import uet.oop.bomberman.entities.tile.item.BombItem; import uet.oop.bomberman.entities.tile.item.FlameItem; import uet.oop.bomberman.entities.tile.item.Item; @@ -186,4 +190,25 @@ private void chooseSprite() { public int getPoints() { return 0; } + + private static final List VALID_ACTIONS = new ArrayList(){{ + addAll(ActionConstants.LIST_ACTION_MOVE); + add(ActionConstants.PLACE_BOMB); + }}; + @Override + protected List getValidActions() { + return VALID_ACTIONS; + } + + @Override + protected void performAction(Action action, boolean isDryRun) + throws InvalidActionException, CannotPerformActionException { + super.performAction(action, isDryRun); + if (action instanceof ActionPlaceBomb) { + if (getBombRemainingQuota() < 0) throw new BombQuotaReachedException(); + if (bombCooldown > 0) throw new ActionOnCooldownException(); + if (!isDryRun) placeBomb(); + } + } + } diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index a630f79..2be4a31 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import java.util.stream.Stream; import uet.oop.bomberman.Game; @@ -10,6 +11,12 @@ import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.LayeredEntity; import uet.oop.bomberman.entities.bomb.Flame; +import uet.oop.bomberman.entities.character.action.Action; +import uet.oop.bomberman.entities.character.action.ActionConstants; +import uet.oop.bomberman.entities.character.action.ActionMove; +import uet.oop.bomberman.entities.character.exceptions.CannotPerformActionException; +import uet.oop.bomberman.entities.character.exceptions.CharacterActionException; +import uet.oop.bomberman.entities.character.exceptions.InvalidActionException; import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.entities.tile.item.SpeedItem; import uet.oop.bomberman.graphics.Screen; @@ -59,7 +66,42 @@ public final void update() { * Tính toán hướng đi */ protected abstract void calculateMove(); - + + protected List getValidActions() { return ActionConstants.LIST_ACTION_MOVE; } + + public boolean isValidAction(Action action) { + return getValidActions().contains(action); + } + + public final void performAction(Action action) throws InvalidActionException, CannotPerformActionException { + performAction(action, false); + } + + protected void performAction(Action action, boolean isDryRun) throws InvalidActionException, CannotPerformActionException { + if (!isValidAction(action)) throw new InvalidActionException(); + if (action instanceof ActionMove) { + ActionMove actionMove = (ActionMove) action; + double dx = actionMove.getDx() * getSpeed(); + double dy = actionMove.getDy() * getSpeed(); + if (!isDryRun) move(dx, dy); + } + }; + + public final boolean canPerformAction(Action action) { + try { + performAction(action, true); + return true; + } catch (CharacterActionException ex) { + return false; + } + }; + + public List getPerformableActions() { + return getValidActions().stream() + .filter(this::canPerformAction) + .collect(Collectors.toList()); + } + /** Check if can be moved with vector (xa, ya). * @param xa * @param ya diff --git a/src/uet/oop/bomberman/entities/character/action/Action.java b/src/uet/oop/bomberman/entities/character/action/Action.java new file mode 100644 index 0000000..13b7f5a --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/action/Action.java @@ -0,0 +1,4 @@ +package uet.oop.bomberman.entities.character.action; + +public abstract class Action { +} diff --git a/src/uet/oop/bomberman/entities/character/action/ActionConstants.java b/src/uet/oop/bomberman/entities/character/action/ActionConstants.java new file mode 100644 index 0000000..eac2a3c --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/action/ActionConstants.java @@ -0,0 +1,31 @@ +package uet.oop.bomberman.entities.character.action; + +import java.util.Arrays; +import java.util.List; + +public interface ActionConstants { + + public static final ActionMove MOVE_UP = new ActionMove(0, -1); + public static final ActionMove MOVE_DOWN = new ActionMove(0, +1); + public static final ActionMove MOVE_LEFT = new ActionMove(-1, 0); + public static final ActionMove MOVE_RIGHT = new ActionMove(+1, 0); + + public static final ActionMove MOVE_UP_LEFT = new ActionMove(-1, -1); + public static final ActionMove MOVE_UP_RIGHT = new ActionMove(+1, -1); + public static final ActionMove MOVE_DOWN_LEFT = new ActionMove(-1, +1); + public static final ActionMove MOVE_DOWN_RIGHT = new ActionMove(+1, +1); + + public static final List LIST_ACTION_MOVE = Arrays.asList(new ActionMove[] { + MOVE_UP, + MOVE_DOWN, + MOVE_LEFT, + MOVE_RIGHT, + MOVE_UP_LEFT, + MOVE_UP_RIGHT, + MOVE_DOWN_LEFT, + MOVE_DOWN_RIGHT, + }); + + public static final ActionPlaceBomb PLACE_BOMB = new ActionPlaceBomb(); + +} diff --git a/src/uet/oop/bomberman/entities/character/action/ActionMove.java b/src/uet/oop/bomberman/entities/character/action/ActionMove.java new file mode 100644 index 0000000..38ed878 --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/action/ActionMove.java @@ -0,0 +1,45 @@ +package uet.oop.bomberman.entities.character.action; + +import java.util.Objects; + +public class ActionMove extends Action { + + private final double dx; + private final double dy; + + public ActionMove(double dx, double dy) { + this.dx = dx; + this.dy = dy; + } + + public double getDx() { + return dx; + } + + public double getDy() { + return dy; + } + + @Override + public int hashCode() { + return Objects.hash(dx, dy); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ActionMove other = (ActionMove) obj; + if (Double.doubleToLongBits(dx) != Double.doubleToLongBits(other.dx)) + return false; + if (Double.doubleToLongBits(dy) != Double.doubleToLongBits(other.dy)) + return false; + return true; + } + + +} diff --git a/src/uet/oop/bomberman/entities/character/action/ActionPlaceBomb.java b/src/uet/oop/bomberman/entities/character/action/ActionPlaceBomb.java new file mode 100644 index 0000000..93b6556 --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/action/ActionPlaceBomb.java @@ -0,0 +1,21 @@ +package uet.oop.bomberman.entities.character.action; + +public class ActionPlaceBomb extends Action { + + protected ActionPlaceBomb() {} + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + return true; + } + + @Override + public int hashCode() { + return 0; + } + +} diff --git a/src/uet/oop/bomberman/entities/character/exceptions/ActionOnCooldownException.java b/src/uet/oop/bomberman/entities/character/exceptions/ActionOnCooldownException.java new file mode 100644 index 0000000..665dc0c --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/exceptions/ActionOnCooldownException.java @@ -0,0 +1,5 @@ +package uet.oop.bomberman.entities.character.exceptions; + +public class ActionOnCooldownException extends CannotPerformActionException { + +} diff --git a/src/uet/oop/bomberman/entities/character/exceptions/BombQuotaReachedException.java b/src/uet/oop/bomberman/entities/character/exceptions/BombQuotaReachedException.java new file mode 100644 index 0000000..6d263d8 --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/exceptions/BombQuotaReachedException.java @@ -0,0 +1,5 @@ +package uet.oop.bomberman.entities.character.exceptions; + +public class BombQuotaReachedException extends CannotPerformActionException { + +} diff --git a/src/uet/oop/bomberman/entities/character/exceptions/CannotPerformActionException.java b/src/uet/oop/bomberman/entities/character/exceptions/CannotPerformActionException.java new file mode 100644 index 0000000..eea7279 --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/exceptions/CannotPerformActionException.java @@ -0,0 +1,5 @@ +package uet.oop.bomberman.entities.character.exceptions; + +public class CannotPerformActionException extends CharacterActionException { + +} diff --git a/src/uet/oop/bomberman/entities/character/exceptions/CharacterActionException.java b/src/uet/oop/bomberman/entities/character/exceptions/CharacterActionException.java new file mode 100644 index 0000000..7ce9a17 --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/exceptions/CharacterActionException.java @@ -0,0 +1,5 @@ +package uet.oop.bomberman.entities.character.exceptions; + +public class CharacterActionException extends Exception { + +} diff --git a/src/uet/oop/bomberman/entities/character/exceptions/InvalidActionException.java b/src/uet/oop/bomberman/entities/character/exceptions/InvalidActionException.java new file mode 100644 index 0000000..43dc374 --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/exceptions/InvalidActionException.java @@ -0,0 +1,5 @@ +package uet.oop.bomberman.entities.character.exceptions; + +public class InvalidActionException extends CharacterActionException { + +} diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index f1828aa..33ac503 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -15,7 +15,7 @@ public interface KeyboardInputCallback { void onKeyPressed(EGameControl gameControl); } - private boolean[] keys = new boolean[120]; //120 is enough to this game + private boolean[] keys = new boolean[65536]; public boolean up, down, left, right, space,pause,resume; public Optional keyboardInputCallback; From 4c1e2d21bbcac9de4349ea11787b0d922adc759f Mon Sep 17 00:00:00 2001 From: Hang Le Thi Bich <21522041@gm.uit.edu.vn> Date: Wed, 22 May 2024 00:31:13 +0700 Subject: [PATCH 36/66] fix enter input --- src/uet/oop/bomberman/screen/SelectGameModeScreen.java | 2 +- src/uet/oop/bomberman/screen/SelectLevelScreen.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/uet/oop/bomberman/screen/SelectGameModeScreen.java b/src/uet/oop/bomberman/screen/SelectGameModeScreen.java index fce9572..42ede6d 100644 --- a/src/uet/oop/bomberman/screen/SelectGameModeScreen.java +++ b/src/uet/oop/bomberman/screen/SelectGameModeScreen.java @@ -119,6 +119,6 @@ public void update() { @Override public void onDestroy() { - this._input = null; + this._input.get().keyboardInputCallback = Optional.ofNullable(null); } } diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index 716c860..5b03e68 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -44,9 +44,10 @@ public void onKeyPressed(EGameControl gameControl) { Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; Global.gameLevel = selectorIndex + 1; _board.loadLevel(Global.gameLevel); - onDestroy(); +// onDestroy(); break; } + onDestroy(); if (selectorIndex < 0) { selectorIndex = levels.size() - 1; @@ -123,6 +124,6 @@ public void update() {} @Override public void onDestroy() { - this._input = null; + this._input.get().keyboardInputCallback = Optional.ofNullable(null);; } } From fc08d3444a8d622033383f15daf9356492c0babd Mon Sep 17 00:00:00 2001 From: Hang Le Thi Bich <21522041@gm.uit.edu.vn> Date: Wed, 22 May 2024 00:32:39 +0700 Subject: [PATCH 37/66] fix enter input --- src/uet/oop/bomberman/screen/SelectLevelScreen.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index 5b03e68..7a7ea8f 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -44,10 +44,9 @@ public void onKeyPressed(EGameControl gameControl) { Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; Global.gameLevel = selectorIndex + 1; _board.loadLevel(Global.gameLevel); -// onDestroy(); + onDestroy(); break; } - onDestroy(); if (selectorIndex < 0) { selectorIndex = levels.size() - 1; From 561fd77d2a4a01af225e07f79bbf40533b5f4051 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Wed, 22 May 2024 06:40:36 +0000 Subject: [PATCH 38/66] make player move 1 tile at a time --- src/uet/oop/bomberman/Board.java | 8 +- src/uet/oop/bomberman/Game.java | 2 +- .../bomberman/entities/character/Bomber.java | 27 +---- .../entities/character/Character.java | 109 ++++++++++++++++-- .../entities/character/enemy/Balloon.java | 2 +- .../entities/character/enemy/Doll.java | 6 +- .../entities/character/enemy/Enemy.java | 62 ++++------ .../entities/character/enemy/Kondoria.java | 4 +- .../entities/character/enemy/Minvo.java | 4 +- .../entities/character/enemy/Oneal.java | 6 +- 10 files changed, 140 insertions(+), 90 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 081cc99..c969b62 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -117,9 +117,6 @@ private void processPlayerInputMove(Character player) { try { player.performAction(actionMove); } catch (CharacterActionException ignored) {} - player.setMoving(true); - } else { - player.setMoving(false); } } @@ -204,6 +201,11 @@ public Entity getEntity(double x, double y, Character m) { Entity res = null; + if (x < 0) return null; + if (y < 0) return null; + if (x >= _levelLoader.getWidth()) return null; + if (y >= _levelLoader.getHeight()) return null; + res = getFlameSegmentAt((int) x, (int) y); if (res != null) return res; diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 4cefe1b..c65f9e5 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -30,7 +30,7 @@ public class Game extends Canvas { public static final int BOMBRATE = 1; public static final int BOMBRADIUS = 1; - public static final double BOMBERSPEED = 1.0;// toc do bomber + public static final double BOMBERSPEED = 4.0;// toc do bomber public static final int TIME = 200; public static final int POINTS = 0; diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index d10fb08..427b1ab 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -127,23 +127,6 @@ protected void handleAfterDeath() { protected void calculateMove() { } - @Override - public boolean canMove(double x, double y) { - // TODO: kiểm tra có đối tượng tại vị trí chuẩn bị di chuyển đến và có thể di chuyển tới đó hay không - for (int c = 0; c < 4; c++) { //colision detection for each corner of the player - double xt = ((_x + x) + c % 2 * 9) / Game.TILES_SIZE; //divide with tiles size to pass to tile coordinate - double yt = ((_y + y) + c / 2 * 10 - 13) / Game.TILES_SIZE; //these values are the best from multiple tests - - Entity a = entityManager.getEntity(xt, yt, this); - - if(!a.canBePassedThroughBy(this)) - return false; - } - - return true; - //return false; - } - @Override public boolean collide(Entity e) { if (!super.collide(e)) return false; @@ -155,31 +138,31 @@ private void chooseSprite() { switch (_direction) { case 0: _sprite = Sprite.player_up; - if (_moving) { + if (moving) { _sprite = Sprite.movingSprite(Sprite.player_up_1, Sprite.player_up_2, _animate, 20); } break; case 1: _sprite = Sprite.player_right; - if (_moving) { + if (moving) { _sprite = Sprite.movingSprite(Sprite.player_right_1, Sprite.player_right_2, _animate, 20); } break; case 2: _sprite = Sprite.player_down; - if (_moving) { + if (moving) { _sprite = Sprite.movingSprite(Sprite.player_down_1, Sprite.player_down_2, _animate, 20); } break; case 3: _sprite = Sprite.player_left; - if (_moving) { + if (moving) { _sprite = Sprite.movingSprite(Sprite.player_left_1, Sprite.player_left_2, _animate, 20); } break; default: _sprite = Sprite.player_right; - if (_moving) { + if (moving) { _sprite = Sprite.movingSprite(Sprite.player_right_1, Sprite.player_right_2, _animate, 20); } break; diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 2be4a31..de1daff 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -1,7 +1,9 @@ package uet.oop.bomberman.entities.character; import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; +import java.util.Queue; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -14,6 +16,7 @@ import uet.oop.bomberman.entities.character.action.Action; import uet.oop.bomberman.entities.character.action.ActionConstants; import uet.oop.bomberman.entities.character.action.ActionMove; +import uet.oop.bomberman.entities.character.exceptions.ActionOnCooldownException; import uet.oop.bomberman.entities.character.exceptions.CannotPerformActionException; import uet.oop.bomberman.entities.character.exceptions.CharacterActionException; import uet.oop.bomberman.entities.character.exceptions.InvalidActionException; @@ -30,10 +33,31 @@ public abstract class Character extends AnimatedEntitiy { protected final IEntityManager entityManager; protected int _direction = -1; protected boolean _alive = true; - protected boolean _moving = false; + protected boolean moving = false; protected int timerDeathAnimation = 40; private final double baseSpeed; + private Queue waypoints = new LinkedList<>(); + + private class Waypoint { + private double moveX; + private double moveY; + private double moveDuration; + private double moveDx; + private double moveDy; + + public boolean started = false; + public double moveDestX; + public double moveDestY; + + public Waypoint(double moveX, double moveY, double moveDuration) { + this.moveX = moveX; + this.moveY = moveY; + this.moveDuration = moveDuration; + this.moveDx = moveX / moveDuration; + this.moveDy = moveY / moveDuration; + } + } private List activeItems = new ArrayList<>(); @@ -54,6 +78,7 @@ public final void update() { } return; } + updateMove(); handleUpdate(); }; @@ -81,8 +106,9 @@ protected void performAction(Action action, boolean isDryRun) throws InvalidActi if (!isValidAction(action)) throw new InvalidActionException(); if (action instanceof ActionMove) { ActionMove actionMove = (ActionMove) action; - double dx = actionMove.getDx() * getSpeed(); - double dy = actionMove.getDy() * getSpeed(); + double dx = actionMove.getDx(); + double dy = actionMove.getDy(); + if (!waypoints.isEmpty()) throw new ActionOnCooldownException(); if (!isDryRun) move(dx, dy); } }; @@ -107,13 +133,64 @@ public List getPerformableActions() { * @param ya */ public void move(double xa, double ya) { - if(xa > 0) _direction = 1; - if(xa < 0) _direction = 3; - if(ya > 0) _direction = 2; - if(ya < 0) _direction = 0; + xa *= Game.TILES_SIZE; + ya *= Game.TILES_SIZE; + double moveDurationBase = Game.TICKS_PER_SECOND / getSpeed(); + Waypoint waypointX = new Waypoint( + xa, + 0, + moveDurationBase + ); + Waypoint waypointY = new Waypoint( + 0, + ya, + moveDurationBase + ); + if (xa != 0 && ya != 0 && canMove(xa, ya) && canMove(xa, 0)) { + waypoints.add(waypointX); + waypoints.add(waypointY); + } else if (xa != 0 && ya != 0 && canMove(xa, ya) && canMove(0, ya)) { + waypoints.add(waypointY); + waypoints.add(waypointX); + } else if (xa != 0 && canMove(xa, 0)) { + waypoints.add(waypointX); + } else if (ya != 0 && canMove(0, ya)) { + waypoints.add(waypointY); + } else { + return; + } + moving = true; + } + + private void updateMove() { + if (waypoints.isEmpty()) { + moving = false; + return; + } + Waypoint waypoint = waypoints.peek(); + if (!waypoint.started) { + waypoint.started = true; + waypoint.moveDestX = _x + waypoint.moveX; + waypoint.moveDestY = _y + waypoint.moveY; + } + + waypoint.moveDuration -= 1; + if (waypoint.moveDuration > 0) { + _x += waypoint.moveDx; + _y += waypoint.moveDy; + } else { + // Correct rounding errors by force teleporting to destination + _x = waypoint.moveDestX; + _y = waypoint.moveDestY; + // Remove waypoint + waypoints.poll(); + } - if(canMove(0, ya)) _y += ya; - if(canMove(xa, 0)) _x += xa; + // Adjust direction + if(waypoint.moveDx > 0) _direction = 1; + if(waypoint.moveDx < 0) _direction = 3; + if(waypoint.moveDy > 0) _direction = 2; + if(waypoint.moveDy < 0) _direction = 0; Entity collidingEntity = entityManager.getEntity( Coordinates.pixelToTile(getCenterX()), @@ -147,7 +224,17 @@ public final void handleOnDeath() { * @param y * @return */ - protected abstract boolean canMove(double x, double y); + public boolean canMove(double dx, double dy) { + double x = getCenterX() + dx; + double y = getCenterY() + dy; + Entity a = entityManager.getEntity( + Coordinates.pixelToTile(x), + Coordinates.pixelToTile(y), + this + ); + if (a==null) return true; + return a.canBePassedThroughBy(this); + } protected double getXMessage() { return (_x * Game.SCALE) + (_sprite.SIZE / 2 * Game.SCALE); @@ -166,7 +253,7 @@ public boolean isAlive() { } public void setMoving(boolean moving) { - this._moving = moving; + this.moving = moving; } public Stream getActiveItems() { diff --git a/src/uet/oop/bomberman/entities/character/enemy/Balloon.java b/src/uet/oop/bomberman/entities/character/enemy/Balloon.java index f8a3ab1..70af410 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Balloon.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Balloon.java @@ -11,7 +11,7 @@ public class Balloon extends Enemy { public Balloon(int x, int y, Board board) { - super(x, y, board, Sprite.balloom_dead, 0.5, 100); + super(x, y, board, Sprite.balloom_dead, Game.BOMBERSPEED / 2, 100); _sprite = Sprite.balloom_left1; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Doll.java b/src/uet/oop/bomberman/entities/character/enemy/Doll.java index bc60e2c..ed430ba 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Doll.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Doll.java @@ -18,7 +18,7 @@ public class Doll extends Enemy{ public Doll(int x, int y, Board board) { - super(x, y, board, Sprite.balloom_dead, 0.8, 100); + super(x, y, board, Sprite.balloom_dead, Game.BOMBERSPEED, 100); _sprite = Sprite.balloom_left1; @@ -32,7 +32,7 @@ protected void chooseSprite() { switch (_direction) { case 0: case 1: - if (_moving) { + if (moving) { _sprite = Sprite.movingSprite(Sprite.doll_right1, Sprite.doll_right2, Sprite.doll_right3, _animate, Game.TICKS_PER_SECOND); } else { _sprite = Sprite.doll_left1; @@ -40,7 +40,7 @@ protected void chooseSprite() { break; case 2: case 3: - if (_moving) { + if (moving) { _sprite = Sprite.movingSprite(Sprite.doll_left1, Sprite.doll_left2, Sprite.doll_left3, _animate, Game.TICKS_PER_SECOND); } else { _sprite = Sprite.doll_left1; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java index adb5562..65c5f51 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java @@ -4,10 +4,11 @@ import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.character.action.ActionConstants; import uet.oop.bomberman.entities.character.enemy.ai.AI; +import uet.oop.bomberman.entities.character.exceptions.CharacterActionException; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.graphics.Sprite; -import uet.oop.bomberman.level.Coordinates; public abstract class Enemy extends Character { @@ -63,48 +64,25 @@ public void render(Screen screen) { @Override public void calculateMove() { - // TODO: Tính toán hướng đi và di chuyển Enemy theo _ai và cập nhật giá trị cho _direction - // TODO: sử dụng canMove() để kiểm tra xem có thể di chuyển tới điểm đã tính toán hay không - // TODO: sử dụng move() để di chuyển - // TODO: nhớ cập nhật lại giá trị cờ _moving khi thay đổi trạng thái di chuyển - int xa = 0, ya = 0; - if(_steps <= 0){ - _direction = _ai.calculateDirection(); - _steps = MAX_STEPS; - } - - if(_direction == 0) ya--; - if(_direction == 2) ya++; - if(_direction == 3) xa--; - if(_direction == 1) xa++; - - if(canMove(xa, ya)) { - _steps -= 1 + rest; - move(xa * _speed, ya * _speed); - _moving = true; - } else { - _steps = 0; - _moving = false; - } - } - - @Override - public boolean canMove(double x, double y) { - double xr = _x, yr = _y - 16; //subtract y to get more accurate results - - //the thing is, subract 15 to 16 (sprite size), so if we add 1 tile we get the next pixel tile with this - //we avoid the shaking inside tiles with the help of steps - if(_direction == 0) { yr += _sprite.getSize() -1 ; xr += _sprite.getSize()/2; } - if(_direction == 1) {yr += _sprite.getSize()/2; xr += 1;} - if(_direction == 2) { xr += _sprite.getSize()/2; yr += 1;} - if(_direction == 3) { xr += _sprite.getSize() -1; yr += _sprite.getSize()/2;} - - int xx = Coordinates.pixelToTile(xr) +(int)x; - int yy = Coordinates.pixelToTile(yr) +(int)y; - - Entity a = entityManager.getEntity(xx, yy, this); //entity of the position we want to go + int direction = _ai.calculateDirection(); + try { + switch (direction) { + case 0: + performAction(ActionConstants.MOVE_UP); + break; + case 1: + performAction(ActionConstants.MOVE_DOWN); + break; + case 2: + performAction(ActionConstants.MOVE_LEFT); + break; + case 3: + performAction(ActionConstants.MOVE_RIGHT); + break; + default: + } + } catch (CharacterActionException ignored) {} - return a.canBePassedThroughBy(this); } @Override diff --git a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java index 478c97b..7baf76b 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java @@ -21,7 +21,7 @@ protected void chooseSprite() { switch (_direction) { case 0: case 1: - if (_moving) + if (moving) _sprite = Sprite.movingSprite(Sprite.kondoria_right1, Sprite.kondoria_right2, Sprite.kondoria_right3, _animate, Game.TICKS_PER_SECOND); else @@ -29,7 +29,7 @@ protected void chooseSprite() { break; case 2: case 3: - if (_moving) + if (moving) _sprite = Sprite.movingSprite(Sprite.kondoria_left1, Sprite.kondoria_left2, Sprite.kondoria_left3, _animate, Game.TICKS_PER_SECOND); else diff --git a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java index 677f3ba..c259186 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java @@ -22,7 +22,7 @@ protected void chooseSprite() { switch (_direction) { case 0: case 1: - if (_moving) + if (moving) _sprite = Sprite.movingSprite(Sprite.minvo_right1, Sprite.minvo_right2, Sprite.minvo_right3, _animate, Game.TICKS_PER_SECOND); else @@ -30,7 +30,7 @@ protected void chooseSprite() { break; case 2: case 3: - if (_moving) + if (moving) _sprite = Sprite.movingSprite(Sprite.minvo_left1, Sprite.minvo_left2, Sprite.minvo_left3, _animate, Game.TICKS_PER_SECOND); else diff --git a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java index 608255f..c14b596 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java @@ -11,7 +11,7 @@ public class Oneal extends Enemy { //private Random random = new Random(); public Oneal(int x, int y, Board board) { - super(x, y, board, Sprite.balloom_dead, 0.8 , 100); + super(x, y, board, Sprite.balloom_dead, Game.BOMBERSPEED, 100); _sprite = Sprite.balloom_left1; @@ -26,14 +26,14 @@ protected void chooseSprite() { switch(_direction) { case 0: case 1: - if(_moving) + if(moving) _sprite = Sprite.movingSprite(Sprite.oneal_right1, Sprite.oneal_right2, Sprite.oneal_right3, _animate, Game.TICKS_PER_SECOND); else _sprite = Sprite.oneal_left1; break; case 2: case 3: - if(_moving) + if(moving) _sprite = Sprite.movingSprite(Sprite.oneal_left1, Sprite.oneal_left2, Sprite.oneal_left3, _animate, Game.TICKS_PER_SECOND); else _sprite = Sprite.oneal_left1; From fa67ef902a008e2f96dd5b3e83a89601a6b7c385 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Wed, 22 May 2024 06:54:05 +0000 Subject: [PATCH 39/66] remove moving state in Character --- src/uet/oop/bomberman/Game.java | 2 +- .../oop/bomberman/entities/character/Bomber.java | 10 +++++----- .../oop/bomberman/entities/character/Character.java | 13 ++++--------- .../bomberman/entities/character/enemy/Doll.java | 4 ++-- .../entities/character/enemy/Kondoria.java | 4 ++-- .../bomberman/entities/character/enemy/Minvo.java | 4 ++-- .../bomberman/entities/character/enemy/Oneal.java | 4 ++-- 7 files changed, 18 insertions(+), 23 deletions(-) diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index c65f9e5..7fb6813 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -30,7 +30,7 @@ public class Game extends Canvas { public static final int BOMBRATE = 1; public static final int BOMBRADIUS = 1; - public static final double BOMBERSPEED = 4.0;// toc do bomber + public static final double BOMBERSPEED = 3.0;// toc do bomber public static final int TIME = 200; public static final int POINTS = 0; diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index 427b1ab..f42ab0c 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -138,31 +138,31 @@ private void chooseSprite() { switch (_direction) { case 0: _sprite = Sprite.player_up; - if (moving) { + if (isMoving()) { _sprite = Sprite.movingSprite(Sprite.player_up_1, Sprite.player_up_2, _animate, 20); } break; case 1: _sprite = Sprite.player_right; - if (moving) { + if (isMoving()) { _sprite = Sprite.movingSprite(Sprite.player_right_1, Sprite.player_right_2, _animate, 20); } break; case 2: _sprite = Sprite.player_down; - if (moving) { + if (isMoving()) { _sprite = Sprite.movingSprite(Sprite.player_down_1, Sprite.player_down_2, _animate, 20); } break; case 3: _sprite = Sprite.player_left; - if (moving) { + if (isMoving()) { _sprite = Sprite.movingSprite(Sprite.player_left_1, Sprite.player_left_2, _animate, 20); } break; default: _sprite = Sprite.player_right; - if (moving) { + if (isMoving()) { _sprite = Sprite.movingSprite(Sprite.player_right_1, Sprite.player_right_2, _animate, 20); } break; diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index de1daff..5bbbb09 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -33,7 +33,6 @@ public abstract class Character extends AnimatedEntitiy { protected final IEntityManager entityManager; protected int _direction = -1; protected boolean _alive = true; - protected boolean moving = false; protected int timerDeathAnimation = 40; private final double baseSpeed; @@ -108,7 +107,7 @@ protected void performAction(Action action, boolean isDryRun) throws InvalidActi ActionMove actionMove = (ActionMove) action; double dx = actionMove.getDx(); double dy = actionMove.getDy(); - if (!waypoints.isEmpty()) throw new ActionOnCooldownException(); + if (isMoving()) throw new ActionOnCooldownException(); if (!isDryRun) move(dx, dy); } }; @@ -159,14 +158,10 @@ public void move(double xa, double ya) { } else { return; } - moving = true; } private void updateMove() { - if (waypoints.isEmpty()) { - moving = false; - return; - } + if (waypoints.isEmpty()) return; Waypoint waypoint = waypoints.peek(); if (!waypoint.started) { waypoint.started = true; @@ -252,8 +247,8 @@ public boolean isAlive() { return _alive; } - public void setMoving(boolean moving) { - this.moving = moving; + public boolean isMoving() { + return waypoints.size() > 0; } public Stream getActiveItems() { diff --git a/src/uet/oop/bomberman/entities/character/enemy/Doll.java b/src/uet/oop/bomberman/entities/character/enemy/Doll.java index ed430ba..64b7754 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Doll.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Doll.java @@ -32,7 +32,7 @@ protected void chooseSprite() { switch (_direction) { case 0: case 1: - if (moving) { + if (isMoving()) { _sprite = Sprite.movingSprite(Sprite.doll_right1, Sprite.doll_right2, Sprite.doll_right3, _animate, Game.TICKS_PER_SECOND); } else { _sprite = Sprite.doll_left1; @@ -40,7 +40,7 @@ protected void chooseSprite() { break; case 2: case 3: - if (moving) { + if (isMoving()) { _sprite = Sprite.movingSprite(Sprite.doll_left1, Sprite.doll_left2, Sprite.doll_left3, _animate, Game.TICKS_PER_SECOND); } else { _sprite = Sprite.doll_left1; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java index 7baf76b..5037323 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java @@ -21,7 +21,7 @@ protected void chooseSprite() { switch (_direction) { case 0: case 1: - if (moving) + if (isMoving()) _sprite = Sprite.movingSprite(Sprite.kondoria_right1, Sprite.kondoria_right2, Sprite.kondoria_right3, _animate, Game.TICKS_PER_SECOND); else @@ -29,7 +29,7 @@ protected void chooseSprite() { break; case 2: case 3: - if (moving) + if (isMoving()) _sprite = Sprite.movingSprite(Sprite.kondoria_left1, Sprite.kondoria_left2, Sprite.kondoria_left3, _animate, Game.TICKS_PER_SECOND); else diff --git a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java index c259186..d200b5a 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java @@ -22,7 +22,7 @@ protected void chooseSprite() { switch (_direction) { case 0: case 1: - if (moving) + if (isMoving()) _sprite = Sprite.movingSprite(Sprite.minvo_right1, Sprite.minvo_right2, Sprite.minvo_right3, _animate, Game.TICKS_PER_SECOND); else @@ -30,7 +30,7 @@ protected void chooseSprite() { break; case 2: case 3: - if (moving) + if (isMoving()) _sprite = Sprite.movingSprite(Sprite.minvo_left1, Sprite.minvo_left2, Sprite.minvo_left3, _animate, Game.TICKS_PER_SECOND); else diff --git a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java index c14b596..2ee0db3 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java @@ -26,14 +26,14 @@ protected void chooseSprite() { switch(_direction) { case 0: case 1: - if(moving) + if(isMoving()) _sprite = Sprite.movingSprite(Sprite.oneal_right1, Sprite.oneal_right2, Sprite.oneal_right3, _animate, Game.TICKS_PER_SECOND); else _sprite = Sprite.oneal_left1; break; case 2: case 3: - if(moving) + if(isMoving()) _sprite = Sprite.movingSprite(Sprite.oneal_left1, Sprite.oneal_left2, Sprite.oneal_left3, _animate, Game.TICKS_PER_SECOND); else _sprite = Sprite.oneal_left1; From 28e2755fa8a4a162a1532e82247562430fa93289 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Wed, 22 May 2024 06:57:16 +0000 Subject: [PATCH 40/66] chore --- src/uet/oop/bomberman/entities/character/Character.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 5bbbb09..02804df 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -105,8 +105,8 @@ protected void performAction(Action action, boolean isDryRun) throws InvalidActi if (!isValidAction(action)) throw new InvalidActionException(); if (action instanceof ActionMove) { ActionMove actionMove = (ActionMove) action; - double dx = actionMove.getDx(); - double dy = actionMove.getDy(); + double dx = actionMove.getDx() * Game.TILES_SIZE; + double dy = actionMove.getDy() * Game.TILES_SIZE; if (isMoving()) throw new ActionOnCooldownException(); if (!isDryRun) move(dx, dy); } @@ -132,8 +132,6 @@ public List getPerformableActions() { * @param ya */ public void move(double xa, double ya) { - xa *= Game.TILES_SIZE; - ya *= Game.TILES_SIZE; double moveDurationBase = Game.TICKS_PER_SECOND / getSpeed(); Waypoint waypointX = new Waypoint( xa, From f106af938a4f322afca4e2c8627339b25e7c4b0f Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Wed, 22 May 2024 07:21:33 +0000 Subject: [PATCH 41/66] init code for agent --- src/uet/oop/bomberman/Board.java | 18 ++++++++++ src/uet/oop/bomberman/agent/Agent.java | 17 ++++++++++ src/uet/oop/bomberman/agent/IAgent.java | 9 +++++ src/uet/oop/bomberman/agent/MovingAgent.java | 34 +++++++++++++++++++ .../bomberman/entities/character/Bomber.java | 5 --- .../entities/character/Character.java | 11 +++--- .../character/action/ActionConstants.java | 1 + .../entities/character/action/ActionNoop.java | 5 +++ .../entities/character/enemy/Balloon.java | 6 ---- .../entities/character/enemy/Doll.java | 5 --- .../entities/character/enemy/Enemy.java | 28 --------------- .../entities/character/enemy/Kondoria.java | 4 --- .../entities/character/enemy/Minvo.java | 7 ---- .../entities/character/enemy/Oneal.java | 9 ----- .../entities/character/enemy/ai/AIMedium.java | 33 ++++++++++-------- .../oop/bomberman/level/FileLevelLoader.java | 27 ++++++++++----- 16 files changed, 126 insertions(+), 93 deletions(-) create mode 100644 src/uet/oop/bomberman/agent/Agent.java create mode 100644 src/uet/oop/bomberman/agent/IAgent.java create mode 100644 src/uet/oop/bomberman/agent/MovingAgent.java create mode 100644 src/uet/oop/bomberman/entities/character/action/ActionNoop.java diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index c969b62..72b3920 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -1,5 +1,6 @@ package uet.oop.bomberman; +import uet.oop.bomberman.agent.Agent; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.base.IGameInfoManager; import uet.oop.bomberman.base.IMessageManager; @@ -9,6 +10,7 @@ import uet.oop.bomberman.entities.bomb.FlameSegment; import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.character.action.Action; import uet.oop.bomberman.entities.character.action.ActionConstants; import uet.oop.bomberman.entities.character.action.ActionMove; import uet.oop.bomberman.entities.character.exceptions.CharacterActionException; @@ -42,6 +44,7 @@ public class Board implements IRender, IEntityManager, IMessageManager, IGameInf protected List _bombs = new ArrayList<>(); private List _messages = new ArrayList<>(); private List _activeItems = new ArrayList<>(); + private List agents = new ArrayList<>(); private Character player; @@ -80,6 +83,8 @@ public void update() { updateActiveItems(); detectEndGame(); + processAgentAction(); + snapCameraToPlayer(); processPlayerInput(); @@ -90,6 +95,19 @@ public void update() { } } + public void addAgent(Agent agent) { + agents.add(agent); + } + + private void processAgentAction() { + for (Agent agent: agents) { + Action action = agent.getNextAction(); + try { + agent.getCharacter().performAction(action); + } catch (CharacterActionException ignored) {} + } + } + private void processPlayerInput() { Character player = getPlayer(); if (!player.isAlive()) return; diff --git a/src/uet/oop/bomberman/agent/Agent.java b/src/uet/oop/bomberman/agent/Agent.java new file mode 100644 index 0000000..b0cb681 --- /dev/null +++ b/src/uet/oop/bomberman/agent/Agent.java @@ -0,0 +1,17 @@ +package uet.oop.bomberman.agent; + +import uet.oop.bomberman.entities.character.Character; + +public abstract class Agent implements IAgent { + + private Character character; + + public Agent(Character character) { + this.character = character; + } + + public Character getCharacter() { + return character; + } + +} diff --git a/src/uet/oop/bomberman/agent/IAgent.java b/src/uet/oop/bomberman/agent/IAgent.java new file mode 100644 index 0000000..be1bb34 --- /dev/null +++ b/src/uet/oop/bomberman/agent/IAgent.java @@ -0,0 +1,9 @@ +package uet.oop.bomberman.agent; + +import uet.oop.bomberman.entities.character.action.Action; + +public interface IAgent { + + public Action getNextAction(); + +} diff --git a/src/uet/oop/bomberman/agent/MovingAgent.java b/src/uet/oop/bomberman/agent/MovingAgent.java new file mode 100644 index 0000000..cb16965 --- /dev/null +++ b/src/uet/oop/bomberman/agent/MovingAgent.java @@ -0,0 +1,34 @@ +package uet.oop.bomberman.agent; + +import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.character.action.Action; +import uet.oop.bomberman.entities.character.action.ActionConstants; +import uet.oop.bomberman.entities.character.enemy.ai.AI; + +public class MovingAgent extends Agent { + + private AI ai; + + public MovingAgent(Character character, AI ai) { + super(character); + this.ai = ai; + } + + @Override + public Action getNextAction() { + int direction = ai.calculateDirection(); + switch (direction) { + case 0: + return ActionConstants.MOVE_UP; + case 1: + return ActionConstants.MOVE_DOWN; + case 2: + return ActionConstants.MOVE_LEFT; + case 3: + return ActionConstants.MOVE_RIGHT; + default: + return ActionConstants.DO_NOTHING; + } + } + +} diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index f42ab0c..8c93d40 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import uet.oop.bomberman.Board; -import uet.oop.bomberman.Game; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.bomb.Bomb; @@ -123,10 +122,6 @@ protected void handleAfterDeath() { _board.endGame(); } - @Override - protected void calculateMove() { - } - @Override public boolean collide(Entity e) { if (!super.collide(e)) return false; diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 02804df..eed69e4 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -86,12 +86,11 @@ public final void update() { @Override public abstract void render(Screen screen); - /** - * Tính toán hướng đi - */ - protected abstract void calculateMove(); - - protected List getValidActions() { return ActionConstants.LIST_ACTION_MOVE; } + private static final List VALID_ACTIONS = new ArrayList(){{ + addAll(ActionConstants.LIST_ACTION_MOVE); + add(ActionConstants.DO_NOTHING); + }}; + protected List getValidActions() { return VALID_ACTIONS; } public boolean isValidAction(Action action) { return getValidActions().contains(action); diff --git a/src/uet/oop/bomberman/entities/character/action/ActionConstants.java b/src/uet/oop/bomberman/entities/character/action/ActionConstants.java index eac2a3c..332f398 100644 --- a/src/uet/oop/bomberman/entities/character/action/ActionConstants.java +++ b/src/uet/oop/bomberman/entities/character/action/ActionConstants.java @@ -27,5 +27,6 @@ public interface ActionConstants { }); public static final ActionPlaceBomb PLACE_BOMB = new ActionPlaceBomb(); + public static final Action DO_NOTHING = new ActionNoop(); } diff --git a/src/uet/oop/bomberman/entities/character/action/ActionNoop.java b/src/uet/oop/bomberman/entities/character/action/ActionNoop.java new file mode 100644 index 0000000..df0795b --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/action/ActionNoop.java @@ -0,0 +1,5 @@ +package uet.oop.bomberman.entities.character.action; + +public class ActionNoop extends Action { + +} diff --git a/src/uet/oop/bomberman/entities/character/enemy/Balloon.java b/src/uet/oop/bomberman/entities/character/enemy/Balloon.java index 70af410..6c1d946 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Balloon.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Balloon.java @@ -1,10 +1,7 @@ package uet.oop.bomberman.entities.character.enemy; -import static java.lang.Math.random; -import java.util.Random; import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; -import uet.oop.bomberman.entities.character.enemy.ai.AILow; import uet.oop.bomberman.graphics.Sprite; public class Balloon extends Enemy { @@ -15,9 +12,6 @@ public Balloon(int x, int y, Board board) { _sprite = Sprite.balloom_left1; - _ai = new AILow(); - _direction = _ai.calculateDirection(); - } @Override diff --git a/src/uet/oop/bomberman/entities/character/enemy/Doll.java b/src/uet/oop/bomberman/entities/character/enemy/Doll.java index 64b7754..6a7ea72 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Doll.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Doll.java @@ -7,8 +7,6 @@ import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; -import uet.oop.bomberman.entities.character.enemy.ai.AILow; -import uet.oop.bomberman.entities.character.enemy.ai.AIMedium; import uet.oop.bomberman.graphics.Sprite; /** @@ -22,9 +20,6 @@ public Doll(int x, int y, Board board) { _sprite = Sprite.balloom_left1; - _ai = new AIMedium(entityManager.getPlayer(), this); - _direction = _ai.calculateDirection(); - } @Override diff --git a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java index 65c5f51..144a507 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java @@ -4,9 +4,6 @@ import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Character; -import uet.oop.bomberman.entities.character.action.ActionConstants; -import uet.oop.bomberman.entities.character.enemy.ai.AI; -import uet.oop.bomberman.entities.character.exceptions.CharacterActionException; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.graphics.Sprite; @@ -15,7 +12,6 @@ public abstract class Enemy extends Character { protected int _points; protected double _speed; - protected AI _ai; protected final double MAX_STEPS; protected final double rest; @@ -41,7 +37,6 @@ public Enemy(int x, int y, IEntityManager entityManager, Sprite dead, double spe @Override public void handleUpdate() { animate(); - calculateMove(); } @Override @@ -62,29 +57,6 @@ public void render(Screen screen) { screen.renderEntity((int)_x, (int)_y - _sprite.SIZE, this); } - @Override - public void calculateMove() { - int direction = _ai.calculateDirection(); - try { - switch (direction) { - case 0: - performAction(ActionConstants.MOVE_UP); - break; - case 1: - performAction(ActionConstants.MOVE_DOWN); - break; - case 2: - performAction(ActionConstants.MOVE_LEFT); - break; - case 3: - performAction(ActionConstants.MOVE_RIGHT); - break; - default: - } - } catch (CharacterActionException ignored) {} - - } - @Override public boolean collide(Entity e) { if (!super.collide(e)) return false; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java index 5037323..143df1e 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java @@ -2,7 +2,6 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.Board; -import uet.oop.bomberman.entities.character.enemy.ai.AIMedium; import uet.oop.bomberman.graphics.Sprite; public class Kondoria extends Enemy { @@ -11,9 +10,6 @@ public Kondoria(int x, int y, Board board) { _sprite = Sprite.kondoria_right1; - _ai = new AIMedium(entityManager.getPlayer(), this); - _direction = _ai.calculateDirection(); - // this._speed += random.nextDouble()/2; } @Override diff --git a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java index d200b5a..c1c1704 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java @@ -2,19 +2,12 @@ import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; -import uet.oop.bomberman.entities.character.enemy.ai.AIMedium; import uet.oop.bomberman.graphics.Sprite; public class Minvo extends Enemy { - private Board _board; - public Minvo(int x, int y, Board board) { super(x, y, board, Sprite.minvo_dead, Game.BOMBERSPEED * 1.5, 800); - _board = board; _sprite = Sprite.minvo_right1; - - _ai = new AIMedium(_board.getPlayer(), this); - _direction = _ai.calculateDirection(); } @Override diff --git a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java index 2ee0db3..be74bea 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java @@ -1,11 +1,7 @@ package uet.oop.bomberman.entities.character.enemy; - -import java.util.Random; import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; -import uet.oop.bomberman.entities.character.enemy.ai.AILow; -import uet.oop.bomberman.entities.character.enemy.ai.AIMedium; import uet.oop.bomberman.graphics.Sprite; public class Oneal extends Enemy { @@ -14,11 +10,6 @@ public Oneal(int x, int y, Board board) { super(x, y, board, Sprite.balloom_dead, Game.BOMBERSPEED, 100); _sprite = Sprite.balloom_left1; - - _ai = new AILow(); - _direction = _ai.calculateDirection(); - //this._speed += random.nextDouble()/2; - } @Override diff --git a/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java b/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java index 17a7bfc..e21f176 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java +++ b/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java @@ -1,23 +1,21 @@ package uet.oop.bomberman.entities.character.enemy.ai; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.character.Character; -import uet.oop.bomberman.entities.character.enemy.Enemy; public class AIMedium extends AI { - Character player; - Enemy _e; + + private final Character character; + private final IEntityManager entityManager; - public AIMedium(Character player, Enemy e) { - this.player = player; - _e = e; + public AIMedium(Character character, IEntityManager entityManager) { + this.character = character; + this.entityManager = entityManager; } @Override public int calculateDirection() { - // TODO: cài đặt thuật toán tìm đường đi - if(player == null) - return random.nextInt(4); - + int vertical = random.nextInt(2); if(vertical == 1) { @@ -36,19 +34,24 @@ public int calculateDirection() { return calculateRowDirection(); } } - protected int calculateColDirection() { - if(player.getXTile() < _e.getXTile()) + + protected int calculateColDirection() { + Character player = entityManager.getPlayer(); + + if(player.getXTile() < character.getXTile()) return 3; - else if(player.getXTile() > _e.getXTile()) + else if(player.getXTile() > character.getXTile()) return 1; return -1; } protected int calculateRowDirection() { - if(player.getYTile() < _e.getYTile()) + Character player = entityManager.getPlayer(); + + if(player.getYTile() < character.getYTile()) return 0; - else if(player.getYTile() > _e.getYTile()) + else if(player.getYTile() > character.getYTile()) return 2; return -1; } diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index c14974f..3cadceb 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -6,11 +6,16 @@ import java.util.List; import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; +import uet.oop.bomberman.agent.Agent; +import uet.oop.bomberman.agent.MovingAgent; 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.character.enemy.Doll; +import uet.oop.bomberman.entities.character.enemy.Enemy; import uet.oop.bomberman.entities.character.enemy.Oneal; +import uet.oop.bomberman.entities.character.enemy.ai.AILow; +import uet.oop.bomberman.entities.character.enemy.ai.AIMedium; import uet.oop.bomberman.entities.tile.Grass; import uet.oop.bomberman.entities.tile.Portal; import uet.oop.bomberman.entities.tile.Wall; @@ -66,11 +71,8 @@ public void loadLevel(int level) { @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 + Enemy enemy; + Agent agent; for (int y = 0; y < getHeight(); y++) { for (int x = 0; x < getWidth(); x++) { int pos = x + y * getWidth(); @@ -119,18 +121,27 @@ public void createEntities() { // Thêm balloon case '1': - _board.addCharacter(new Balloon(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board)); + enemy = new Balloon(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board); + _board.addCharacter(enemy); _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); + agent = new MovingAgent(enemy, new AILow()); + _board.addAgent(agent); break; // Thêm oneal case '2': - _board.addCharacter(new Oneal(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board)); + enemy = new Oneal(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board); + _board.addCharacter(enemy); _board.addEntity(pos, new Grass(x, y, Sprite.grass)); + agent = new MovingAgent(enemy, new AILow()); + _board.addAgent(agent); break; // Thêm doll case '3': - _board.addCharacter(new Doll(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board)); + enemy = new Doll(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board); + _board.addCharacter(enemy); _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); + agent = new MovingAgent(enemy, new AIMedium(enemy, _board)); + _board.addAgent(agent); break; // Thêm oneal // Thêm BomItem From 376abe16370bae84ed041c909eb878337a70adef Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Wed, 22 May 2024 07:43:20 +0000 Subject: [PATCH 42/66] fix: Doll not walking in right direction --- src/uet/oop/bomberman/agent/MovingAgent.java | 6 +++--- src/uet/oop/bomberman/entities/Entity.java | 4 ++-- src/uet/oop/bomberman/entities/character/Character.java | 5 ++++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/uet/oop/bomberman/agent/MovingAgent.java b/src/uet/oop/bomberman/agent/MovingAgent.java index cb16965..22de0b5 100644 --- a/src/uet/oop/bomberman/agent/MovingAgent.java +++ b/src/uet/oop/bomberman/agent/MovingAgent.java @@ -21,11 +21,11 @@ public Action getNextAction() { case 0: return ActionConstants.MOVE_UP; case 1: - return ActionConstants.MOVE_DOWN; + return ActionConstants.MOVE_RIGHT; case 2: - return ActionConstants.MOVE_LEFT; + return ActionConstants.MOVE_DOWN; case 3: - return ActionConstants.MOVE_RIGHT; + return ActionConstants.MOVE_LEFT; default: return ActionConstants.DO_NOTHING; } diff --git a/src/uet/oop/bomberman/entities/Entity.java b/src/uet/oop/bomberman/entities/Entity.java index 6e9317a..c7ad8c8 100644 --- a/src/uet/oop/bomberman/entities/Entity.java +++ b/src/uet/oop/bomberman/entities/Entity.java @@ -71,11 +71,11 @@ public double getY() { } public int getXTile() { - return Coordinates.pixelToTile(_x + _sprite.SIZE / 2); + return Coordinates.pixelToTile(getCenterX()); } public int getYTile() { - return Coordinates.pixelToTile(_y - _sprite.SIZE / 2); + return Coordinates.pixelToTile(getCenterY()); } diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index eed69e4..9664c0f 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -153,7 +153,10 @@ public void move(double xa, double ya) { } else if (ya != 0 && canMove(0, ya)) { waypoints.add(waypointY); } else { - return; + System.out.println(String.format( + "Cannot move character %s to (%s, %s)", + getClass().getSimpleName(), xa, ya + )); } } From 54b28a9f5e809ba0a54343178443f957027154a9 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Wed, 22 May 2024 11:51:03 +0000 Subject: [PATCH 43/66] refactor IEntityManager --- src/uet/oop/bomberman/Board.java | 32 ++++++++++++------- src/uet/oop/bomberman/base/Copyable.java | 7 ++++ src/uet/oop/bomberman/base/IBombManager.java | 15 +++++++++ .../oop/bomberman/base/ICharacterManager.java | 17 ++++++++++ .../oop/bomberman/base/IEntityManager.java | 27 ++++------------ src/uet/oop/bomberman/base/ITileManager.java | 10 ++++++ .../oop/bomberman/entities/bomb/Flame.java | 4 +-- .../entities/character/Character.java | 4 +-- .../entities/character/enemy/ai/AIMedium.java | 6 ++-- .../oop/bomberman/level/FileLevelLoader.java | 24 +++++++------- 10 files changed, 94 insertions(+), 52 deletions(-) create mode 100644 src/uet/oop/bomberman/base/Copyable.java create mode 100644 src/uet/oop/bomberman/base/IBombManager.java create mode 100644 src/uet/oop/bomberman/base/ICharacterManager.java create mode 100644 src/uet/oop/bomberman/base/ITileManager.java diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 72b3920..3923e6c 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -1,6 +1,7 @@ package uet.oop.bomberman; import uet.oop.bomberman.agent.Agent; +import uet.oop.bomberman.base.Copyable; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.base.IGameInfoManager; import uet.oop.bomberman.base.IMessageManager; @@ -14,6 +15,7 @@ import uet.oop.bomberman.entities.character.action.ActionConstants; import uet.oop.bomberman.entities.character.action.ActionMove; import uet.oop.bomberman.entities.character.exceptions.CharacterActionException; +import uet.oop.bomberman.entities.tile.Tile; import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.exceptions.LoadLevelException; import uet.oop.bomberman.graphics.IRender; @@ -33,13 +35,13 @@ /** * Quản lý thao tác điều khiển, load level, render các màn hình của game */ -public class Board implements IRender, IEntityManager, IMessageManager, IGameInfoManager { +public class Board implements Copyable, IRender, IEntityManager, IMessageManager, IGameInfoManager { protected LevelLoader _levelLoader; protected Game _game; protected Keyboard _input; protected Screen _screen; - public Entity[] _entities; + public Tile[] tiles; public List _characters = new ArrayList<>(); protected List _bombs = new ArrayList<>(); private List _messages = new ArrayList<>(); @@ -151,7 +153,7 @@ public void render(Screen screen) { for (int y = y0; y < y1; y++) { for (int x = x0; x < x1; x++) { - _entities[x + y * _levelLoader.getWidth()].render(screen); + tiles[x + y * _levelLoader.getWidth()].render(screen); } } @@ -175,7 +177,7 @@ public void loadLevel(int level) { try { _levelLoader = new FileLevelLoader(this, level); - _entities = new Entity[_levelLoader.getHeight() * _levelLoader.getWidth()]; + tiles = new Tile[_levelLoader.getHeight() * _levelLoader.getWidth()]; _levelLoader.createEntities(); } catch (LoadLevelException e) { @@ -215,7 +217,7 @@ public void drawScreen(Graphics g) { } @Override - public Entity getEntity(double x, double y, Character m) { + public Entity getEntityAtExcluding(double x, double y, Character m) { Entity res = null; @@ -236,7 +238,7 @@ public Entity getEntity(double x, double y, Character m) { if (res != null) return res; - res = getEntityAt((int) x, (int) y); + res = getTileAt((int) x, (int) y); return res; } @@ -301,8 +303,8 @@ public FlameSegment getFlameSegmentAt(int x, int y) { } @Override - public Entity getEntityAt(double x, double y) { - return _entities[(int) x + (int) y * _levelLoader.getWidth()]; + public Tile getTileAt(double x, double y) { + return tiles[(int) x + (int) y * _levelLoader.getWidth()]; } @Override @@ -311,8 +313,8 @@ public void addActiveItem(Item item) { } @Override - public void addEntity(int pos, Entity e) { - _entities[pos] = e; + public void addTile(int pos, Tile e) { + tiles[pos] = e; } @Override @@ -358,8 +360,8 @@ public void renderMessages(Graphics g) { protected void updateEntities() { if (_game.isPaused()) return; - for (int i = 0; i < _entities.length; i++) { - _entities[i].update(); + for (int i = 0; i < tiles.length; i++) { + tiles[i].update(); } } @@ -479,4 +481,10 @@ public void handleOnDeath(Character character, Character killer) { } } + @Override + public Board copy() { + // TODO Auto-generated method stub + return null; + } + } diff --git a/src/uet/oop/bomberman/base/Copyable.java b/src/uet/oop/bomberman/base/Copyable.java new file mode 100644 index 0000000..bd9721e --- /dev/null +++ b/src/uet/oop/bomberman/base/Copyable.java @@ -0,0 +1,7 @@ +package uet.oop.bomberman.base; + +public interface Copyable { + + public Copyable copy(); + +} diff --git a/src/uet/oop/bomberman/base/IBombManager.java b/src/uet/oop/bomberman/base/IBombManager.java new file mode 100644 index 0000000..676ddae --- /dev/null +++ b/src/uet/oop/bomberman/base/IBombManager.java @@ -0,0 +1,15 @@ +package uet.oop.bomberman.base; + +import java.util.List; + +import uet.oop.bomberman.entities.bomb.Bomb; +import uet.oop.bomberman.entities.bomb.FlameSegment; + +public interface IBombManager { + + public List getBombs(); + public Bomb getBombAt(double x, double y); + public void addBomb(Bomb e); + public FlameSegment getFlameSegmentAt(int x, int y); + +} \ No newline at end of file diff --git a/src/uet/oop/bomberman/base/ICharacterManager.java b/src/uet/oop/bomberman/base/ICharacterManager.java new file mode 100644 index 0000000..57e5a37 --- /dev/null +++ b/src/uet/oop/bomberman/base/ICharacterManager.java @@ -0,0 +1,17 @@ +package uet.oop.bomberman.base; + +import uet.oop.bomberman.entities.character.Character; + +public interface ICharacterManager { + + Character getCharacterAtExcluding(int x, int y, Character a); + + void addCharacter(Character e); + + void setPlayer(Character character); + + Character getPlayer(); + + void handleOnDeath(Character character, Character killer); + +} \ No newline at end of file diff --git a/src/uet/oop/bomberman/base/IEntityManager.java b/src/uet/oop/bomberman/base/IEntityManager.java index de47e76..226555b 100644 --- a/src/uet/oop/bomberman/base/IEntityManager.java +++ b/src/uet/oop/bomberman/base/IEntityManager.java @@ -1,30 +1,15 @@ package uet.oop.bomberman.base; -import java.util.List; - import uet.oop.bomberman.entities.Entity; -import uet.oop.bomberman.entities.bomb.Bomb; -import uet.oop.bomberman.entities.bomb.FlameSegment; import uet.oop.bomberman.entities.character.Character; -public interface IEntityManager extends IActiveItemManager { - - public List getBombs(); - - public Entity getEntity(double x, double y, Character m); - public Entity getEntityAt(double x, double y); - public Bomb getBombAt(double x, double y); - public Character getCharacterAtExcluding(int x, int y, Character a); - public FlameSegment getFlameSegmentAt(int x, int y); - - public void addEntity(int pos, Entity e); - public void addCharacter(Character e); - public void addBomb(Bomb e); - - public void setPlayer(Character character); - public Character getPlayer(); +public interface IEntityManager extends IActiveItemManager, IBombManager, ITileManager, ICharacterManager { + public Entity getEntityAtExcluding(double x, double y, Character m); + public default Entity getEntityAt(double x, double y) { + return getEntityAtExcluding(x, y, null); + }; + public boolean isEnemyCleared(); - public void handleOnDeath(Character character, Character killer); } \ No newline at end of file diff --git a/src/uet/oop/bomberman/base/ITileManager.java b/src/uet/oop/bomberman/base/ITileManager.java new file mode 100644 index 0000000..1b46ec3 --- /dev/null +++ b/src/uet/oop/bomberman/base/ITileManager.java @@ -0,0 +1,10 @@ +package uet.oop.bomberman.base; + +import uet.oop.bomberman.entities.tile.Tile; + +public interface ITileManager { + + public Tile getTileAt(double x, double y); + public void addTile(int pos, Tile e); + +} \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/bomb/Flame.java b/src/uet/oop/bomberman/entities/bomb/Flame.java index 4e2ac84..1635d39 100644 --- a/src/uet/oop/bomberman/entities/bomb/Flame.java +++ b/src/uet/oop/bomberman/entities/bomb/Flame.java @@ -61,7 +61,7 @@ private void createFlameSegments() { case 3: x--; break; } _flameSegments[i] = new FlameSegment(x, y, _direction, last); - Entity entity = entityManager.getEntity(x, y, null); + Entity entity = entityManager.getEntityAt(x, y); if (entity!=null) { entity.collide(this); } @@ -83,7 +83,7 @@ private int calculatePermitedDistance() { if(_direction == 2) y++; if(_direction == 3) x--; - Entity a = entityManager.getEntity(x, y, null); + Entity a = entityManager.getEntityAt(x, y); if(a instanceof Bomb) ++radius; //explosion has to be below the bom diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 9664c0f..b945e24 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -187,7 +187,7 @@ private void updateMove() { if(waypoint.moveDy > 0) _direction = 2; if(waypoint.moveDy < 0) _direction = 0; - Entity collidingEntity = entityManager.getEntity( + Entity collidingEntity = entityManager.getEntityAtExcluding( Coordinates.pixelToTile(getCenterX()), Coordinates.pixelToTile(getCenterY()), this @@ -222,7 +222,7 @@ public final void handleOnDeath() { public boolean canMove(double dx, double dy) { double x = getCenterX() + dx; double y = getCenterY() + dy; - Entity a = entityManager.getEntity( + Entity a = entityManager.getEntityAtExcluding( Coordinates.pixelToTile(x), Coordinates.pixelToTile(y), this diff --git a/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java b/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java index e21f176..ef004d0 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java +++ b/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java @@ -1,14 +1,14 @@ package uet.oop.bomberman.entities.character.enemy.ai; -import uet.oop.bomberman.base.IEntityManager; +import uet.oop.bomberman.base.ICharacterManager; import uet.oop.bomberman.entities.character.Character; public class AIMedium extends AI { private final Character character; - private final IEntityManager entityManager; + private final ICharacterManager entityManager; - public AIMedium(Character character, IEntityManager entityManager) { + public AIMedium(Character character, ICharacterManager entityManager) { this.character = character; this.entityManager = entityManager; } diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 3cadceb..4af5659 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -80,22 +80,22 @@ public void createEntities() { switch (c) { // Thêm grass case ' ': - _board.addEntity(pos, new Grass(x, y, Sprite.grass)); + _board.addTile(pos, new Grass(x, y, Sprite.grass)); break; // Thêm Wall case '#': - _board.addEntity(pos, new Wall(x, y, Sprite.wall)); + _board.addTile(pos, new Wall(x, y, Sprite.wall)); break; // Thêm Portal case 'x': - _board.addEntity(pos, new LayeredEntity(x, y, + _board.addTile(pos, new LayeredEntity(x, y, new Grass(x, y, Sprite.grass), new Portal(x, y, _board, Sprite.portal), new Brick(x, y, Sprite.brick))); break; // Thêm brick case '*': - _board.addEntity(x + y * _width, + _board.addTile(x + y * _width, new LayeredEntity(x, y, new Grass(x, y, Sprite.grass), new Brick(x, y, Sprite.brick) @@ -116,14 +116,14 @@ public void createEntities() { _board.addCharacter(bomber); _board.setPlayer(bomber); Screen.setOffset(0, 0); - _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); + _board.addTile(x + y * _width, new Grass(x, y, Sprite.grass)); break; // Thêm balloon case '1': enemy = new Balloon(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board); _board.addCharacter(enemy); - _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); + _board.addTile(x + y * _width, new Grass(x, y, Sprite.grass)); agent = new MovingAgent(enemy, new AILow()); _board.addAgent(agent); break; @@ -131,7 +131,7 @@ public void createEntities() { case '2': enemy = new Oneal(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board); _board.addCharacter(enemy); - _board.addEntity(pos, new Grass(x, y, Sprite.grass)); + _board.addTile(pos, new Grass(x, y, Sprite.grass)); agent = new MovingAgent(enemy, new AILow()); _board.addAgent(agent); break; @@ -139,7 +139,7 @@ public void createEntities() { case '3': enemy = new Doll(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board); _board.addCharacter(enemy); - _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); + _board.addTile(x + y * _width, new Grass(x, y, Sprite.grass)); agent = new MovingAgent(enemy, new AIMedium(enemy, _board)); _board.addAgent(agent); break; @@ -150,7 +150,7 @@ public void createEntities() { new Grass(x, y, Sprite.grass), new BombItem(x, y, Sprite.powerup_bombs), new Brick(x, y, Sprite.brick)); - _board.addEntity(pos, layer); + _board.addTile(pos, layer); break; // Thêm SpeedItem case 's': @@ -158,7 +158,7 @@ public void createEntities() { new Grass(x, y, Sprite.grass), new SpeedItem(x, y, Sprite.powerup_speed), new Brick(x, y, Sprite.brick)); - _board.addEntity(pos, layer); + _board.addTile(pos, layer); break; // Thêm FlameItem case 'f': @@ -166,11 +166,11 @@ public void createEntities() { new Grass(x, y, Sprite.grass), new FlameItem(x, y, Sprite.powerup_flames), new Brick(x, y, Sprite.brick)); - _board.addEntity(pos, layer); + _board.addTile(pos, layer); break; default: - _board.addEntity(pos, new Grass(x, y, Sprite.grass)); + _board.addTile(pos, new Grass(x, y, Sprite.grass)); break; } From acc5cbb739c6fa881261eb35d63b45facce2c229 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Wed, 22 May 2024 13:16:23 +0000 Subject: [PATCH 44/66] split CanUseItem from Character --- src/uet/oop/bomberman/Board.java | 4 ++- .../oop/bomberman/base/IEntityManager.java | 2 +- .../bomberman/entities/character/Bomber.java | 36 +++++++++++++++++-- .../entities/character/CanUseItem.java | 12 +++++++ .../entities/character/Character.java | 23 +++--------- .../bomberman/entities/tile/item/Item.java | 5 +-- .../oop/bomberman/level/FileLevelLoader.java | 1 + 7 files changed, 58 insertions(+), 25 deletions(-) create mode 100644 src/uet/oop/bomberman/entities/character/CanUseItem.java diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 3923e6c..5a2dce7 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -10,6 +10,7 @@ import uet.oop.bomberman.entities.bomb.Bomb; import uet.oop.bomberman.entities.bomb.FlameSegment; import uet.oop.bomberman.entities.character.Bomber; +import uet.oop.bomberman.entities.character.CanUseItem; import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.character.action.Action; import uet.oop.bomberman.entities.character.action.ActionConstants; @@ -52,7 +53,8 @@ public class Board implements Copyable, IRender, IEntityManager, IMessageManager @Override public List getPlayerActiveItems() { - return getPlayer().getActiveItems().collect(Collectors.toList()); + if (!(getPlayer() instanceof CanUseItem)) return new ArrayList<>(); + return ((CanUseItem)getPlayer()).getActiveItems().collect(Collectors.toList()); } private int _screenToShow = -1; // 1:endgame, 2:changelevel, 3:paused diff --git a/src/uet/oop/bomberman/base/IEntityManager.java b/src/uet/oop/bomberman/base/IEntityManager.java index 226555b..73d7b96 100644 --- a/src/uet/oop/bomberman/base/IEntityManager.java +++ b/src/uet/oop/bomberman/base/IEntityManager.java @@ -3,7 +3,7 @@ import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Character; -public interface IEntityManager extends IActiveItemManager, IBombManager, ITileManager, ICharacterManager { +public interface IEntityManager extends IBombManager, ITileManager, ICharacterManager { public Entity getEntityAtExcluding(double x, double y, Character m); public default Entity getEntityAt(double x, double y) { diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index 8c93d40..f25110c 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import uet.oop.bomberman.Board; +import uet.oop.bomberman.base.IActiveItemManager; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.bomb.Bomb; @@ -17,21 +18,26 @@ import java.util.Iterator; import java.util.List; +import java.util.stream.Stream; + import uet.oop.bomberman.entities.tile.item.BombItem; import uet.oop.bomberman.entities.tile.item.FlameItem; import uet.oop.bomberman.entities.tile.item.Item; +import uet.oop.bomberman.entities.tile.item.SpeedItem; import uet.oop.bomberman.level.Coordinates; import uet.oop.bomberman.sound.Sound; -public class Bomber extends Character { +public class Bomber extends Character implements CanUseItem { private List _bombs; - public static List _items = new ArrayList();//xu li Item + private List activeItems = new ArrayList<>(); private final int baseBombLimit; protected int bombCooldown = 0; private final int baseBombRadius; + + private final IActiveItemManager activeItemManager; public int getBombCooldown() { return bombCooldown; @@ -39,13 +45,14 @@ public int getBombCooldown() { private Board _board; - public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRadius, IEntityManager entityManager, Board board) { + public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRadius, IEntityManager entityManager, IActiveItemManager activeItemManager, Board board) { super(x, y, baseSpeed, entityManager); this.baseBombLimit = baseBombLimit; this.baseBombRadius = baseBombRadius; this._board = board; _bombs = entityManager.getBombs(); _sprite = Sprite.player_right; + this.activeItemManager = activeItemManager; } @Override @@ -189,4 +196,27 @@ protected void performAction(Action action, boolean isDryRun) } } + @Override + public Stream getActiveItems() { + return activeItems.stream().filter(Item::isActive); + } + + @Override + public void addActiveItem(Item item) { + this.activeItems.add(item); + activeItemManager.addActiveItem(item); + } + + @Override + protected double getSpeedMultiplier() { + double speedMultiplier = 1; + for (Item item: activeItems) { + if (!item.isActive()) continue; + if (item instanceof SpeedItem) { + speedMultiplier += SpeedItem.SPEED_MULTIPLIER; + } + } + return speedMultiplier; + } + } diff --git a/src/uet/oop/bomberman/entities/character/CanUseItem.java b/src/uet/oop/bomberman/entities/character/CanUseItem.java new file mode 100644 index 0000000..0d1103a --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/CanUseItem.java @@ -0,0 +1,12 @@ +package uet.oop.bomberman.entities.character; + +import java.util.stream.Stream; + +import uet.oop.bomberman.entities.tile.item.Item; + +public interface CanUseItem { + + public Stream getActiveItems(); + public void addActiveItem(Item item); + +} \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index b945e24..fdc5b9d 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -58,8 +58,6 @@ public Waypoint(double moveX, double moveY, double moveDuration) { } } - private List activeItems = new ArrayList<>(); - public Character(int x, int y, double baseSpeed, IEntityManager entityManager) { _x = x; _y = y; @@ -251,24 +249,13 @@ public boolean isMoving() { return waypoints.size() > 0; } - public Stream getActiveItems() { - return activeItems.stream().filter(Item::isActive); - } - - public void addActiveItem(Item item) { - this.activeItems.add(item); - entityManager.addActiveItem(item); + public final double getSpeed() { + double speedMultiplier = getSpeedMultiplier(); + return speedMultiplier * this.baseSpeed; } - public double getSpeed() { - double speedMultiplier = 1; - for (Item item: activeItems) { - if (!item.isActive()) continue; - if (item instanceof SpeedItem) { - speedMultiplier += SpeedItem.SPEED_MULTIPLIER; - } - } - return speedMultiplier * this.baseSpeed; + protected double getSpeedMultiplier() { + return 1; } public abstract int getPoints(); diff --git a/src/uet/oop/bomberman/entities/tile/item/Item.java b/src/uet/oop/bomberman/entities/tile/item/Item.java index a028765..365bea5 100644 --- a/src/uet/oop/bomberman/entities/tile/item/Item.java +++ b/src/uet/oop/bomberman/entities/tile/item/Item.java @@ -2,6 +2,7 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.entities.Entity; +import uet.oop.bomberman.entities.character.CanUseItem; import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.tile.NonDestroyableTile; import uet.oop.bomberman.graphics.Sprite; @@ -24,8 +25,8 @@ public Item(int x, int y, Sprite sprite) { @Override public boolean collide(Entity e) { if (isRemoved()) return false; - if (e instanceof Character && ((Character)e).isPlayer()) { - Character player = (Character) e; + if (e instanceof CanUseItem) { + CanUseItem player = (CanUseItem) e; Sound.play("Item"); handleItemActive(); _active = true; diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 4af5659..773e6a3 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -111,6 +111,7 @@ public void createEntities() { Game.BOMBRATE, Game.BOMBRADIUS, _board, + _board, _board ); _board.addCharacter(bomber); From be1af54b88cc3a8c381af7798042d77b5a04ec51 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Wed, 22 May 2024 14:39:07 +0000 Subject: [PATCH 45/66] reduce responsibility for Board by splitting into more Manager classes --- src/uet/oop/bomberman/Board.java | 231 ++---------------- src/uet/oop/bomberman/base/IBombManager.java | 3 +- .../oop/bomberman/base/ICharacterManager.java | 24 +- .../oop/bomberman/base/IEntityManager.java | 8 +- .../oop/bomberman/base/IGameInfoManager.java | 2 +- src/uet/oop/bomberman/base/ITileManager.java | 3 +- src/uet/oop/bomberman/entities/bomb/Bomb.java | 2 +- .../bomberman/entities/character/Bomber.java | 37 ++- .../entities/character/Character.java | 5 +- .../entities/character/enemy/Balloon.java | 6 +- .../entities/character/enemy/Doll.java | 6 +- .../entities/character/enemy/Kondoria.java | 6 +- .../entities/character/enemy/Minvo.java | 5 +- .../entities/character/enemy/Oneal.java | 6 +- .../entities/character/enemy/ai/AIMedium.java | 8 +- .../oop/bomberman/entities/tile/Portal.java | 2 +- .../oop/bomberman/level/FileLevelLoader.java | 105 ++++---- .../oop/bomberman/manager/BombManager.java | 72 ++++++ .../bomberman/manager/CharacterManager.java | 98 ++++++++ .../oop/bomberman/manager/EntityManager.java | 101 ++++++++ .../oop/bomberman/manager/TileManager.java | 52 ++++ 21 files changed, 464 insertions(+), 318 deletions(-) create mode 100644 src/uet/oop/bomberman/manager/BombManager.java create mode 100644 src/uet/oop/bomberman/manager/CharacterManager.java create mode 100644 src/uet/oop/bomberman/manager/EntityManager.java create mode 100644 src/uet/oop/bomberman/manager/TileManager.java diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 5a2dce7..3241c88 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -4,11 +4,7 @@ import uet.oop.bomberman.base.Copyable; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.base.IGameInfoManager; -import uet.oop.bomberman.base.IMessageManager; -import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.Message; -import uet.oop.bomberman.entities.bomb.Bomb; -import uet.oop.bomberman.entities.bomb.FlameSegment; import uet.oop.bomberman.entities.character.Bomber; import uet.oop.bomberman.entities.character.CanUseItem; import uet.oop.bomberman.entities.character.Character; @@ -16,7 +12,6 @@ import uet.oop.bomberman.entities.character.action.ActionConstants; import uet.oop.bomberman.entities.character.action.ActionMove; import uet.oop.bomberman.entities.character.exceptions.CharacterActionException; -import uet.oop.bomberman.entities.tile.Tile; import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.exceptions.LoadLevelException; import uet.oop.bomberman.graphics.IRender; @@ -24,7 +19,7 @@ import uet.oop.bomberman.input.Keyboard; import uet.oop.bomberman.level.FileLevelLoader; import uet.oop.bomberman.level.LevelLoader; -import uet.oop.bomberman.sound.Sound; +import uet.oop.bomberman.manager.EntityManager; import uet.oop.bomberman.utils.Global; import java.awt.*; @@ -36,25 +31,23 @@ /** * Quản lý thao tác điều khiển, load level, render các màn hình của game */ -public class Board implements Copyable, IRender, IEntityManager, IMessageManager, IGameInfoManager { +public class Board implements Copyable, IRender, IGameInfoManager { protected LevelLoader _levelLoader; protected Game _game; protected Keyboard _input; protected Screen _screen; - public Tile[] tiles; - public List _characters = new ArrayList<>(); - protected List _bombs = new ArrayList<>(); private List _messages = new ArrayList<>(); private List _activeItems = new ArrayList<>(); private List agents = new ArrayList<>(); - private Character player; + private EntityManager entityManager; @Override public List getPlayerActiveItems() { - if (!(getPlayer() instanceof CanUseItem)) return new ArrayList<>(); - return ((CanUseItem)getPlayer()).getActiveItems().collect(Collectors.toList()); + Character player = entityManager.getPlayer(); + if (!(player instanceof CanUseItem)) return new ArrayList<>(); + return ((CanUseItem)player).getActiveItems().collect(Collectors.toList()); } private int _screenToShow = -1; // 1:endgame, 2:changelevel, 3:paused @@ -71,7 +64,7 @@ public Board(Game game, Keyboard input, Screen screen) { } private void snapCameraToPlayer() { - int xScroll = Screen.calculateXOffset(this, getPlayer()); + int xScroll = Screen.calculateXOffset(this, entityManager.getPlayer()); Screen.setOffset(xScroll, 0); } @@ -80,9 +73,7 @@ public void update() { if (_game.isPaused()) return; - updateEntities(); - updateCharacters(); - updateBombs(); + entityManager.update(); updateMessages(); updateActiveItems(); detectEndGame(); @@ -91,12 +82,6 @@ public void update() { snapCameraToPlayer(); processPlayerInput(); - - for (int i = 0; i < _characters.size(); i++) { - Character a = _characters.get(i); - if (a.isRemoved()) - _characters.remove(i); - } } public void addAgent(Agent agent) { @@ -113,7 +98,7 @@ private void processAgentAction() { } private void processPlayerInput() { - Character player = getPlayer(); + Character player = entityManager.getPlayer(); if (!player.isAlive()) return; processPlayerInputMove(player); @@ -146,22 +131,7 @@ private void processPlayerInputMove(Character player) { public void render(Screen screen) { if (_game.isPaused()) return; - - // only render the visible part of screen - int x0 = Screen.xOffset >> 4; // tile precision, -> left X - int x1 = (Screen.xOffset + screen.getWidth() + Game.TILES_SIZE) / Game.TILES_SIZE; // -> right X - int y0 = Screen.yOffset >> 4; - int y1 = (Screen.yOffset + screen.getHeight()) / Game.TILES_SIZE; // render one tile plus to fix black margins - - for (int y = y0; y < y1; y++) { - for (int x = x0; x < x1; x++) { - tiles[x + y * _levelLoader.getWidth()].render(screen); - } - } - - renderBombs(screen); - renderCharacter(screen); - + entityManager.render(screen); } public void nextLevel() { @@ -173,13 +143,10 @@ public void loadLevel(int level) { _screenToShow = 2; _game.resetScreenDelay(); _game.pause(); - _characters.clear(); - _bombs.clear(); - _messages.clear(); - + try { _levelLoader = new FileLevelLoader(this, level); - tiles = new Tile[_levelLoader.getHeight() * _levelLoader.getWidth()]; + entityManager = new EntityManager(_levelLoader, this); _levelLoader.createEntities(); } catch (LoadLevelException e) { @@ -198,12 +165,6 @@ public void endGame() { _game.pause(); } - @Override - public boolean isEnemyCleared() { - return !_characters.stream() - .anyMatch(character -> character != getPlayer()); - } - public void drawScreen(Graphics g) { switch (_screenToShow) { case 1: @@ -218,136 +179,16 @@ public void drawScreen(Graphics g) { } } - @Override - public Entity getEntityAtExcluding(double x, double y, Character m) { - - Entity res = null; - - if (x < 0) return null; - if (y < 0) return null; - if (x >= _levelLoader.getWidth()) return null; - if (y >= _levelLoader.getHeight()) return null; - - res = getFlameSegmentAt((int) x, (int) y); - if (res != null) - return res; - - res = getBombAt(x, y); - if (res != null) - return res; - - res = getCharacterAtExcluding((int) x, (int) y, m); - if (res != null) - return res; - - res = getTileAt((int) x, (int) y); - - return res; - } - - @Override - public List getBombs() { - return _bombs; - } - - @Override - public Bomb getBombAt(double x, double y) { - Iterator bs = _bombs.iterator(); - Bomb b; - while (bs.hasNext()) { - b = bs.next(); - if (b.getX() == (int) x && b.getY() == (int) y) - return b; - } - - return null; - } - - @Override - public Character getPlayer() { - return this.player; - } - - @Override - public Character getCharacterAtExcluding(int x, int y, Character a) { - Iterator itr = _characters.iterator(); - - Character cur; - while (itr.hasNext()) { - cur = itr.next(); - if (cur == a) { - continue; - } - - if (cur.getXTile() == x && cur.getYTile() == y) { - return cur; - } - - } - - return null; - } - - @Override - public FlameSegment getFlameSegmentAt(int x, int y) { - Iterator bs = _bombs.iterator(); - Bomb b; - while (bs.hasNext()) { - b = bs.next(); - - FlameSegment e = b.flameAt(x, y); - if (e != null) { - return e; - } - } - - return null; - } - - @Override - public Tile getTileAt(double x, double y) { - return tiles[(int) x + (int) y * _levelLoader.getWidth()]; - } - @Override public void addActiveItem(Item item) { _activeItems.add(item); } - @Override - public void addTile(int pos, Tile e) { - tiles[pos] = e; - } - - @Override - public void addCharacter(Character e) { - _characters.add(e); - } - - @Override - public void addBomb(Bomb e) { - _bombs.add(e); - } - @Override public void addMessage(Message e) { _messages.add(e); } - protected void renderCharacter(Screen screen) { - Iterator itr = _characters.iterator(); - - while (itr.hasNext()) - itr.next().render(screen); - } - - protected void renderBombs(Screen screen) { - Iterator itr = _bombs.iterator(); - - while (itr.hasNext()) - itr.next().render(screen); - } - public void renderMessages(Graphics g) { Message m; for (int i = 0; i < _messages.size(); i++) { @@ -359,32 +200,6 @@ public void renderMessages(Graphics g) { } } - protected void updateEntities() { - if (_game.isPaused()) - return; - for (int i = 0; i < tiles.length; i++) { - tiles[i].update(); - } - } - - protected void updateCharacters() { - if (_game.isPaused()) - return; - Iterator itr = _characters.iterator(); - - while (itr.hasNext() && !_game.isPaused()) - itr.next().update(); - } - - protected void updateBombs() { - if (_game.isPaused()) - return; - Iterator itr = _bombs.iterator(); - - while (itr.hasNext()) - itr.next().update(); - } - protected void updateActiveItems() { if (_game.isPaused()) return; @@ -461,26 +276,8 @@ public int getHeight() { return _levelLoader.getHeight(); } - @Override - public void setPlayer(Character character) { - this.player = character; - } - - @Override - public void handleOnDeath(Character character, Character killer) { - if (character.isPlayer()) { - // TODO: handle player death - Sound.play("endgame3"); - } else { - // TODO: document how to calculate message coord - double messageX = (character.getX() * Game.SCALE) + (character.getSprite().SIZE / 2 * Game.SCALE); - double messageY = (character.getY() * Game.SCALE) - (character.getSprite().SIZE / 2 * Game.SCALE); - int points = character.getPoints(); - addPoints(points); - Message msg = new Message("+" + points, messageX, messageY, 2, Color.white, 14); - addMessage(msg); - Sound.play("AA126_11"); - } + public IEntityManager getEntityManager() { + return entityManager; } @Override diff --git a/src/uet/oop/bomberman/base/IBombManager.java b/src/uet/oop/bomberman/base/IBombManager.java index 676ddae..24e321d 100644 --- a/src/uet/oop/bomberman/base/IBombManager.java +++ b/src/uet/oop/bomberman/base/IBombManager.java @@ -4,8 +4,9 @@ import uet.oop.bomberman.entities.bomb.Bomb; import uet.oop.bomberman.entities.bomb.FlameSegment; +import uet.oop.bomberman.graphics.IRender; -public interface IBombManager { +public interface IBombManager extends IRender { public List getBombs(); public Bomb getBombAt(double x, double y); diff --git a/src/uet/oop/bomberman/base/ICharacterManager.java b/src/uet/oop/bomberman/base/ICharacterManager.java index 57e5a37..6e5e74e 100644 --- a/src/uet/oop/bomberman/base/ICharacterManager.java +++ b/src/uet/oop/bomberman/base/ICharacterManager.java @@ -1,17 +1,17 @@ package uet.oop.bomberman.base; -import uet.oop.bomberman.entities.character.Character; - -public interface ICharacterManager { - - Character getCharacterAtExcluding(int x, int y, Character a); - - void addCharacter(Character e); +import java.util.List; - void setPlayer(Character character); - - Character getPlayer(); - - void handleOnDeath(Character character, Character killer); +import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.graphics.IRender; + +public interface ICharacterManager extends IRender { + + public List getCharacters(); + public Character getCharacterAtExcluding(int x, int y, Character a); + public void addCharacter(Character e); + public void setPlayer(Character character); + public Character getPlayer(); + public void handleOnDeath(Character character, Character killer); } \ No newline at end of file diff --git a/src/uet/oop/bomberman/base/IEntityManager.java b/src/uet/oop/bomberman/base/IEntityManager.java index 73d7b96..af5861f 100644 --- a/src/uet/oop/bomberman/base/IEntityManager.java +++ b/src/uet/oop/bomberman/base/IEntityManager.java @@ -2,8 +2,9 @@ import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.graphics.IRender; -public interface IEntityManager extends IBombManager, ITileManager, ICharacterManager { +public interface IEntityManager extends IRender { public Entity getEntityAtExcluding(double x, double y, Character m); public default Entity getEntityAt(double x, double y) { @@ -11,5 +12,10 @@ public default Entity getEntityAt(double x, double y) { }; public boolean isEnemyCleared(); + public Character getPlayer(); + + public ITileManager getTileManager(); + public ICharacterManager getCharacterManager(); + public IBombManager getBombManager(); } \ No newline at end of file diff --git a/src/uet/oop/bomberman/base/IGameInfoManager.java b/src/uet/oop/bomberman/base/IGameInfoManager.java index ce0b57b..f4958ea 100644 --- a/src/uet/oop/bomberman/base/IGameInfoManager.java +++ b/src/uet/oop/bomberman/base/IGameInfoManager.java @@ -1,6 +1,6 @@ package uet.oop.bomberman.base; -public interface IGameInfoManager extends IActiveItemManager { +public interface IGameInfoManager extends IActiveItemManager, IMessageManager { public int subtractTime(); public int getTime(); diff --git a/src/uet/oop/bomberman/base/ITileManager.java b/src/uet/oop/bomberman/base/ITileManager.java index 1b46ec3..5b74d39 100644 --- a/src/uet/oop/bomberman/base/ITileManager.java +++ b/src/uet/oop/bomberman/base/ITileManager.java @@ -1,8 +1,9 @@ package uet.oop.bomberman.base; import uet.oop.bomberman.entities.tile.Tile; +import uet.oop.bomberman.graphics.IRender; -public interface ITileManager { +public interface ITileManager extends IRender { public Tile getTileAt(double x, double y); public void addTile(int pos, Tile e); diff --git a/src/uet/oop/bomberman/entities/bomb/Bomb.java b/src/uet/oop/bomberman/entities/bomb/Bomb.java index 8863a87..54bc39b 100644 --- a/src/uet/oop/bomberman/entities/bomb/Bomb.java +++ b/src/uet/oop/bomberman/entities/bomb/Bomb.java @@ -82,7 +82,7 @@ protected void explode() {//nổ _exploded = true; _allowedToPassThru = true; // TODO: xử lý khi Character đứng tại vị trí Bomb - Character x = _board.getCharacterAtExcluding((int)_x, (int)_y, null); + Character x = _board.getCharacterManager().getCharacterAtExcluding((int)_x, (int)_y, null); if(x != null){ x.handleOnDeath(); } diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index f25110c..af20df3 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import uet.oop.bomberman.Board; import uet.oop.bomberman.base.IActiveItemManager; +import uet.oop.bomberman.base.IBombManager; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.bomb.Bomb; @@ -18,6 +19,7 @@ import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; import java.util.stream.Stream; import uet.oop.bomberman.entities.tile.item.BombItem; @@ -29,7 +31,7 @@ public class Bomber extends Character implements CanUseItem { - private List _bombs; + private List _bombs = new ArrayList<>(); private List activeItems = new ArrayList<>(); private final int baseBombLimit; @@ -37,22 +39,19 @@ public class Bomber extends Character implements CanUseItem { private final int baseBombRadius; - private final IActiveItemManager activeItemManager; - - public int getBombCooldown() { - return bombCooldown; - } - private Board _board; - public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRadius, IEntityManager entityManager, IActiveItemManager activeItemManager, Board board) { + private final IActiveItemManager activeItemManager; + private final IBombManager bombManager; + + public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRadius, IEntityManager entityManager, IActiveItemManager activeItemManager, IBombManager bombManager, Board board) { super(x, y, baseSpeed, entityManager); this.baseBombLimit = baseBombLimit; this.baseBombRadius = baseBombRadius; this._board = board; - _bombs = entityManager.getBombs(); _sprite = Sprite.player_right; this.activeItemManager = activeItemManager; + this.bombManager = bombManager; } @Override @@ -90,6 +89,10 @@ public int getBombRadius() { return this.baseBombRadius + bombRadiusBonus; } + public int getBombCooldown() { + return bombCooldown; + } + public boolean placeBomb() { if(getBombRemainingQuota() > 0 && bombCooldown < 0) { @@ -107,21 +110,15 @@ public boolean placeBomb() { public void placeBomb(int x, int y) { // TODO: thực hiện tạo đối tượng bom, đặt vào vị trí (x, y) Bomb b = new Bomb(x, y, getBombRadius(), entityManager); - entityManager.addBomb(b); + this._bombs.add(b); + bombManager.addBomb(b); Sound.play("BOM_SET"); } private void clearExpiredBombs() { - Iterator bs = _bombs.iterator(); - - Bomb b; - while (bs.hasNext()) { - b = bs.next(); - if (b.isRemoved()) { - bs.remove(); - } - } - + _bombs = _bombs.stream() + .filter(bomb -> !bomb.isRemoved()) + .collect(Collectors.toList()); } @Override diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index fdc5b9d..bb3f4b1 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -5,7 +5,6 @@ import java.util.List; import java.util.Queue; import java.util.stream.Collectors; -import java.util.stream.Stream; import uet.oop.bomberman.Game; import uet.oop.bomberman.base.IEntityManager; @@ -20,8 +19,6 @@ import uet.oop.bomberman.entities.character.exceptions.CannotPerformActionException; import uet.oop.bomberman.entities.character.exceptions.CharacterActionException; import uet.oop.bomberman.entities.character.exceptions.InvalidActionException; -import uet.oop.bomberman.entities.tile.item.Item; -import uet.oop.bomberman.entities.tile.item.SpeedItem; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.level.Coordinates; @@ -203,7 +200,7 @@ public final void handleOnDeath() { if(!_alive) return; _alive = false; // TODO: determine killer - entityManager.handleOnDeath(this, null); + entityManager.getCharacterManager().handleOnDeath(this, null); } /** diff --git a/src/uet/oop/bomberman/entities/character/enemy/Balloon.java b/src/uet/oop/bomberman/entities/character/enemy/Balloon.java index 6c1d946..9b74e2a 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Balloon.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Balloon.java @@ -1,14 +1,14 @@ package uet.oop.bomberman.entities.character.enemy; -import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.graphics.Sprite; public class Balloon extends Enemy { - public Balloon(int x, int y, Board board) { - super(x, y, board, Sprite.balloom_dead, Game.BOMBERSPEED / 2, 100); + public Balloon(int x, int y, IEntityManager entityManager) { + super(x, y, entityManager, Sprite.balloom_dead, Game.BOMBERSPEED / 2, 100); _sprite = Sprite.balloom_left1; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Doll.java b/src/uet/oop/bomberman/entities/character/enemy/Doll.java index 6a7ea72..ab107d9 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Doll.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Doll.java @@ -5,8 +5,8 @@ */ package uet.oop.bomberman.entities.character.enemy; -import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.graphics.Sprite; /** @@ -15,8 +15,8 @@ */ public class Doll extends Enemy{ - public Doll(int x, int y, Board board) { - super(x, y, board, Sprite.balloom_dead, Game.BOMBERSPEED, 100); + public Doll(int x, int y, IEntityManager entityManager) { + super(x, y, entityManager, Sprite.balloom_dead, Game.BOMBERSPEED, 100); _sprite = Sprite.balloom_left1; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java index 143df1e..22fc86b 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java @@ -1,12 +1,12 @@ package uet.oop.bomberman.entities.character.enemy; import uet.oop.bomberman.Game; -import uet.oop.bomberman.Board; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.graphics.Sprite; public class Kondoria extends Enemy { - public Kondoria(int x, int y, Board board) { - super(x, y, board, Sprite.balloom_dead, Game.BOMBERSPEED / 4, 1000); + public Kondoria(int x, int y, IEntityManager entityManager) { + super(x, y, entityManager, Sprite.balloom_dead, Game.BOMBERSPEED / 4, 1000); _sprite = Sprite.kondoria_right1; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java index c1c1704..f86b34d 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java @@ -2,11 +2,12 @@ import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.graphics.Sprite; public class Minvo extends Enemy { - public Minvo(int x, int y, Board board) { - super(x, y, board, Sprite.minvo_dead, Game.BOMBERSPEED * 1.5, 800); + public Minvo(int x, int y, IEntityManager entityManager) { + super(x, y, entityManager, Sprite.minvo_dead, Game.BOMBERSPEED * 1.5, 800); _sprite = Sprite.minvo_right1; } diff --git a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java index be74bea..90af4b5 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java @@ -1,13 +1,13 @@ package uet.oop.bomberman.entities.character.enemy; -import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.graphics.Sprite; public class Oneal extends Enemy { //private Random random = new Random(); - public Oneal(int x, int y, Board board) { - super(x, y, board, Sprite.balloom_dead, Game.BOMBERSPEED, 100); + public Oneal(int x, int y, IEntityManager entityManager) { + super(x, y, entityManager, Sprite.balloom_dead, Game.BOMBERSPEED, 100); _sprite = Sprite.balloom_left1; } diff --git a/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java b/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java index ef004d0..9ad759f 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java +++ b/src/uet/oop/bomberman/entities/character/enemy/ai/AIMedium.java @@ -6,11 +6,11 @@ public class AIMedium extends AI { private final Character character; - private final ICharacterManager entityManager; + private final ICharacterManager characterManager; public AIMedium(Character character, ICharacterManager entityManager) { this.character = character; - this.entityManager = entityManager; + this.characterManager = entityManager; } @Override @@ -36,7 +36,7 @@ public int calculateDirection() { } protected int calculateColDirection() { - Character player = entityManager.getPlayer(); + Character player = characterManager.getPlayer(); if(player.getXTile() < character.getXTile()) return 3; @@ -47,7 +47,7 @@ else if(player.getXTile() > character.getXTile()) } protected int calculateRowDirection() { - Character player = entityManager.getPlayer(); + Character player = characterManager.getPlayer(); if(player.getYTile() < character.getYTile()) return 0; diff --git a/src/uet/oop/bomberman/entities/tile/Portal.java b/src/uet/oop/bomberman/entities/tile/Portal.java index 6a5d13e..8dfffd6 100644 --- a/src/uet/oop/bomberman/entities/tile/Portal.java +++ b/src/uet/oop/bomberman/entities/tile/Portal.java @@ -35,7 +35,7 @@ public boolean collide(Entity e) {// xu li khi 2 entity va cham public boolean canBePassedThroughBy(Entity other) { if (other instanceof Character && ((Character)other).isPlayer()) { - if (!_board.isEnemyCleared()) + if (!_board.getEntityManager().isEnemyCleared()) return false; if (other.getXTile() == getX() && other.getYTile() == getY()) { diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 773e6a3..4716c70 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -73,6 +73,7 @@ public void loadLevel(int level) { public void createEntities() { Enemy enemy; Agent agent; + LayeredEntity layeredEntity; for (int y = 0; y < getHeight(); y++) { for (int x = 0; x < getWidth(); x++) { int pos = x + y * getWidth(); @@ -80,27 +81,30 @@ public void createEntities() { switch (c) { // Thêm grass case ' ': - _board.addTile(pos, new Grass(x, y, Sprite.grass)); + _board.getEntityManager().getTileManager().addTile(pos, new Grass(x, y, Sprite.grass)); break; // Thêm Wall case '#': - _board.addTile(pos, new Wall(x, y, Sprite.wall)); + _board.getEntityManager().getTileManager().addTile(pos, new Wall(x, y, Sprite.wall)); break; // Thêm Portal case 'x': - _board.addTile(pos, new LayeredEntity(x, y, - new Grass(x, y, Sprite.grass), - new Portal(x, y, _board, Sprite.portal), - new Brick(x, y, Sprite.brick))); + layeredEntity = new LayeredEntity( + x, y, + new Grass(x, y, Sprite.grass), + new Portal(x, y, _board, Sprite.portal), + new Brick(x, y, Sprite.brick) + ); + _board.getEntityManager().getTileManager().addTile(pos, layeredEntity); break; // Thêm brick case '*': - _board.addTile(x + y * _width, - new LayeredEntity(x, y, - new Grass(x, y, Sprite.grass), - new Brick(x, y, Sprite.brick) - ) + layeredEntity = new LayeredEntity( + x, y, + new Grass(x, y, Sprite.grass), + new Brick(x, y, Sprite.brick) ); + _board.getEntityManager().getTileManager().addTile(x + y * _width, layeredEntity); break; // Thêm Bomber player case 'p': @@ -110,68 +114,87 @@ public void createEntities() { Game.BOMBERSPEED, Game.BOMBRATE, Game.BOMBRADIUS, + _board.getEntityManager(), _board, - _board, + _board.getEntityManager().getBombManager(), _board ); - _board.addCharacter(bomber); - _board.setPlayer(bomber); + _board.getEntityManager().getCharacterManager().addCharacter(bomber); + _board.getEntityManager().getCharacterManager().setPlayer(bomber); Screen.setOffset(0, 0); - _board.addTile(x + y * _width, new Grass(x, y, Sprite.grass)); + _board.getEntityManager().getTileManager().addTile(x + y * _width, new Grass(x, y, Sprite.grass)); break; // Thêm balloon case '1': - enemy = new Balloon(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board); - _board.addCharacter(enemy); - _board.addTile(x + y * _width, new Grass(x, y, Sprite.grass)); + enemy = new Balloon( + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + _board.getEntityManager() + ); + _board.getEntityManager().getCharacterManager().addCharacter(enemy); + _board.getEntityManager().getTileManager().addTile(x + y * _width, new Grass(x, y, Sprite.grass)); agent = new MovingAgent(enemy, new AILow()); _board.addAgent(agent); break; // Thêm oneal case '2': - enemy = new Oneal(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board); - _board.addCharacter(enemy); - _board.addTile(pos, new Grass(x, y, Sprite.grass)); + enemy = new Oneal( + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + _board.getEntityManager() + ); + _board.getEntityManager().getCharacterManager().addCharacter(enemy); + _board.getEntityManager().getTileManager().addTile(pos, new Grass(x, y, Sprite.grass)); agent = new MovingAgent(enemy, new AILow()); _board.addAgent(agent); break; // Thêm doll case '3': - enemy = new Doll(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board); - _board.addCharacter(enemy); - _board.addTile(x + y * _width, new Grass(x, y, Sprite.grass)); - agent = new MovingAgent(enemy, new AIMedium(enemy, _board)); + enemy = new Doll( + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + _board.getEntityManager() + ); + _board.getEntityManager().getCharacterManager().addCharacter(enemy); + _board.getEntityManager().getTileManager().addTile(x + y * _width, new Grass(x, y, Sprite.grass)); + agent = new MovingAgent(enemy, new AIMedium(enemy, _board.getEntityManager().getCharacterManager())); _board.addAgent(agent); break; // Thêm oneal // Thêm BomItem case 'b': - LayeredEntity layer = new LayeredEntity(x, y, - new Grass(x, y, Sprite.grass), - new BombItem(x, y, Sprite.powerup_bombs), - new Brick(x, y, Sprite.brick)); - _board.addTile(pos, layer); + layeredEntity = new LayeredEntity( + x, y, + new Grass(x, y, Sprite.grass), + new BombItem(x, y, Sprite.powerup_bombs), + new Brick(x, y, Sprite.brick) + ); + _board.getEntityManager().getTileManager().addTile(pos, layeredEntity); break; // Thêm SpeedItem case 's': - layer = new LayeredEntity(x, y, - new Grass(x, y, Sprite.grass), - new SpeedItem(x, y, Sprite.powerup_speed), - new Brick(x, y, Sprite.brick)); - _board.addTile(pos, layer); + layeredEntity = new LayeredEntity( + x, y, + new Grass(x, y, Sprite.grass), + new SpeedItem(x, y, Sprite.powerup_speed), + new Brick(x, y, Sprite.brick) + ); + _board.getEntityManager().getTileManager().addTile(pos, layeredEntity); break; // Thêm FlameItem case 'f': - layer = new LayeredEntity(x, y, - new Grass(x, y, Sprite.grass), - new FlameItem(x, y, Sprite.powerup_flames), - new Brick(x, y, Sprite.brick)); - _board.addTile(pos, layer); + layeredEntity = new LayeredEntity( + x, y, + new Grass(x, y, Sprite.grass), + new FlameItem(x, y, Sprite.powerup_flames), + new Brick(x, y, Sprite.brick) + ); + _board.getEntityManager().getTileManager().addTile(pos, layeredEntity); break; default: - _board.addTile(pos, new Grass(x, y, Sprite.grass)); + _board.getEntityManager().getTileManager().addTile(pos, new Grass(x, y, Sprite.grass)); break; } diff --git a/src/uet/oop/bomberman/manager/BombManager.java b/src/uet/oop/bomberman/manager/BombManager.java new file mode 100644 index 0000000..096b63e --- /dev/null +++ b/src/uet/oop/bomberman/manager/BombManager.java @@ -0,0 +1,72 @@ +package uet.oop.bomberman.manager; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; + +import uet.oop.bomberman.base.IBombManager; +import uet.oop.bomberman.entities.bomb.Bomb; +import uet.oop.bomberman.entities.bomb.FlameSegment; +import uet.oop.bomberman.graphics.Screen; + +public class BombManager implements IBombManager { + + private List bombs = new ArrayList<>(); + + public BombManager() { + } + + @Override + public void addBomb(Bomb e) { + bombs.add(e); + } + + @Override + public List getBombs() { + return bombs; + } + + @Override + public Bomb getBombAt(double x, double y) { + Iterator bs = bombs.iterator(); + Bomb b; + while (bs.hasNext()) { + b = bs.next(); + if (b.getX() == (int) x && b.getY() == (int) y) + return b; + } + + return null; + } + + @Override + public FlameSegment getFlameSegmentAt(int x, int y) { + Iterator bs = bombs.iterator(); + Bomb b; + while (bs.hasNext()) { + b = bs.next(); + + FlameSegment e = b.flameAt(x, y); + if (e != null) { + return e; + } + } + + return null; + } + + @Override + public void update() { + bombs.forEach(Bomb::update); + bombs = bombs.stream() + .filter(bomb -> !bomb.isRemoved()) + .collect(Collectors.toList()); + } + + @Override + public void render(Screen screen) { + bombs.forEach(bomb -> bomb.render(screen)); + } + +} diff --git a/src/uet/oop/bomberman/manager/CharacterManager.java b/src/uet/oop/bomberman/manager/CharacterManager.java new file mode 100644 index 0000000..3d5bf6b --- /dev/null +++ b/src/uet/oop/bomberman/manager/CharacterManager.java @@ -0,0 +1,98 @@ +package uet.oop.bomberman.manager; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; + +import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.ICharacterManager; +import uet.oop.bomberman.base.IGameInfoManager; +import uet.oop.bomberman.entities.Message; +import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.graphics.Screen; +import uet.oop.bomberman.sound.Sound; + +public class CharacterManager implements ICharacterManager { + + private List characters = new ArrayList<>(); + private Character player; + + private final IGameInfoManager gameInfoManager; + + public CharacterManager(IGameInfoManager gameInfoManager) { + this.gameInfoManager = gameInfoManager; + } + + @Override + public Character getCharacterAtExcluding(int x, int y, Character a) { + Iterator itr = characters.iterator(); + + Character cur; + while (itr.hasNext()) { + cur = itr.next(); + if (cur == a) { + continue; + } + + if (cur.getXTile() == x && cur.getYTile() == y) { + return cur; + } + + } + + return null; + } + + @Override + public void addCharacter(Character e) { + characters.add(e); + } + + @Override + public void setPlayer(Character character) { + this.player = character; + } + + @Override + public Character getPlayer() { + return this.player; + } + + @Override + public void handleOnDeath(Character character, Character killer) { + if (character.isPlayer()) { + // TODO: handle player death + Sound.play("endgame3"); + } else { + // TODO: document how to calculate message coord + double messageX = (character.getX() * Game.SCALE) + (character.getSprite().SIZE / 2 * Game.SCALE); + double messageY = (character.getY() * Game.SCALE) - (character.getSprite().SIZE / 2 * Game.SCALE); + int points = character.getPoints(); + gameInfoManager.addPoints(points); + Message msg = new Message("+" + points, messageX, messageY, 2, Color.white, 14); + gameInfoManager.addMessage(msg); + Sound.play("AA126_11"); + } + } + + @Override + public void update() { + characters.forEach(Character::update); + characters = characters.stream() + .filter(character -> !character.isRemoved()) + .collect(Collectors.toList()); + } + + @Override + public void render(Screen screen) { + characters.forEach(character -> character.render(screen)); + } + + @Override + public List getCharacters() { + return characters; + } + +} diff --git a/src/uet/oop/bomberman/manager/EntityManager.java b/src/uet/oop/bomberman/manager/EntityManager.java new file mode 100644 index 0000000..31c041c --- /dev/null +++ b/src/uet/oop/bomberman/manager/EntityManager.java @@ -0,0 +1,101 @@ +package uet.oop.bomberman.manager; + +import uet.oop.bomberman.base.IBombManager; +import uet.oop.bomberman.base.ICharacterManager; +import uet.oop.bomberman.base.IEntityManager; +import uet.oop.bomberman.base.IGameInfoManager; +import uet.oop.bomberman.base.ITileManager; +import uet.oop.bomberman.entities.Entity; +import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.graphics.Screen; +import uet.oop.bomberman.level.LevelLoader; + +public class EntityManager implements IEntityManager { + + private ITileManager tileManager; + private ICharacterManager characterManager; + private IBombManager bombManager; + + private LevelLoader levelLoader; + + public EntityManager(LevelLoader levelLoader, IGameInfoManager gameInfoManager) { + this.levelLoader = levelLoader; + this.tileManager = new TileManager(levelLoader.getWidth(), levelLoader.getHeight()); + this.characterManager = new CharacterManager(gameInfoManager); + this.bombManager = new BombManager(); + } + + + @Override + public Entity getEntityAtExcluding(double x, double y, Character m) { + + Entity res = null; + + if (x < 0) return null; + if (y < 0) return null; + if (x >= levelLoader.getWidth()) return null; + if (y >= levelLoader.getHeight()) return null; + + res = bombManager.getFlameSegmentAt((int) x, (int) y); + if (res != null) + return res; + + res = bombManager.getBombAt(x, y); + if (res != null) + return res; + + res = characterManager.getCharacterAtExcluding((int) x, (int) y, m); + if (res != null) + return res; + + res = tileManager.getTileAt((int) x, (int) y); + + return res; + } + + @Override + public boolean isEnemyCleared() { + return !characterManager.getCharacters().stream() + .anyMatch(character -> character != characterManager.getPlayer()); + } + + + @Override + public void update() { + tileManager.update(); + characterManager.update(); + bombManager.update(); + } + + + @Override + public void render(Screen screen) { + tileManager.render(screen); + characterManager.render(screen); + bombManager.render(screen); + } + + @Override + public Character getPlayer() { + return characterManager.getPlayer(); + } + + + @Override + public ITileManager getTileManager() { + return tileManager; + } + + + @Override + public ICharacterManager getCharacterManager() { + return characterManager; + } + + + @Override + public IBombManager getBombManager() { + return bombManager; + } + +} diff --git a/src/uet/oop/bomberman/manager/TileManager.java b/src/uet/oop/bomberman/manager/TileManager.java new file mode 100644 index 0000000..5867774 --- /dev/null +++ b/src/uet/oop/bomberman/manager/TileManager.java @@ -0,0 +1,52 @@ +package uet.oop.bomberman.manager; + +import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.ITileManager; +import uet.oop.bomberman.entities.tile.Tile; +import uet.oop.bomberman.graphics.Screen; + +public class TileManager implements ITileManager { + + private int width; + @SuppressWarnings("unused") private int height; + private final Tile[] tiles; + + public TileManager(int width, int height) { + this.width = width; + this.height = height; + tiles = new Tile[width * height]; + } + + @Override + public Tile getTileAt(double x, double y) { + return tiles[(int) x + (int) y * width]; + } + + @Override + public void addTile(int pos, Tile e) { + tiles[pos] = e; + } + + @Override + public void update() { + for (Tile tile: tiles) { + tile.update(); + } + } + + @Override + public void render(Screen screen) { + // only render the visible part of screen + int x0 = Screen.xOffset / Game.TILES_SIZE; // tile precision, -> left X + int x1 = (Screen.xOffset + screen.getWidth() + Game.TILES_SIZE) / Game.TILES_SIZE; // -> right X + int y0 = Screen.yOffset / Game.TILES_SIZE; + int y1 = (Screen.yOffset + screen.getHeight()) / Game.TILES_SIZE; // render one tile plus to fix black margins + + for (int y = y0; y < y1; y++) { + for (int x = x0; x < x1; x++) { + tiles[x + y * width].render(screen); + } + } + } + +} From 1585ee6f5601a95da4786076d8543a0ec2c480f1 Mon Sep 17 00:00:00 2001 From: Huy010302 <111289985+Huy010302@users.noreply.github.com> Date: Wed, 22 May 2024 23:21:24 +0700 Subject: [PATCH 46/66] fix move player 2 --- res/levels/Level1.txt | 2 +- res/levels/Level2.txt | 2 +- src/uet/oop/bomberman/Board.java | 73 ++++++++++++--- src/uet/oop/bomberman/entities/bomb/Bomb.java | 89 ++++++++++--------- src/uet/oop/bomberman/input/Keyboard.java | 28 ++++-- .../oop/bomberman/level/FileLevelLoader.java | 51 +++++++---- 6 files changed, 165 insertions(+), 80 deletions(-) diff --git a/res/levels/Level1.txt b/res/levels/Level1.txt index 6f00589..254063f 100644 --- a/res/levels/Level1.txt +++ b/res/levels/Level1.txt @@ -10,7 +10,7 @@ # # # # #*# # # #*#*# # # # # # #* ** * * # # #*# # # # # # #*# # # # # # # -# * * * # +#a * * * # ############################### diff --git a/res/levels/Level2.txt b/res/levels/Level2.txt index f76a558..b01dcf7 100644 --- a/res/levels/Level2.txt +++ b/res/levels/Level2.txt @@ -10,7 +10,7 @@ # # # # #*# # # # # # #*# #*# # # **** *1 # # # # # # # # # # #*# # # # #*# -# ** * * 3 # +#a ** * * 3 # ############################### diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 08fcfd9..2cb6fd1 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -41,6 +41,7 @@ public class Board implements IRender, IEntityManager, IMessageManager, IGameInf private List _activeItems = new ArrayList<>(); private Character player; + private Character player2; @Override public List getActiveItems() { @@ -61,9 +62,9 @@ public Board(Game game, Keyboard input, Screen screen) { } private void snapCameraToPlayer() { - int xScroll = Screen.calculateXOffset(this, getPlayer()); - Screen.setOffset(xScroll, 0); - } + int xScroll = Screen.calculateXOffset(this, getPlayer()); + Screen.setOffset(xScroll, 0); + } @Override public void update() { @@ -79,6 +80,7 @@ public void update() { snapCameraToPlayer(); processPlayerInput(); + processPlayer2Input(); for (int i = 0; i < _characters.size(); i++) { Character a = _characters.get(i); @@ -89,24 +91,44 @@ public void update() { private void processPlayerInput() { Character player = getPlayer(); - if (!player.isAlive()) return; + if (!player.isAlive()) + return; processPlayerInputMove(player); if (player instanceof Bomber) { Bomber bomber = (Bomber) player; - if(_input.space) bomber.placeBomb(); + if (_input.player1_space) + bomber.placeBomb(); + } + } + + private void processPlayer2Input() { + Character player2 = getPlayer2(); + if (!player2.isAlive()) + return; + + processPlayer2InputMove(player2); + + if (player2 instanceof Bomber) { + Bomber bomber2 = (Bomber) player2; + if (_input.player2_space) + bomber2.placeBomb(); } } private void processPlayerInputMove(Character player) { int xa = 0, ya = 0; - if(_input.up) ya--; - if(_input.down) ya++; - if(_input.left) xa--; - if(_input.right) xa++; - - if(xa != 0 || ya != 0) { + if (_input.player1_up) + ya--; + if (_input.player1_down) + ya++; + if (_input.player1_left) + xa--; + if (_input.player1_right) + xa++; + + if (xa != 0 || ya != 0) { player.move(xa * player.getSpeed(), ya * player.getSpeed()); player.setMoving(true); } else { @@ -114,6 +136,25 @@ private void processPlayerInputMove(Character player) { } } + private void processPlayer2InputMove(Character player2) { + int xa = 0, ya = 0; + if (_input.player2_up) + ya--; + if (_input.player2_down) + ya++; + if (_input.player2_left) + xa--; + if (_input.player2_right) + xa++; + + if (xa != 0 || ya != 0) { + player2.move(xa * player2.getSpeed(), ya * player2.getSpeed()); + player2.setMoving(true); + } else { + player2.setMoving(false); + } + } + @Override public void render(Screen screen) { if (_game.isPaused()) @@ -173,7 +214,7 @@ public void endGame() { @Override public boolean isEnemyCleared() { return !_characters.stream() - .anyMatch(character -> character != getPlayer()); + .anyMatch(character -> character != getPlayer()); } public void drawScreen(Graphics g) { @@ -235,6 +276,10 @@ public Character getPlayer() { return this.player; } + public Character getPlayer2() { + return this.player2; + } + @Override public Character getCharacterAtExcluding(int x, int y, Character a) { Iterator itr = _characters.iterator(); @@ -433,6 +478,10 @@ public void setPlayer(Character character) { this.player = character; } + public void setPlayer2(Character character2) { + this.player2 = character2; + } + @Override public void handleOnDeath(Character character, Character killer) { if (character.isPlayer()) { diff --git a/src/uet/oop/bomberman/entities/bomb/Bomb.java b/src/uet/oop/bomberman/entities/bomb/Bomb.java index 8863a87..b2da0a2 100644 --- a/src/uet/oop/bomberman/entities/bomb/Bomb.java +++ b/src/uet/oop/bomberman/entities/bomb/Bomb.java @@ -10,18 +10,19 @@ import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.level.Coordinates; import uet.oop.bomberman.sound.Sound; + public class Bomb extends AnimatedEntitiy { - protected double _timeToExplode = 120; //2 seconds - thoi gian phat no + protected double _timeToExplode = 120; // 2 seconds - thoi gian phat no public int _timeAfter = 20;// thoi gian de no - + protected IEntityManager _board; protected Flame[] _flames; protected boolean _exploded = false; protected boolean _allowedToPassThru = true; private final int bombRadius; - + public Bomb(int x, int y, int bombRadius, IEntityManager board) { _x = x; _y = y; @@ -29,89 +30,94 @@ public Bomb(int x, int y, int bombRadius, IEntityManager board) { _sprite = Sprite.bomb; this.bombRadius = bombRadius; } - + @Override public void update() { - if(_timeToExplode > 0) + if (_timeToExplode > 0) _timeToExplode--; else { - if(!_exploded) + if (!_exploded) explode(); else updateFlames(); - - if(_timeAfter > 0) + + if (_timeAfter > 0) _timeAfter--; else remove(); } - + animate(); } - + @Override public void render(Screen screen) { - if(_exploded) { - _sprite = Sprite.bomb_exploded2; + if (_exploded) { + _sprite = Sprite.bomb_exploded2; renderFlames(screen); } else _sprite = Sprite.movingSprite(Sprite.bomb, Sprite.bomb_1, Sprite.bomb_2, _animate, Game.TICKS_PER_SECOND); - - int xt = (int)_x << 4; - int yt = (int)_y << 4; - - screen.renderEntity(xt, yt , this); + + int xt = (int) _x << 4; + int yt = (int) _y << 4; + + screen.renderEntity(xt, yt, this); } - + public void renderFlames(Screen screen) { for (int i = 0; i < _flames.length; i++) { _flames[i].render(screen); } } - + public void updateFlames() { for (int i = 0; i < _flames.length; i++) { _flames[i].update(); } } - /** - * Xử lý Bomb nổ - */ - protected void explode() {//nổ + /** + * Xử lý Bomb nổ + */ + protected void explode() {// nổ _exploded = true; _allowedToPassThru = true; // TODO: xử lý khi Character đứng tại vị trí Bomb - Character x = _board.getCharacterAtExcluding((int)_x, (int)_y, null); - if(x != null){ + Character x = _board.getCharacterAtExcluding((int) _x, (int) _y, null); + if (x != null) { x.handleOnDeath(); } // TODO: tạo các Flame - _flames = new Flame[4]; - for (int i = 0; i < _flames.length; i++) { - _flames[i] = new Flame((int) _x, (int) _y, i, bombRadius, _board); - } - Sound.play("BOM_11_M"); + _flames = new Flame[4]; + for (int i = 0; i < _flames.length; i++) { + _flames[i] = new Flame((int) _x, (int) _y, i, bombRadius, _board); + } + Sound.play("BOM_11_M"); } + public void handleChainExplode() { _timeToExplode = 0; } + public FlameSegment flameAt(int x, int y) { - if(!_exploded) return null; - + if (!_exploded) + return null; + for (int i = 0; i < _flames.length; i++) { - if(_flames[i] == null) return null; + if (_flames[i] == null) + return null; FlameSegment e = _flames[i].flameSegmentAt(x, y); - if(e != null) return e; + if (e != null) + return e; } - + return null; } @Override public boolean collide(Entity e) { // Xử lý va chạm với Flame của Bomb khác: chain explosion - if(e instanceof Flame) { + if (e instanceof Flame) { handleChainExplode(); return true; } @@ -120,15 +126,16 @@ public boolean collide(Entity e) { @Override public boolean canBePassedThroughBy(Entity other) { - // Xử lý khi Bomber đi ra sau khi vừa đặt bom (_allowedToPassThru) - if(other instanceof Bomber) { + // Xử lý khi Bomber đi ra sau khi vừa đặt bom (_allowedToPassThru) + if (other instanceof Bomber) { double diffX = other.getX() - Coordinates.tileToPixel(getX()); double diffY = other.getY() - Coordinates.tileToPixel(getY()); - - if(!(diffX >= -10 && diffX < 16 && diffY >= 1 && diffY <= 28)) { // differences to see if the player has moved out of the bomb, tested values + + if (!(diffX >= -10 && diffX < 16 && diffY >= 1 && diffY <= 28)) { // differences to see if the player has + // moved out of the bomb, tested values _allowedToPassThru = false; } - + return _allowedToPassThru; } diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index f1828aa..ac42490 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -14,17 +14,32 @@ public class Keyboard implements KeyListener { public interface KeyboardInputCallback { void onKeyPressed(EGameControl gameControl); } - - private boolean[] keys = new boolean[120]; //120 is enough to this game - public boolean up, down, left, right, space,pause,resume; + + private boolean[] keys = new boolean[65536]; + public boolean up, down, left, right, space, pause, resume; + public boolean player1_up, player2_up, player1_down, player2_down, player1_left, player2_left, player1_right, + player2_right, player1_space, player2_space; public Optional keyboardInputCallback; - + public void update() { up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W]; down = keys[KeyEvent.VK_DOWN] || keys[KeyEvent.VK_S]; left = keys[KeyEvent.VK_LEFT] || keys[KeyEvent.VK_A]; right = keys[KeyEvent.VK_RIGHT] || keys[KeyEvent.VK_D]; space = keys[KeyEvent.VK_SPACE] || keys[KeyEvent.VK_X]; + + player1_up = keys[KeyEvent.VK_UP]; + player1_down = keys[KeyEvent.VK_DOWN]; + player1_left = keys[KeyEvent.VK_LEFT]; + player1_right = keys[KeyEvent.VK_RIGHT]; + player1_space = keys[KeyEvent.VK_SPACE]; + + player2_up = keys[KeyEvent.VK_W]; + player2_down = keys[KeyEvent.VK_S]; + player2_left = keys[KeyEvent.VK_A]; + player2_right = keys[KeyEvent.VK_D]; + player2_space = keys[KeyEvent.VK_X]; + pause = keys[KeyEvent.VK_ESCAPE]; resume = keys[KeyEvent.VK_ENTER]; } @@ -58,7 +73,8 @@ private EGameControl keyToGameControl(int keyCode) { } @Override - public void keyTyped(KeyEvent e) {} + public void keyTyped(KeyEvent e) { + } @Override public void keyPressed(KeyEvent e) { @@ -73,7 +89,7 @@ public void keyPressed(KeyEvent e) { @Override public void keyReleased(KeyEvent e) { keys[e.getKeyCode()] = false; - + } } diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index c14974f..da2285c 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -40,13 +40,13 @@ public void loadLevel(int level) { // TODO: cập nhật các giá trị đọc được vào _width, _height, _level, _map List list = new ArrayList<>(); try { - FileReader fr = new FileReader("res/levels/Level" + level + ".txt");//doc tep luu map + FileReader fr = new FileReader("res/levels/Level" + level + ".txt");// doc tep luu map BufferedReader br = new BufferedReader(fr); String line = br.readLine(); while (!line.equals("")) { list.add(line); line = br.readLine(); - //doc file txt luu vao list + // doc file txt luu vao list } } catch (Exception e) { e.printStackTrace(); @@ -61,7 +61,7 @@ public void loadLevel(int level) { _map[i][j] = list.get(i + 1).charAt(j); } } - //gan cac phan tu cho mang + // gan cac phan tu cho mang } @Override @@ -96,44 +96,57 @@ public void createEntities() { _board.addEntity(x + y * _width, new LayeredEntity(x, y, new Grass(x, y, Sprite.grass), - new Brick(x, y, Sprite.brick) - ) - ); + new Brick(x, y, Sprite.brick))); break; // Thêm Bomber player case 'p': Bomber bomber = new Bomber( - Coordinates.tileToPixel(x), - Coordinates.tileToPixel(y) + Game.TILES_SIZE, - Game.BOMBERSPEED, - Game.BOMBRATE, - Game.BOMBRADIUS, - _board, - _board - ); + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + Game.BOMBERSPEED, + Game.BOMBRATE, + Game.BOMBRADIUS, + _board, + _board); _board.addCharacter(bomber); _board.setPlayer(bomber); Screen.setOffset(0, 0); _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); break; - + case 'a': + Bomber bomber2 = new Bomber( + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + Game.BOMBERSPEED, + Game.BOMBRATE, + Game.BOMBRADIUS, + _board, + _board); + _board.addCharacter(bomber2); + _board.setPlayer2(bomber2); + Screen.setOffset(0, 0); + _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); + break; // Thêm balloon case '1': - _board.addCharacter(new Balloon(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board)); + _board.addCharacter(new Balloon(Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board)); _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); break; // Thêm oneal case '2': - _board.addCharacter(new Oneal(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board)); + _board.addCharacter(new Oneal(Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board)); _board.addEntity(pos, new Grass(x, y, Sprite.grass)); break; // Thêm doll case '3': - _board.addCharacter(new Doll(Coordinates.tileToPixel(x), Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board)); + _board.addCharacter(new Doll(Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, _board)); _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); break; // Thêm oneal - // Thêm BomItem + // Thêm BomItem case 'b': LayeredEntity layer = new LayeredEntity(x, y, new Grass(x, y, Sprite.grass), From 5a9950b3e5ac49383d6ca08c26040ee380e3d757 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Wed, 22 May 2024 18:51:18 +0000 Subject: [PATCH 47/66] split Board into GameInfoManager --- src/uet/oop/bomberman/Board.java | 117 +++------------ src/uet/oop/bomberman/Game.java | 27 ++-- .../oop/bomberman/base/IGameInfoManager.java | 14 +- .../bomberman/entities/character/Bomber.java | 1 - .../entities/character/enemy/Minvo.java | 1 - src/uet/oop/bomberman/gui/Frame.java | 2 +- .../oop/bomberman/level/FileLevelLoader.java | 2 +- .../bomberman/manager/GameInfoManager.java | 138 ++++++++++++++++++ 8 files changed, 182 insertions(+), 120 deletions(-) create mode 100644 src/uet/oop/bomberman/manager/GameInfoManager.java diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 3241c88..30f8239 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -4,15 +4,12 @@ import uet.oop.bomberman.base.Copyable; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.base.IGameInfoManager; -import uet.oop.bomberman.entities.Message; import uet.oop.bomberman.entities.character.Bomber; -import uet.oop.bomberman.entities.character.CanUseItem; import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.character.action.Action; import uet.oop.bomberman.entities.character.action.ActionConstants; import uet.oop.bomberman.entities.character.action.ActionMove; import uet.oop.bomberman.entities.character.exceptions.CharacterActionException; -import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.exceptions.LoadLevelException; import uet.oop.bomberman.graphics.IRender; import uet.oop.bomberman.graphics.Screen; @@ -20,41 +17,29 @@ import uet.oop.bomberman.level.FileLevelLoader; import uet.oop.bomberman.level.LevelLoader; import uet.oop.bomberman.manager.EntityManager; +import uet.oop.bomberman.manager.GameInfoManager; import uet.oop.bomberman.utils.Global; import java.awt.*; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; -import java.util.stream.Collectors; /** * Quản lý thao tác điều khiển, load level, render các màn hình của game */ -public class Board implements Copyable, IRender, IGameInfoManager { +public class Board implements Copyable, IRender { protected LevelLoader _levelLoader; protected Game _game; protected Keyboard _input; protected Screen _screen; - private List _messages = new ArrayList<>(); - private List _activeItems = new ArrayList<>(); private List agents = new ArrayList<>(); - private EntityManager entityManager; - - @Override - public List getPlayerActiveItems() { - Character player = entityManager.getPlayer(); - if (!(player instanceof CanUseItem)) return new ArrayList<>(); - return ((CanUseItem)player).getActiveItems().collect(Collectors.toList()); - } + private IEntityManager entityManager; + private IGameInfoManager gameInfoManager; private int _screenToShow = -1; // 1:endgame, 2:changelevel, 3:paused - private int _time = Game.TIME; - private int _points = Game.POINTS; - public Board(Game game, Keyboard input, Screen screen) { _game = game; _input = input; @@ -70,12 +55,11 @@ private void snapCameraToPlayer() { @Override public void update() { - if (_game.isPaused()) + if (gameInfoManager.isPaused()) return; entityManager.update(); - updateMessages(); - updateActiveItems(); + gameInfoManager.update(); detectEndGame(); processAgentAction(); @@ -129,7 +113,7 @@ private void processPlayerInputMove(Character player) { @Override public void render(Screen screen) { - if (_game.isPaused()) + if (gameInfoManager.isPaused()) return; entityManager.render(screen); } @@ -139,14 +123,15 @@ public void nextLevel() { } public void loadLevel(int level) { - _time = Game.TIME; _screenToShow = 2; _game.resetScreenDelay(); - _game.pause(); try { _levelLoader = new FileLevelLoader(this, level); - entityManager = new EntityManager(_levelLoader, this); + gameInfoManager = new GameInfoManager(); + entityManager = new EntityManager(_levelLoader, gameInfoManager); + gameInfoManager.setEntityManager(entityManager); + gameInfoManager.pause(); _levelLoader.createEntities(); } catch (LoadLevelException e) { @@ -155,20 +140,21 @@ public void loadLevel(int level) { } protected void detectEndGame() { - if (_time <= 0) + if (gameInfoManager.getTime() <= 0) { endGame(); + } } public void endGame() { _screenToShow = 1; _game.resetScreenDelay(); - _game.pause(); + gameInfoManager.pause(); } public void drawScreen(Graphics g) { switch (_screenToShow) { case 1: - _screen.drawEndGame(g, _points); + _screen.drawEndGame(g, gameInfoManager.getPoints()); break; case 2: _screen.drawChangeLevel(g, _levelLoader.getLevel()); @@ -179,60 +165,6 @@ public void drawScreen(Graphics g) { } } - @Override - public void addActiveItem(Item item) { - _activeItems.add(item); - } - - @Override - public void addMessage(Message e) { - _messages.add(e); - } - - public void renderMessages(Graphics g) { - Message m; - for (int i = 0; i < _messages.size(); i++) { - m = _messages.get(i); - - g.setFont(new Font("Arial", Font.PLAIN, m.getSize())); - g.setColor(m.getColor()); - g.drawString(m.getMessage(), (int) m.getX() - Screen.xOffset * Game.SCALE, (int) m.getY()); - } - } - - protected void updateActiveItems() { - if (_game.isPaused()) - return; - Iterator itr = _activeItems.iterator(); - - while (itr.hasNext()) - itr.next().update(); - } - - protected void updateMessages() { - if (_game.isPaused()) - return; - Message m; - int left; - for (int i = 0; i < _messages.size(); i++) { - m = _messages.get(i); - left = m.getDuration(); - - if (left > 0) - m.setDuration(--left); - else - _messages.remove(i); - } - } - - @Override - public int subtractTime() { - if (!_game.isPaused() && _time > 0) - return --_time; - else - return _time; - } - public Keyboard getInput() { return _input; } @@ -253,21 +185,6 @@ public void setShow(int i) { _screenToShow = i; } - @Override - public int getTime() { - return _time; - } - - @Override - public int getPoints() { - return _points; - } - - @Override - public void addPoints(int points) { - this._points += points; - } - public int getWidth() { return _levelLoader.getWidth(); } @@ -280,6 +197,10 @@ public IEntityManager getEntityManager() { return entityManager; } + public IGameInfoManager getGameInfoManager() { + return gameInfoManager; + } + @Override public Board copy() { // TODO Auto-generated method stub diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 61bc077..0320ef8 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -42,7 +42,6 @@ public class Game extends Canvas { private Keyboard _input; private boolean _running = false; - private boolean _paused = true; private Board _board; private Screen screen; private Frame _frame; @@ -84,7 +83,7 @@ private void renderGame(Graphics g) { } g.drawImage(image, 0, 0, getWidth(), getHeight(), null); - _board.renderMessages(g); + _board.getGameInfoManager().render(screen, g); } private void renderScreen(Graphics g) { @@ -106,7 +105,7 @@ private void update() { _board.update(); if (_input.pause) { // Kiểm tra nếu phím "p" được nhấn _board.setShow(3); // Hiển thị màn hình tạm dừng - _paused = true; // Đặt trạng thái game là tạm dừng + _board.getGameInfoManager().pause(); // Đặt trạng thái game là tạm dừng return; } break; @@ -128,12 +127,13 @@ private void showScreen() { } Graphics g = bs.getDrawGraphics(); + IGameInfoManager gameInfoManager = _board.getGameInfoManager(); switch (Global.currentScreen) { case GAME_PLAY_SCREEN: - if (_paused) { + if (gameInfoManager.isPaused()) { if (_screenDelay <= 0) { _board.setShow(-1); - _paused = false; + gameInfoManager.unpause(); } renderScreen(g); @@ -142,13 +142,13 @@ private void showScreen() { } if (_input.resume) { - _paused = false; + gameInfoManager.unpause(); _board.setShow(-1); - } + } frames++; if (System.currentTimeMillis() - timer > 1000) { - _frame.setTime(_board.subtractTime()); - _frame.setPoints(_board.getPoints()); + _frame.setTime(gameInfoManager.subtractTime()); + _frame.setPoints(gameInfoManager.getPoints()); _frame.renderItemTime(); timer += 1000; _frame.setTitle(TITLE + " | " + updates + " rate, " + frames + " fps"); @@ -208,15 +208,8 @@ public void start() { public void resetScreenDelay() { _screenDelay = SCREENDELAY; } - public boolean isPaused() { - return _paused; - } - - public void pause() { - _paused = !_paused; - } - public IGameInfoManager getGameInfoManager() { + public Board getBoard() { return _board; } diff --git a/src/uet/oop/bomberman/base/IGameInfoManager.java b/src/uet/oop/bomberman/base/IGameInfoManager.java index f4958ea..4d94660 100644 --- a/src/uet/oop/bomberman/base/IGameInfoManager.java +++ b/src/uet/oop/bomberman/base/IGameInfoManager.java @@ -1,6 +1,11 @@ package uet.oop.bomberman.base; -public interface IGameInfoManager extends IActiveItemManager, IMessageManager { +import java.awt.Graphics; + +import uet.oop.bomberman.graphics.IRender; +import uet.oop.bomberman.graphics.Screen; + +public interface IGameInfoManager extends IActiveItemManager, IMessageManager, IRender { public int subtractTime(); public int getTime(); @@ -8,4 +13,11 @@ public interface IGameInfoManager extends IActiveItemManager, IMessageManager { public int getPoints(); public void addPoints(int points); + public boolean isPaused(); + public void pause(); + public void unpause(); + + public void setEntityManager(IEntityManager entityManager); + public void render(Screen screen, Graphics g); + } \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index af20df3..a01489a 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -17,7 +17,6 @@ import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.graphics.Sprite; -import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; diff --git a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java index f86b34d..74ff675 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java @@ -1,6 +1,5 @@ package uet.oop.bomberman.entities.character.enemy; -import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.graphics.Sprite; diff --git a/src/uet/oop/bomberman/gui/Frame.java b/src/uet/oop/bomberman/gui/Frame.java index 99a635b..92f172f 100644 --- a/src/uet/oop/bomberman/gui/Frame.java +++ b/src/uet/oop/bomberman/gui/Frame.java @@ -20,7 +20,7 @@ public Frame() { _containerpane = new JPanel(new BorderLayout()); _gamepane = new GamePanel(this); - _infopanel = new InfoPanel(_gamepane.getGame().getGameInfoManager()); + _infopanel = new InfoPanel(_gamepane.getGame().getBoard().getGameInfoManager()); _containerpane.add(_infopanel, BorderLayout.PAGE_START); _containerpane.add(_gamepane, BorderLayout.PAGE_END); diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 4716c70..dfbf7d0 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -115,7 +115,7 @@ public void createEntities() { Game.BOMBRATE, Game.BOMBRADIUS, _board.getEntityManager(), - _board, + _board.getGameInfoManager(), _board.getEntityManager().getBombManager(), _board ); diff --git a/src/uet/oop/bomberman/manager/GameInfoManager.java b/src/uet/oop/bomberman/manager/GameInfoManager.java new file mode 100644 index 0000000..47101c9 --- /dev/null +++ b/src/uet/oop/bomberman/manager/GameInfoManager.java @@ -0,0 +1,138 @@ +package uet.oop.bomberman.manager; + +import java.awt.Font; +import java.awt.Graphics; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; + +import uet.oop.bomberman.Game; +import uet.oop.bomberman.base.IEntityManager; +import uet.oop.bomberman.base.IGameInfoManager; +import uet.oop.bomberman.entities.Message; +import uet.oop.bomberman.entities.character.CanUseItem; +import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.tile.item.Item; +import uet.oop.bomberman.graphics.Screen; + +public class GameInfoManager implements IGameInfoManager { + + private int time; + private int points; + private boolean paused; + private List messages = new ArrayList<>(); + private List activeItems = new ArrayList<>(); + + private IEntityManager entityManager; + + public GameInfoManager() { + this.time = Game.TIME; + this.points = Game.POINTS; + } + + public void setEntityManager(IEntityManager entityManager) { + this.entityManager = entityManager; + } + + @Override + public List getPlayerActiveItems() { + Character player = entityManager.getPlayer(); + if (!(player instanceof CanUseItem)) return new ArrayList<>(); + return ((CanUseItem)player).getActiveItems().collect(Collectors.toList()); + } + + @Override + public void addActiveItem(Item item) { + activeItems.add(item); + } + + @Override + public void addMessage(Message e) { + messages.add(e); + } + + @Override + public int subtractTime() { + if (!isPaused() && time > 0) + return --time; + else + return time; + } + + @Override + public int getTime() { + return time; + } + + @Override + public int getPoints() { + return points; + } + + @Override + public void addPoints(int points) { + this.points += points; + } + + @Override + public void update() { + updateActiveItems(); + updateMessages(); + } + + @Override + public void render(Screen screen) {} + + private void updateActiveItems() { + Iterator itr = activeItems.iterator(); + + while (itr.hasNext()) + itr.next().update(); + } + + private void updateMessages() { + Message m; + int left; + for (int i = 0; i < messages.size(); i++) { + m = messages.get(i); + left = m.getDuration(); + + if (left > 0) + m.setDuration(--left); + else + messages.remove(i); + } + } + + public void render(Screen screen, Graphics g) { + renderMessages(g); + } + + public void renderMessages(Graphics g) { + Message m; + for (int i = 0; i < messages.size(); i++) { + m = messages.get(i); + + g.setFont(new Font("Arial", Font.PLAIN, m.getSize())); + g.setColor(m.getColor()); + g.drawString(m.getMessage(), (int) m.getX() - Screen.xOffset * Game.SCALE, (int) m.getY()); + } + } + + @Override + public boolean isPaused() { + return paused; + } + + @Override + public void pause() { + paused = true; + } + + @Override + public void unpause() { + paused = false; + } + +} From 42e071b396cdad3f49a273188d64ca225e493b70 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Thu, 23 May 2024 16:26:05 +0000 Subject: [PATCH 48/66] implement KeyboardAgent --- src/uet/oop/bomberman/Board.java | 39 ++------------- src/uet/oop/bomberman/agent/Agent.java | 2 +- src/uet/oop/bomberman/agent/IAgent.java | 4 +- .../oop/bomberman/agent/KeyboardAgent.java | 49 +++++++++++++++++++ src/uet/oop/bomberman/agent/MovingAgent.java | 11 ++++- .../oop/bomberman/level/FileLevelLoader.java | 3 ++ 6 files changed, 69 insertions(+), 39 deletions(-) create mode 100644 src/uet/oop/bomberman/agent/KeyboardAgent.java diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 30f8239..3b971d2 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -4,11 +4,7 @@ import uet.oop.bomberman.base.Copyable; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.base.IGameInfoManager; -import uet.oop.bomberman.entities.character.Bomber; -import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.character.action.Action; -import uet.oop.bomberman.entities.character.action.ActionConstants; -import uet.oop.bomberman.entities.character.action.ActionMove; import uet.oop.bomberman.entities.character.exceptions.CharacterActionException; import uet.oop.bomberman.exceptions.LoadLevelException; import uet.oop.bomberman.graphics.IRender; @@ -65,7 +61,6 @@ public void update() { processAgentAction(); snapCameraToPlayer(); - processPlayerInput(); } public void addAgent(Agent agent) { @@ -74,43 +69,15 @@ public void addAgent(Agent agent) { private void processAgentAction() { for (Agent agent: agents) { - Action action = agent.getNextAction(); - try { - agent.getCharacter().performAction(action); - } catch (CharacterActionException ignored) {} - } - } - - private void processPlayerInput() { - Character player = entityManager.getPlayer(); - if (!player.isAlive()) return; - - processPlayerInputMove(player); - - if (player instanceof Bomber) { - if(_input.space) { + List actions = agent.getNextActions(); + for (Action action: actions) { try { - player.performAction(ActionConstants.PLACE_BOMB); + agent.getCharacter().performAction(action); } catch (CharacterActionException ignored) {} } } } - private void processPlayerInputMove(Character player) { - int xa = 0, ya = 0; - if(_input.up) ya--; - if(_input.down) ya++; - if(_input.left) xa--; - if(_input.right) xa++; - - if(xa != 0 || ya != 0) { - ActionMove actionMove = new ActionMove(xa, ya); - try { - player.performAction(actionMove); - } catch (CharacterActionException ignored) {} - } - } - @Override public void render(Screen screen) { if (gameInfoManager.isPaused()) diff --git a/src/uet/oop/bomberman/agent/Agent.java b/src/uet/oop/bomberman/agent/Agent.java index b0cb681..9bad770 100644 --- a/src/uet/oop/bomberman/agent/Agent.java +++ b/src/uet/oop/bomberman/agent/Agent.java @@ -4,7 +4,7 @@ public abstract class Agent implements IAgent { - private Character character; + protected Character character; public Agent(Character character) { this.character = character; diff --git a/src/uet/oop/bomberman/agent/IAgent.java b/src/uet/oop/bomberman/agent/IAgent.java index be1bb34..8f5ffd2 100644 --- a/src/uet/oop/bomberman/agent/IAgent.java +++ b/src/uet/oop/bomberman/agent/IAgent.java @@ -1,9 +1,11 @@ package uet.oop.bomberman.agent; +import java.util.List; + import uet.oop.bomberman.entities.character.action.Action; public interface IAgent { - public Action getNextAction(); + public List getNextActions(); } diff --git a/src/uet/oop/bomberman/agent/KeyboardAgent.java b/src/uet/oop/bomberman/agent/KeyboardAgent.java new file mode 100644 index 0000000..864469d --- /dev/null +++ b/src/uet/oop/bomberman/agent/KeyboardAgent.java @@ -0,0 +1,49 @@ +package uet.oop.bomberman.agent; + +import java.util.ArrayList; +import java.util.List; + +import uet.oop.bomberman.entities.character.Bomber; +import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.character.action.Action; +import uet.oop.bomberman.entities.character.action.ActionConstants; +import uet.oop.bomberman.entities.character.action.ActionMove; +import uet.oop.bomberman.input.Keyboard; + +public class KeyboardAgent extends Agent { + + private Keyboard keyboard; + + public KeyboardAgent(Character character, Keyboard keyboard) { + super(character); + this.keyboard = keyboard; + } + + @Override + public List getNextActions() { + List actions = getMoveActions(); + + if (character instanceof Bomber) { + if(keyboard.space) { + actions.add(ActionConstants.PLACE_BOMB); + } + } + return actions; + } + + private List getMoveActions() { + int xa = 0, ya = 0; + if(keyboard.up) ya--; + if(keyboard.down) ya++; + if(keyboard.left) xa--; + if(keyboard.right) xa++; + + List actions = new ArrayList<>(); + if(xa != 0 || ya != 0) { + ActionMove actionMove = new ActionMove(xa, ya); + actions.add(actionMove); + } + return actions; + } + +} diff --git a/src/uet/oop/bomberman/agent/MovingAgent.java b/src/uet/oop/bomberman/agent/MovingAgent.java index 22de0b5..0f4e6c2 100644 --- a/src/uet/oop/bomberman/agent/MovingAgent.java +++ b/src/uet/oop/bomberman/agent/MovingAgent.java @@ -1,5 +1,8 @@ package uet.oop.bomberman.agent; +import java.util.ArrayList; +import java.util.List; + import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.character.action.Action; import uet.oop.bomberman.entities.character.action.ActionConstants; @@ -14,7 +17,6 @@ public MovingAgent(Character character, AI ai) { this.ai = ai; } - @Override public Action getNextAction() { int direction = ai.calculateDirection(); switch (direction) { @@ -30,5 +32,12 @@ public Action getNextAction() { return ActionConstants.DO_NOTHING; } } + + @Override + public List getNextActions() { + List actions = new ArrayList<>(); + actions.add(getNextAction()); + return actions; + } } diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index dfbf7d0..988c31d 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -7,6 +7,7 @@ import uet.oop.bomberman.Board; import uet.oop.bomberman.Game; import uet.oop.bomberman.agent.Agent; +import uet.oop.bomberman.agent.KeyboardAgent; import uet.oop.bomberman.agent.MovingAgent; import uet.oop.bomberman.entities.LayeredEntity; import uet.oop.bomberman.entities.character.Bomber; @@ -123,6 +124,8 @@ public void createEntities() { _board.getEntityManager().getCharacterManager().setPlayer(bomber); Screen.setOffset(0, 0); _board.getEntityManager().getTileManager().addTile(x + y * _width, new Grass(x, y, Sprite.grass)); + agent = new KeyboardAgent(bomber, _board.getInput()); + _board.addAgent(agent); break; // Thêm balloon From 12c350ca7b1a06807f2fdeef9c7803cd352d6fab Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Fri, 24 May 2024 09:22:26 +0000 Subject: [PATCH 49/66] change Keyboard to singleton --- src/uet/oop/bomberman/Board.java | 9 +-------- src/uet/oop/bomberman/Game.java | 16 +++++++--------- src/uet/oop/bomberman/agent/KeyboardAgent.java | 15 ++++++--------- src/uet/oop/bomberman/input/Keyboard.java | 9 +++++++++ src/uet/oop/bomberman/level/FileLevelLoader.java | 2 +- 5 files changed, 24 insertions(+), 27 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 3b971d2..9fadbc7 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -9,7 +9,6 @@ import uet.oop.bomberman.exceptions.LoadLevelException; import uet.oop.bomberman.graphics.IRender; import uet.oop.bomberman.graphics.Screen; -import uet.oop.bomberman.input.Keyboard; import uet.oop.bomberman.level.FileLevelLoader; import uet.oop.bomberman.level.LevelLoader; import uet.oop.bomberman.manager.EntityManager; @@ -26,7 +25,6 @@ public class Board implements Copyable, IRender { protected LevelLoader _levelLoader; protected Game _game; - protected Keyboard _input; protected Screen _screen; private List agents = new ArrayList<>(); @@ -36,9 +34,8 @@ public class Board implements Copyable, IRender { private int _screenToShow = -1; // 1:endgame, 2:changelevel, 3:paused - public Board(Game game, Keyboard input, Screen screen) { + public Board(Game game, Screen screen) { _game = game; - _input = input; _screen = screen; loadLevel(Global.gameLevel); // start in level 1 @@ -132,10 +129,6 @@ public void drawScreen(Graphics g) { } } - public Keyboard getInput() { - return _input; - } - public LevelLoader getLevel() { return _levelLoader; } diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 0320ef8..0a30923 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -40,7 +40,6 @@ public class Game extends Canvas { protected int _screenDelay = SCREENDELAY; - private Keyboard _input; private boolean _running = false; private Board _board; private Screen screen; @@ -63,10 +62,9 @@ public Game(Frame frame) { _frame.setTitle(TITLE); screen = new Screen(WIDTH, HEIGHT); - _input = new Keyboard(); - _board = new Board(this, _input, screen); - addKeyListener(_input); + _board = new Board(this, screen); + addKeyListener(Keyboard.i()); initScreen(); @@ -99,11 +97,11 @@ private void initScreen() { } private void update() { - _input.update(); + Keyboard.i().update(); switch (Global.currentScreen) { case GAME_PLAY_SCREEN: _board.update(); - if (_input.pause) { // Kiểm tra nếu phím "p" được nhấn + if (Keyboard.i().pause) { // Kiểm tra nếu phím "p" được nhấn _board.setShow(3); // Hiển thị màn hình tạm dừng _board.getGameInfoManager().pause(); // Đặt trạng thái game là tạm dừng return; @@ -141,7 +139,7 @@ private void showScreen() { renderGame(g); } - if (_input.resume) { + if (Keyboard.i().resume) { gameInfoManager.unpause(); _board.setShow(-1); } @@ -162,13 +160,13 @@ private void showScreen() { case SELECT_LEVEL_SCREEN: // TODO: render select level screen if (Global.currentScreen != Global.previousScreen) { - selectLevelScreen.setInput(_input); + selectLevelScreen.setInput(Keyboard.i()); } selectLevelScreen.drawScreen(g); break; case SELECT_GAME_MODE: if (Global.currentScreen != Global.previousScreen) { - selectGameModeScreen.setInput(_input); + selectGameModeScreen.setInput(Keyboard.i()); } selectGameModeScreen.drawScreen(g); } diff --git a/src/uet/oop/bomberman/agent/KeyboardAgent.java b/src/uet/oop/bomberman/agent/KeyboardAgent.java index 864469d..32a0117 100644 --- a/src/uet/oop/bomberman/agent/KeyboardAgent.java +++ b/src/uet/oop/bomberman/agent/KeyboardAgent.java @@ -12,11 +12,8 @@ public class KeyboardAgent extends Agent { - private Keyboard keyboard; - - public KeyboardAgent(Character character, Keyboard keyboard) { + public KeyboardAgent(Character character) { super(character); - this.keyboard = keyboard; } @Override @@ -24,7 +21,7 @@ public List getNextActions() { List actions = getMoveActions(); if (character instanceof Bomber) { - if(keyboard.space) { + if(Keyboard.i().space) { actions.add(ActionConstants.PLACE_BOMB); } } @@ -33,10 +30,10 @@ public List getNextActions() { private List getMoveActions() { int xa = 0, ya = 0; - if(keyboard.up) ya--; - if(keyboard.down) ya++; - if(keyboard.left) xa--; - if(keyboard.right) xa++; + if(Keyboard.i().up) ya--; + if(Keyboard.i().down) ya++; + if(Keyboard.i().left) xa--; + if(Keyboard.i().right) xa++; List actions = new ArrayList<>(); if(xa != 0 || ya != 0) { diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index 33ac503..b0f6a20 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -11,6 +11,15 @@ */ public class Keyboard implements KeyListener { + private static Keyboard INST = null; + public static Keyboard i() { + if (INST == null) { + INST = new Keyboard(); + } + return INST; + } + private Keyboard() {} + public interface KeyboardInputCallback { void onKeyPressed(EGameControl gameControl); } diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 988c31d..9411fd0 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -124,7 +124,7 @@ public void createEntities() { _board.getEntityManager().getCharacterManager().setPlayer(bomber); Screen.setOffset(0, 0); _board.getEntityManager().getTileManager().addTile(x + y * _width, new Grass(x, y, Sprite.grass)); - agent = new KeyboardAgent(bomber, _board.getInput()); + agent = new KeyboardAgent(bomber); _board.addAgent(agent); break; From 1fd6a07d54e0685322e3be024ce42f2d842545cd Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Fri, 24 May 2024 15:06:33 +0000 Subject: [PATCH 50/66] fix: item not displaying because IGameInfoManager is outdated --- src/uet/oop/bomberman/Board.java | 13 +++++-------- src/uet/oop/bomberman/Game.java | 11 ++++++++--- src/uet/oop/bomberman/gui/Frame.java | 2 +- src/uet/oop/bomberman/gui/InfoPanel.java | 12 ++++++------ src/uet/oop/bomberman/screen/SelectLevelScreen.java | 4 +++- 5 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 9fadbc7..4d7e828 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -60,6 +60,10 @@ public void update() { snapCameraToPlayer(); } + private void clearAgents() { + agents.clear(); + } + public void addAgent(Agent agent) { agents.add(agent); } @@ -91,6 +95,7 @@ public void loadLevel(int level) { _game.resetScreenDelay(); try { + clearAgents(); _levelLoader = new FileLevelLoader(this, level); gameInfoManager = new GameInfoManager(); entityManager = new EntityManager(_levelLoader, gameInfoManager); @@ -129,14 +134,6 @@ public void drawScreen(Graphics g) { } } - public LevelLoader getLevel() { - return _levelLoader; - } - - public Game getGame() { - return _game; - } - public int getShow() { return _screenToShow; } diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 0a30923..400345a 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -142,6 +142,7 @@ private void showScreen() { if (Keyboard.i().resume) { gameInfoManager.unpause(); _board.setShow(-1); + _screenDelay = 0; } frames++; if (System.currentTimeMillis() - timer > 1000) { @@ -194,12 +195,16 @@ public void start() { delta += (now - lastTime) / ns; lastTime = now; while (delta >= 1) { - update(); + synchronized (_board) { + update(); + } updates++; delta--; } - - showScreen(); + + synchronized (_board) { + showScreen(); + } } } diff --git a/src/uet/oop/bomberman/gui/Frame.java b/src/uet/oop/bomberman/gui/Frame.java index 92f172f..92d9c6a 100644 --- a/src/uet/oop/bomberman/gui/Frame.java +++ b/src/uet/oop/bomberman/gui/Frame.java @@ -20,7 +20,7 @@ public Frame() { _containerpane = new JPanel(new BorderLayout()); _gamepane = new GamePanel(this); - _infopanel = new InfoPanel(_gamepane.getGame().getBoard().getGameInfoManager()); + _infopanel = new InfoPanel(_gamepane.getGame()); _containerpane.add(_infopanel, BorderLayout.PAGE_START); _containerpane.add(_gamepane, BorderLayout.PAGE_END); diff --git a/src/uet/oop/bomberman/gui/InfoPanel.java b/src/uet/oop/bomberman/gui/InfoPanel.java index ad9e5b5..9e60fa9 100644 --- a/src/uet/oop/bomberman/gui/InfoPanel.java +++ b/src/uet/oop/bomberman/gui/InfoPanel.java @@ -15,16 +15,16 @@ public class InfoPanel extends JPanel { private JLabel pointsLabel; private JLabel itemTimeLabel; - private final IGameInfoManager gameInfoManager; + private final Game game; - public InfoPanel(IGameInfoManager gameInfoManager) { - this.gameInfoManager = gameInfoManager; + public InfoPanel(Game game) { + this.game = game; setLayout(new GridLayout()); - timeLabel = new JLabel("Time: " + gameInfoManager.getTime()); + timeLabel = new JLabel("Time: " + game.getBoard().getGameInfoManager().getTime()); timeLabel.setForeground(Color.white); timeLabel.setHorizontalAlignment(JLabel.CENTER); - pointsLabel = new JLabel("Points: " + gameInfoManager.getPoints()); + pointsLabel = new JLabel("Points: " + game.getBoard().getGameInfoManager().getPoints()); pointsLabel.setForeground(Color.white); pointsLabel.setHorizontalAlignment(JLabel.CENTER); @@ -50,7 +50,7 @@ public void setPoints(int t) { public void renderItemTime() { String label = ""; - List items = gameInfoManager.getPlayerActiveItems(); + List items = game.getBoard().getGameInfoManager().getPlayerActiveItems(); for (int i = 0; i < items.size(); i++) { Item item = items.get(i); if ((item.getDuration()) == 0) { diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index 7a7ea8f..51bd43d 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -43,7 +43,9 @@ public void onKeyPressed(EGameControl gameControl) { case ENTER: Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; Global.gameLevel = selectorIndex + 1; - _board.loadLevel(Global.gameLevel); + synchronized (_board) { + _board.loadLevel(Global.gameLevel); + } onDestroy(); break; } From a82605e222d794a640141c05df5e69817b13980f Mon Sep 17 00:00:00 2001 From: HuyHoang-21522098 <21522098@gm.uit.edu.vn> Date: Sun, 26 May 2024 12:36:15 +0700 Subject: [PATCH 51/66] Deadscreen --- res/font/SuperPixel-m2L8j.ttf | Bin 0 -> 66716 bytes res/menu/7729559.svg | 1 + res/menu/9165683_home_house_icon.png | Bin 0 -> 18176 bytes res/menu/f15591389f71a57ec5e54ba0f48ed385.jpg | Bin 0 -> 39473 bytes ...forest_by_forheksed_d9q4k94-fullview 1.png | Bin 0 -> 973465 bytes res/menu/gameover.png | Bin 0 -> 49547 bytes res/menu/restart.png | Bin 0 -> 913 bytes src/uet/oop/bomberman/screen/DeadScreen.java | 63 +++++++++++------- 8 files changed, 41 insertions(+), 23 deletions(-) create mode 100644 res/font/SuperPixel-m2L8j.ttf create mode 100644 res/menu/7729559.svg create mode 100644 res/menu/9165683_home_house_icon.png create mode 100644 res/menu/f15591389f71a57ec5e54ba0f48ed385.jpg create mode 100644 res/menu/forest_by_forheksed_d9q4k94-fullview 1.png create mode 100644 res/menu/gameover.png create mode 100644 res/menu/restart.png diff --git a/res/font/SuperPixel-m2L8j.ttf b/res/font/SuperPixel-m2L8j.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f7691c8d55c567739efaac6c168dacd842a71b62 GIT binary patch literal 66716 zcmeIb34k3(b?;r>ckYa4-xtkjxmUAE8ZDzc8m+c4M&3YxkXR&QWDAeH$eXZ@<2XPZ zVt70~!cz#04RLtj0C5N*0`iCveqh8lCSU{@LW}`p3^;}uLqtLbYwq{|ovOaKXEgFc z@_pZXc{5Vq(_LNNU3K<4b-LO`&bb!-RJh#Mo#&mSqu50iZxft%&epTeu3S|4ug?AJ z13KPz&h{7X{Oz;feXVo9TIyU)_c=RXa_07-Yv19bc&jec+0})@KYj7*&P8{q{)HD^ zx%a@!-o9thx$I%*GKVg@{<>WJwJM#fyHDqrTzue?E3aExzt*|xGj#orF4=qS0hKrD zd7Phj$rZnI@n3y^^DV0XE9ZWA)1~|NjxAmJxiz}~3Y}kfsS2vsWWTE8F&+0^dgXOD zyno-)59nU=^t?N+xcZ{K?a#XZM(2KUgX(*~Mzg2vN+>3TAc zsKkB$muGNZ@Y(x|U!K~MJ*VPzI;<2X{hzMM>?rPc6WP}mzg#S4&#^m&lLj8Ol1JV7 zuF8&il5=fpg^T~$_ABClj1IZ1tBCK4531zN9!B4B1vhCm!p}{5So%1pKX-<6zm9zy zDz-&?a@G%3%w@FeaxN2}C&-`f6$$&%aW@h#cZJNot}nCM71X0b=5|+zhP55h_8A>l zyF&bH?SE6-ac$plE%Eg#&uOdI-50ol_$TVaziIoL>i*n~#kzMq>AK?g>lw$ydD`Mf zRsI}pAJn#6&-y)G{}yduaU+>m3;saYzE9ilYJY<^l|`S^@wc__1mB};2DE>no=H2o z{x7uM=~^>qxJ{W0w12aY}!NOgqwxZ946M)8-l|4TO#J)mp*wEte6f832^RVVvmZHsigG4z%G&e$qWs7$yv z+=KtHf%~xa2*#q1E8!mer?z;LJI#*4e`=#&+6wWHPkwIFj;H(lSTsE4^PdyilX^Do zC_NuOp#9qDQ~aLdm)Wv=g&%FkKjIZ&&$Xs8gro25rzubtKP)=pEYMrDsY0vai+gt)kawMBBIN9-@2pMxEa&{yszd z3nc4ms^9daNPEsLP>J?*Tp8C;paXw~gPDKv%z{~uGqML+X|O6c&sDn`SL^Cry=!od z($3AU#kEQ|wYv`2>AKu}*X?@LiiK{GTkLW!@0Pe;*XR1(fE#p6-7>e_4Y?I=rCa4z zyJ5FRy%=$8-KbmV*1HXEqub;*yVKn1Zi{=CJHtKOo#~$Awz{+2+3p;7t~<{?*FDc| zbI*4#a4&S*-HY4~x6{4Yy~MrLz0B=$yWPv(Z%K2$!tHSvxC`B0_2>`W&F+ovP419; zyZaOOZudXjd)%M7+ueKJ``sPx&)r|R4@jT?rTZ)QA$Qn)#C_O()csHQH}2!^PItt8 z!hOdba2L5Tcd7fHd$oI)yUOi%KXTW(%XIHII9Vk3D#P2w_M7}%?tVwR?{k0aUguuv zuGIeD*{LhsjqX8F>G$00-P_z}-RIml+&A6*?%VF~-M8GwROgd!!aeMM=pJ%EaF4iu zbl-K?yMJ&GxbM5)cmLJhf$-Rsofzj4K=Ia(8)8SRYrMmI#Si{2W4A^uM0 zu3THLJGUseBsY*7&TYzV&3!PxWJ$}f<6=?Qa&=BP{E+)t)TFDQ9qouN)YY%m)t`^Q zrK?+WUAYA^GhDr~bakYwqv9`%k}T(npVD@SJwaL9;zssPbn(mIgGV0xuzuhD;KuKL z_PgIuL1e|U@}jyEmDye{D!Z`l(cZ()`cIJ)MPH$v+_>4D!JTQmu)>9U8sY2g$kDEwU=3u zJNs~^|Lh&RdUxjz<_?}Wb})B#?$W(uhb#IG>cqZ-yI1E9yPdl()9;ISWy`0lMe`Q5u!tFqKmwfMD{b%i!psm+zkb$*_|%g$Yg&*(Yqb{{;*J$LTv%^$w$ z;K81Q>PI-f)7?FzAaXMc&IkprU6Xy65BSQ{$H1p`eW7Y~QEjfLxn-lCwOTB#Do#~uRK4Zc@S6Vi5&i4s-zfh^ z^lxyqw>jV3+a9ePD-_1Y_!*JAQJ4$|RuUbZ+A^m86ykyCcxI>Q(C97>{mJM-wc4y- zRWwp(ORb(q!8{7o%1DHxmDM5(utLX?wYEYx$UJaF#AOtXM?i3FVj?;|7Ofc5J|(aGqK9LQd?QyV?$=muhdOXD zVAm*K3leKn6wgzThm#?=EW0|3_XfnX12#w^fb+!RAfZW(u2SP01nE4OZ5MQci@{pG zIGc*~D#+;s9KA%n>=XwloJ=Qu7t4EadV#);kL!1mJ?$1Iwa@ODm>fR0E~+i+W5qV{ zcSbziBTw=tt5$Cv9(5n;mQ<7z;w(jJ9DN zSLzrRfdgs<>r_tXp*So?S)(~GQy*oVGB58e5!72oSn79h%* z!di65^tquZzH4l}FjYqogT5DMZDa6Ktc}im5znefp2xZS}4R?1xlP zo%U6zotR;iHeGB`8`qDHG(&1NPtH~E=(t)(D+>x^7RJX;Y#ke?ebI{eF4@!`_k}bL zgYPG&2~*i% z<4&VNw{F+2N1)4*Zu*DusubiH!D<&w-baG;Hd~!mp zTVMkZI>p=K$E4p{HKO=< zx}|9iH(xdfR>|7<%Re0Yx2X}>4b;J+2O{|)&_D;-2cDf#5H0JXS7?XX7Tak`cDCD& zm?-q5(bsQG>W7^sX$8A*yX|_>??DVqQ=*2vB5Kc%_O_a63IXCnQAsj^ zIk|7#yTmda$Ay(K*%$2|mC2bf*&Gl)9uhu!+)HNiRRgrskPg}rwgn@J$Bw?CGkESc zR82-$(5d>E7nxeMG@D1K(<+mZyjLGauzdWG6sG;$m>G)UPsAb=$_@5Gr=n|7_DFOC_MjnX1$fJWVQVv^Xtmh4 z+S~Bn_PmB3DO$Sz%?yO6_ly!P?FFddxhl9Gz@!n%4Q-6U=i zRkRbJo2%)vqxBJw$PK_M~-TzAW zu9e;{W&YDLwnPoZ>1LeEAQi}1 znR22RC^%z7CO7FBsu;ZvixIqx1o7@EN6%O47r+{u%CMD#V)EG}f6!zd z8xCcl%Z%8v#;4I9iT<<*vxczP%EH*V@tu#uR%eNMv|{ zBEfpVhM1>~f*=y)LS>vjbOMkV(h_Z_X&=S2NpQ33fJ(0K7v$b6!tqK$EYBLjVZjlv zq&%B-X-b<8tqi7bKSD$9GJ!1YKic0@HCo$UBKd-*LRq;mH`zq!^E|gYK)CB87TttJ-$;qh$ zW`-xCLsAM;w@cf}lRRFK%R;%#5c*HGC%w|pWCwPcz_HlT^v7+P9kNC971;jcz>kco z=4mrM(gGW{cyFf1w5=4QAF@LLZ^Uh+#P(jyz$~ZT>?)wSSLMSEK*Z(GT{-l7QqANqJRh!-7vpe z(0J~c*I0}dP?zum8jyPP1s4gTHsQ5i9d`%@wdrSTU_O``2-7Ai5V#0~Cxn2YR{K?S zwq!QS#$%*89uNjV!&H6zGO(e)6K7o{JQXHTSsI?}tl>$n?k?Fe;;-<N;^=*83Wxa%YxO+ER#2O;BQ`0k)>UeQZ4*`4q;k|8 zRO_PEmBtR)}C*Uypez!&5HOKqVEVpJ9!DBfShOzHR?=+r|Ocp z!9m3h+T4zGi_4?&Ad2b1p0XPQa}q@JO|NF~&>WfxN7ku%Sz(fa&U!Tugc?%ggEWI? z5kOKS)zau58f$S?jcs-r4o?s5DaBbr{LZjQVv_}In5m`>7}N@31}2!NM|b)s3p09b zvy@PDbdrd!9tQEI?hAaD)3fHg`2BsE~c%*xy~E&MFch0*K!w4(haVlEq0<{NC!W3w?&)aX_psWzRemq=lfx z8YkQ*L7j-V0so&Gud~de0Z(Bjx;)t*#{M>sm?5+xJXHk^izS7+ z$YBk!C7e0v(87sh+UT7sz-b6AGFT@ov0loqIj=U03%oLsg%f?zdoqQSV)gN{i4%8V z^?cijf92gr(rqutdP3XF!_yv%-ZZzPc5*$OzGS91fekeqkhN)lQe+FEw=F158QZhst(JPt! zi9aWb65myNM&=RWd$D_Ocm~dU=gH3r4=zt)_~$_JL`5$YDi*=UNszzM1}Lz#@*UK$ zPT|SP#fVkjX!s}YMPLD5W0&?Op- zHw82U+Gu?R2R=sN1pNdDH^AlqwJYq>lR#c%rilspt-+Y5*;vFXVUG*PH08s z7;IHZ!kcx@Ppvi!IrwX6SiDUnnLz})0RDo{@E!eIhl;*nO#_$|_J3x%V9Oyj65-S7reZp0&yS#NeRY48VVBHjTZ@uKmd>$Ks+ zL0}++wNx$bGlGTj=_4LRPSE$!n@Z5hXoCCoVVtsISlwf2^%o~W7e*3r50GFeH^yB@ zU=d2x<6=R|8T)hGD`fg`fUoPBvpI19*OAc(;c#IPMCWw)S zx$RBD=ThObr<9Myysb&yN&ZC_`m)RCev~7gNfI6dIL~2iLK)~rIYxr8N-_b0OyQ7K z304S#4P>YVQEZYB;9zPpM0|oLZBDeg(P1yYiC(}UJ`L-{{W|vHI_q2Tsm%`5m;78L z+WJ&BcjZAw!Vxs1)@ua(55u~tZEHodwDJT_4$m{Kb>a?DI2pUOx)%g)WUkqsRkrD& zASAg-jj6A7VO)g8NLx%;AsMJig~-Pib+H)w)!=MGt~{QG-k~|MRXxVPC(dwGZOMz4 z?=#zfTWHIved_YWiQ3Xm&_VK&vG^fzZ@sEvs*u>h`3M8iKyhQ&PXmSkb>sPBUN96tW`Y3NtX4 zP>k05JDN|-JYf3Z&7seP9!uGp6|k(lsFKYuPlu`BJ-P?|_LFgVhJJbr<(^TC5!0-+ zU$yi}gWGC5HFpiKk$t(pD-fg z&O}G$*-)m2MXp1ATc^JDBTUL_4s29*l|#V-I;qGneoVi0$=fGPV80rK{X%7-woz+n z94rDvf2*jLKa1EF%^y8|&U>;k{(+&9F`Et5<6YhYPZ++%ji%=;PpitUNw+zM^`x|6 zJ<{rF5=N_nrYJ321rS@a+7bxO-rO#Setax*^SG3!(QL7BaaN{R%yxPDzUfFPuXcrG z72mZai3y>LB%Y1xsx$I5s;k&q6JSA_0(%0XF6H%NzgDA^5Md$-D~^u*Sbg_N9GZzH zfkV1>{6rYH&DQsj3Tb^Ot&6_H=aDCaw;}7X*BY`-Xu3jk-n#P>ukkrsN8XU=>!@W6AB-CFIV0?3K*L@k8F>h32PxKB<$Q|CEU|at7jyS zG(iS-Zn7PJ2XmmqV|ZL6?1Q`_ou19x%^rd{G z`9|@;R9$pD$gWZXqeFUkx7pon*FjaE6jQBsfm*_z@iE_hXo?17-X%dvlBj8@(K(ak zBmjdg@*~wMS7WRaYrcvJNq1*W8tkGOde=epkjW8F}C$8@!U~@73xtRX{@iG0QicxjCkEUa_ za{fi?}{Y#XadtDeO)21z#+g3R17BBdPKQ_gH9qY;ub zl4J~c0h)8%F321J(}|#p*-OgpHS}aAH$hpFE6ofplLp|N_&yH=8NTx#IoyZ`k*}o} z?i2NHO5QjM1c|eluw{;jX#mX>F&7}nYv}s3{2je8bX19Wyn~r!1CV)Ft*M42qdA$d zff|hvxjno|>ID4^JIM+l!#b}v*OZBrw9PoZQzRohKnx#V^cvArDXT77EB(*Z7ERBH zPkBG|pv^gc#b_0xNhjqfq}PWsk0)g7TMlU~kzp!^mLa-uFCBq|kb;~5v;tUW8V0PB zQv+Ec8=`Bm;A%@XO6GVxT@eYJ`TImsFhv%962Vta9abMz4 zypO{3$T>(}5=&=4ab2Izab3S4$Af~Sg3AQC|4Kogw>liJ5ggL7z46p*R*O830YiL+ zj(ZL9yu$?DpdSh{kvHhZV_>je!3M<^m+ET&R@+itMK(MnBUyrA0UD-5kjw{5s1T$> z9Mc()k`v@9{ah=!T*pfVR|pOWt`h7Q92TTi>s7CyeOjJmsN%N&Ia1f5tUcqYk7A(apwL5O@# ziZ_f)REEXtLw9y4l7~Po4mqJ29e0!rCC&z{Q>9CQ2v>(7kL5UVCSXlum-mfg!Mu)v zysq6Z#cxOl@rGJMy*CnO96S-?VN3YHLV!rQg~+Ee2*4)l$8uo7z0dOu{zsKNGp%(( zw$hV&AYObxC2g$4HpnCKUWwA9R-o`Tv#wWVMFHu8;s)iy-K@NzW$y8y3rOYyZ9Z3s zWr+OS%ZruVhkA!45eQ@+dBZtL=tiCiN-m+BDLEaZt)U;+mXp1_j6zGUUkJ^XNg8>0 zgXLzD?BC;-8O`#NE@;Lr$+{X)4WD(zdx^L`oT=8$U;q>l$0#6V5NhTHp(c?0eZ8pS z=kKAE7a8RpByVK374))}-XSv2#}fTW&f<@Eh_DY>B{UW4n)l#Pn+wQQSsY}wD~MBD zAWfB}14=ek5yjXpNOIeHSyy3J8EyGdUIMp6w2s80Q!YtCi$xU*C+^pRGWThvA{nN! zu@S9B79UjU^=KIL#wQC(L_Kl89xm*yiIywJ=4QiVyYu<`<>7~3FEFObgi%FJ?FO$1_#anWo*?OyDD739t@WX0a`G#{h~}6n z(#-TUvWgB)@B)?339PWSu^tm&dD-c84+mQKq%s)BC%-3CLP}jR2J$jcR<__5y$55^ zWmF7ZCQ+WUoFKLfyeB9~(*+#>U0^tD7>3B!%UEQrOoqKz%H4t0D}(S6d?k4rh3ntM z^8s0y0KG>engw%$G=$uHt=gH$Co6Qqwf4?4N)Q1hzgk{_d|=B=ltfx~)6@ZxLT<9H z%7RnCPy%Vystd`OPq}-_)9RL-b_GnHw3bxFT2hBtJVAMWHZF>eM|(8h*7~0A>Oetr z7=re)70Ub~ZeA;CRW~t_m<+{OLAqL#d~iQyWe0V3fWHcVW1oO%0+<&%aiwLgwIj0L zZDNg;Xb(wT8o*_8>a+f9cwlWr$A&h(GTp}VDr&*YDbL8CYCSPe2wUdo>8vZ(DSY|0 z#U@T%A0N~%e_Y|GpjX5Vn~n;N_}h0D}%ie-PIo7DS?@c)_IID^9VWsG)x& z(ebG*@D_qE2UM@rBk$N)@f`w9zmKZlt)+LOjbqZWsbs95tfQ8QaN=^Jg$R(~rMKdG z_;Hxmm9;8F**DWjniWP`VilZ*-sljo^Gmz47KkjD23l&b+DF?;xr%Qwnv~-nRUzI1 zrjw9PI@SeuR_n=dD_lww87QM27;XIYB@ z*$J8zv(TRfDp)lX%WLSR4;uHfUR1q%e&8#6>q!quOQz37))PRN5-Qa?)u1N)0v};e z=_yU9C$W>)YAqp}lwVt&Ps+QX)k;sa=(S+c`9ur!m3@ppBm3A|TBDEnpkJfUXEwt| z-~?P*q-6G$g+xBlEA$v$XE;c$Lp^OlATt(vVn}uHfbNCdEIOhG+OZRw6;Zf4E;UZ0YkP zgRJ0Qm~_aO-vhcP-a7SuX?_I=!_6@c74%Raz#s7s4K^xI~12md3Xyz!6mK^Oy~b3FtHix7QOaFrlf9%g{GR;xrqQd+OQapBK2_pl%%&4M8JTr0@H zWK?j2;5t}ig+7=>r|K*kr$*=m(f^Zmfak}jC-sEQ*SHnNG%Qhp%yZ{9J$k0h*QvZ) z<+IDaS8>aAevRtUbndfR5bkHSsD95oPeV8KqyA^OjHlERC+ zB@IjpF>QBDn;sIYY<|h}tW+sy(Z)ovu%--sYjn(NaUDA5)(tww@8Gya`z^ZDK;1U0W!0L;`X@;j+QYfgf5W9Uzjj0r&qQi?+WeO= zs`(xvbsQf`?^Ev3J4W-Re@CLWpnq+;P0d^qURzlirhE7rSYl_p)o5gsE@Grmp&YZ? z=W;;;`y8V(IUdyU0>P!;zhh~MBT{_|E(mr76&eY48HW9;C4@Bc;T=n2Qw$uiUXXI0 zAf!Z1GBm>}PTVHE7%XJBZ0my39Tuod3rj~#wP5IJ6n2>Vpd`4@NEuqWeFk?lqi7sK@pby8r+K0N&2GLrmk*39{ zJ3U@7gBFYRWjs)}KFA2)&EvR_)fA;bR;fb>HtYyp1_g%%=`=FKdE5)iR||p=Y|Api zHG-6n2vUxX84w&z%aGQWvZk1}AXz14zfIF2_8 zZd4sOAt%VamS}%T*heLE{h-Qlk3iy5?Nbk{wOnO97ld*@BwX(K&W-1{``pQe58dpfSy zsda_t&O}k5Oi&aC?TbPuYmF1%3ykQ&1t&ABg6#HZI$yPH`GXnyW5jKaZk)lhIn9H^ zqoaXmmjw0OW8&|-k6vG*Zo#7nB`8IA;7C9Y?``_J%XAECAOoml3QJLYT5X0vhf(dW$u$RxS=<2f&Z42?-BwE!1g4BEaYpH3N+H3WCw4PmWRHkGaBA;BV@D<`8Ew z!0}x~msw^)#y7ziK2g6c>>79P41DFo>bHXdZ;Jy%uMX0KWYBOVz~COCtI9Q?Z zBRFu81p(6D%uyU2TkMXdVdOOXxK3ViofYnT0hczyFDFMx%QNI(!~jvQO=)S890hX3 zi2 z)o#`a<^rf#8!BQPDaWu80%QEZ4dx3{&lYkC4xobkCH-!RSBBOZ%V0)(z+mQPMMZ2H zos@{uqL?;E92P4Io?@~@rWmI%wZ+y28*+b{#%Nfy+3@AR^}$fcr&`Uolm;)>ME4lG zpxiqI7YlX@CU~OErs6aqYD$_fGh#9LjG$jaBl$AOkg6s_Ah3bvXb=S5m~r-D!vPIq z{4zJD>cnSe0!uzMQw&0yl%RRjth)NAWQ`OQG&J@i(bD!!u2P_tjndmp@KM~~FilI3Y&0q}(3i|}R)HjatxBCSN z)Nu?dImXWewT4c=Iw}uf#Wv4Qbv8!HggFiLA=Nz_u zy-`lgvAA(2F1rINg*K(Z1d-HQsmZ8eCN77gb6b_beXz>Hp1e7 zSDX`Mjc&u2oX54M9CsO%;G@B}I5(8z9#g(rFfTaF*dpQ6#Wv6^^Jzy3+a1Dor|kCX zQVDhk&k1$7R5yYK%LQ>H8I#aR>^OciIv6^jgCR5yBy^&2Fu=;EppVxPC5Op7PBSSr z;@u_B?UiEKx2m0ry1A&LJNNqnT;jl+D~eQ+GR zSFa|`6Qu3c$NVwDboxNJk@F1xIA;AU46iMStOaW9hMFvNO{G{FHaZy(I$cJ9Db^+2 znn})#AmdVQTcLfXP%*KU+Q+og6zaDLCw_t8^}%{bQvE+oPfw105vrP^iywR9Lz-bF z72T^i^FvBFxHFMS;lL-x^T9K(lxyrkau)P(aKUk-_NxV(1UUu=I1{bm*w*0fl&wWv zV?nU2YT+#pEQ5X6FD?$BQD{Yh$y-p8TyN_Do* z%UT8zFdpd9H~aq5cpzWOT!jZ}&2KH|VmDbjly{yW0E7S+t%CSGB#S~goU3L*$`N*& zzd#V4!Lgtm%}#kvutm_m)Z2qgCp_`3EsrlPwwU4-e7vNDYznB)U<5p&Ex-}S%-ojV zuu)l~%20!F5$X@z(I5!LJZ0bHl|-oZXRIV(`XUxSKP!Eq zZ%K=X&Q5WZcey;#XfzG5WfYSXtJ;v07mFMGYb>5qk~X#m5vM)3BG#c9@)(h5r9dcd z%R2MT@>yP+JQ+=O@;dY2*-t{lS44%fY7&G6KL~NHAW1Ob4Jn1-C@gpm!Y)8*C2wnF zR7jtI{#_Y7H!>d;{pYo#(Z~>NXf3Zn&oYJPzLi#?$Ei)NL+|^Pvsm;<$kF$TqDnlP zL@cI9D)2{VTccQpMy>k~k6l2~d^!;7W2<2I+!DldLb zR2!rNExFtuHW9Ob0*(ak#kK8V-0bv*5)1d`}2lMUKNod0HLhWO6 z;AoC*G$oi1$BY4NsBt%FL6~+g73q!EU0W-MV?d9)iwk69oG(K%dH= z4i#FxQIa=<9_8PusBmMTL7`(78tf=p{1Oq;G+6C6$Ip8*8qBv3k)v+?yxgJ?D9&2Q z>&fL}sk)1X!N13fpb`27K?(A~dE5cYmkENd<$}o1kRat~7s`>3oFJNISa5?N^0G;A zb6H+IZV|$)P7pF%s7h7Z$8A6ga2=2uQfg>eqt3A+CN!b3&<`P}ft`}2RVB)<(isB6 zI1+=Z0fkYRWMRw`#IZotBU^N9vGz^m!;=to&h-lR>Kxa=4FsNPC8(kPfFNwTRFD>f z5?TaG__#bRU7`II+D{ZP?Lc)5hx2Q+&pEGneLF`~Hlp*~d#(1F#^HIR+8@R!#d%(*nnAA2qD6-eP7 zvoQ7}I_FOthwCd#QcM=NNb~nfw=qh-eLJhZPtpVygaNkyyd1iQNxUcLZ-@q~Ef9oV z5c5Gn^b4*q`UUS4!c!N*LnsK%F}?rY@k{GB^<7qche}K{|<$QV))#vny2} zZd|QnxMcJc7A3_2Xf?0T%*j3#{m)HX`319(UwSQN=1aOQiPdjY{%5D~HCXzd@T}Bt z3-5X8rHQAcHXTOvp%lI_2tjix72FP^N?Gr_Bpk$ zMlcfO7|jaA4MIoN3nmBxVLjoPeqn;qi=0O^IFCrsZ$yHA!*Sea8OU51f?f4t6zz2E zKQ2qOAS0B)oE36^7(x5bQZRxhEYYAFL75i8dcn4E+#!hKg_4zm-GUjxMS@N+7a)}7 z7$v+!aJg7pY>W~!7WPccu}rhEvWJ}I_$qThOFD{iqW(ziNDQ({O1lz{pW_57qCc?&f+rHsYX+P30dHO zu7n&w{}o^{xs4)0t)bOVoEQnx-jL$fa!C2!J?lkyUqZ3>OZ8^E7XXX> zl*R-f3?2{zt?2^*ukU_y=U!awzhOY?ln*A+{j9nRtW(Lin zkHY7eVGp{Mx=@O1(IMP>xgZoQ`#-1P?m#!s+$aP6gMxx-8Y(2`)vSS;yp90qFHyVY zoVvtU*puRT?-+Q-qRZZYF96#e&alykEZp z{2FM=C4Ab~Cei|K@@?;YHA-FoVZbl$hS}nDEH#OtHmOb3 z$7HtDJ_Ni1s4`q5JP+d0xJa!`T_$fgSBH1t@OiMB)mFg^aI5yA2RBA@P=~l`r@fvU zTn-_iRb5693iiQFedQcM|fOX(}$1VA3E2^0jqS(_>S_`fXD;Q*&gC=DVmjMsLgbpTvwoDNH!@vmLGndaSJj~@Y+YAu4n&=_Hu(^EZ zX*s!y?OLQ?zjOJ_NhsLIm5IDERk}d1O7K5fJ~J`vUCL+f(v0jILLA;=@a5@mCTnXg zS{;Sd1tme+af`irS4Px&E4sF^T~Q~^lfo_IU^Oq?N>gt-mL zQdN5K(PkPtZB19g(F#m!0!Imx?IQ{}Ph1pP5SrQNXwT$i{1_9@ymM>o_i;{klRWLY zoaVWlW+o^!QKLmy#^!RGOIc~tQy=DXnk})4S+9%N=HbF)mdEiNA z-CVxz)E0$Ij?U%l&gJXcTMNp_|Gz3?FTEorfLr+ozEIHVeV9EGY-X7> zg7pOLN5;*zu-FKnbJS;!^1qg*(YJdK@HM9irOp4J(oTC{LElTrYrM0Md8+Ph@opTka0Z>Vr_z7rpbV$&6(_ zHdQyNSIBu4knh1L(5??f=>4?*RPQJC z=)1Ztfged#O;)Z;)^ z&ujAbNI_P>K_0k0k6kI)CrHSM+YxK0?i#_IAj$2-)hv|cUuN;IvM{x6Q;LFO?qq@y z6{T{@^beLF?cF5qHMX5(N3)9W^6#>RSK9bqvtRj=vtwfwhnah{x80~AyE;dg{~hV_ zf48qUC|}?Qw!YVBv@>nHx=6p1+e!MJ|DqX7UivlS`t6ewN3;%&S0J5XaXMzncu|`y zEF4`Vkypu(P!tH|WPSn%1UWw_h=ig*kXRH5$1GQlqCk?D3!*qEM{!WkUQbyZ#%BYz zB#xhM%cug&7TUvfldO*M+qtMx`<2p!tf}t5@55|ovr1V!pDTD1j-|QCK;ZR9bQFt( z@J0+xqsfU*L+Nl=Ciu7(<+Df-rNi|jye8>Y2+9P@X}-@WA7sf#Ud33+OjQ&AKni5S zKHsai>h2qhcb)jobYe{jbgSofczYBhYu>-T{0-CUZ?Z6{S4UYjS}Vxexpw8dE-BkaCn2qm~|z z2LHX4nlNb*Nm-Q9!E3WPNENz-*Mw0i9NYST0VxeCt5zAZ22|5NTc98q&ad zkcQjxSRUWk(>p#sK0#x}UmueQ^5!~N@ZTKWFB~P`9QB_DW-TI*E5F)|`cM-J zvVt|KrT8#<;W-j}#U3Qz`mop*jqb<&H*?j`Xq< znALwdhGEb`3D0^=c+9|D2qnw~0$?HpunYN4#@CJZF*{ZUcBLPEWC=wb2N#I@@4fj&dFUFeKcn=dPx3AtJ;9lIdjE4Sro!-j4jK_Bg zPrcEW8F;E^83%CzcwlKEngG!ev;YzJwg6IM6g`>y4aP-irj1;N2Sde?$D#N`&Pjup1N?Cz>zgQY8 zuyXrKRR^LgIt5WnKrjzx2~gl?@`?<{JRZ#Rc*=P^6k`QAnw^LDy{;WaQuPnH_5XB~ z?4vjk0w4=iOD;r^gg9QA@X2S<~5NGCe$r0=Hp^WAiP7dtwdeEZu?#=GpA zM#IMuU5z|z{RmZ+?|OecU{$$)yvt2$jjbxTG2kwZH~X$=YJ(NPd|SH=!QJd9T?QQl-#g0bwg=mbg}G#uzK8Z)#zTA z?$Jr>kp(V$67+c;fc(=jP^ygd-zx^3~_=(y3n(cNHu_6|^5LreU6`E0v1o#DpycGdq z9;<;t?2GCnqu#yGc|JB2X5}%U1Lj3T zf|h35GxKBXn1TvbFwGcX3)&E!Aw_6vP)ZR$C=5enb!n@HAo^^QLa)BP`fm7u@|gbL z`tJJ$V;5bd2k+abug+ul{h!ney0f@H+aXQTs#T&km)1^&HL){G6TAg^(VBw+kqZ%^ zg|1w%hJrPzf}r{IeeQ5cn6@kz%;%E%u3V6(AfGB&Nx{lg!6*fzz5wUK43tohQ-RZf z!_cd(Puq~T724Ko+kgO`rrtm+94z>Weas(l(F4!UxMyiK#po5<`AV|Wlyh9LP>_0r_)__5J#D+;7GIEQAcXK(lkf_qnMrHn&sI zo+5M5we}hI+VDQknKpd(ZgDa$z`h|(8Et0@0SFG7Z>?bR!4U%YXaL3&=jt4ON-T&s zj2i-#v5&YO5RNjwjRECbw2zyJkA{ZDN5em>*FNqcuwRgI^fJK(f(eHp@vBwF7i`#v zV}=Dc2=WC;+PhKv_)ePzH>-^Mov!`UwNLr8wEwJd{d2U>^;-qEstg8up7ytCqtDM5 zTr2njL7w*_LF(@i+@bo^d5QL^^HRZWf-e)?g%+CUUTW^FpHcCZ;ppdU>(ge=s46ek zMVM9mY>?foW5zW@f@puVew|?AlXDDbb6tlZhz7BPg30%UILCLcILE9E$2mcc^MVTn zmk6R6iDUwo>-hPCs|2~%u;75;8o@rnf?&Vkh+tL_h5&BV^}y3~Oxw2z(pC^nThA1v z{A@wW&k^K#=L*ut^8{B5f^^Ea3sMfUK`_V$zFd-+mn9>L#2RGLEE1^H(BvOZz5UD1 zQm=oOGF*FU|0iCfFY`QB5>=#A!6=mtl*;r0!bGUYeyvFB)ahj*jt9%1Tes_c&6Jp< z&m+mOmV(ndzm4vdCdcJ9==3#pGqVT{`~U-+U#Jhd8AD|R8*FS%NE^AuBa2iOOIRhy zakU`it`*vpHJj)y^w@}Ad>dc0MpLm2!qvfX0&VFw9SCibXKRnF&{<4B^yC5D*i66A zDexy~EGM#pu^>JZ7r^vYf@x-^Uj4Dem60h%t)_@_i<(9YHF*}A==}x7IrFlC$=cy3 z`3nA9dLuNqx%n+dGAKxO=f%}OPb#D(oo-?^||<6T8ZCZn;appBFAYKfQV*UOncsh&MY zwCIg00xj^F=o#POFuI&H#t6342-Tu_AvmAN5n4J{`_WPmsY?6vw1E?N1p$EZ!4(=C zV!`APhv*4fn-!Itbd09%5d=T;1uYVitkjuAL|QGWhV12bYecUq)+qGepz>BDBI7d* z2hD>NSWPS|3KzaW6TlZVAqOjyZDTIEcVL2&WX;Y%3qGW$)f=@YF_@6R|sVCz3t)M^}CFKO;^uS(GdIW@X;ATJ&GG{hBoqu8?$ase9c zGiLQ_0Rq$&Py|mx2ec-%0Wk;<5E>ycgpD;cV&O`mLyXq!Q=$-V9p-4`D`alLGT=Jk2uz{YvmtaMVn9OUh(Ua(Md(rART36~&gY-4!c zxz)n*UXap_hHC96H&Q{HkTNxrG%@<9gu#D&wA94R8&3Q=BbWFtL?HZK>OK}-9DOS@ zTybW_RTXz))OHo7Xb$rg=A2cj(`{YL?erSo7wZ&(_{n z_i+8o>mP5}*6{v@#~S+@FKs;91;U{I=#NTCQt3-ulM2Rc*Jn-P_*Q{+9M9 zI^NdtNavZIS9RXq`DoWmyRPZFcmCG-_jj-BKGglKo`#+sJs<3Obiug`?p^2>zHZ@< z7VTN|-NgrTUAfoi?#xZ)Z^-{>$?KMUt#?K59liJVZR@+Qe@Xv`2D%2f3_h}S(b9XD zxnzm?({DQc(PuS0>%KF_&#Zh-#dB`m zdf{1JXWf4G+H<$bOSzwL16FW>O;$A9a_^Xtz4#VfYG;)y*M?|Jxw7hG`X z1@~RJ^upKd&F%f{D-T_C{zdnXeSY6ZE?#o+$1d4^$(t^D_azTq+IHz3mtA++Lzg|V zzh(a!`)}HR$K~>)eRcE~F7uVEXbKsi0jiR;g zpe!PPkwk-E{$d*;`27l%^NtXIavU@W^!t_K%jFtNL>1L4>2Pbqek`VZZrIOgEU_!> zSE$ar!@kywbsr1+m9k~WcE0++zH4&ZFS}vi6+8A_^6D%0UXv<$>Aq{Oz3l3%a%)x% z4-Z?pRdhSutK9*&&t2nkZo9k8-Jty|+z$O-qBB>xy*l$!JAbXtUhS?@y*0{58n%C% z-R9IC%GYn!=xtcrTAe@JZF3vsV-2Tjrk{1{yO-NmzB72WKgIHFnH_(W`h8UUQAB`( zPj3^j;O!>lpBYNl-{rf-Ez)&u(o^IDcS&FHS;+;W%OXpnAQOwvTlLF17*x8`GEr$r z$rLNq^VRCf8a;bNy&HAw^l|hJZll|zo}T7TcUv?dKEplRo#~$Awz{*_`*TFU^F+<( z2@lVAFK{muo?j#k?{qJAFA;9VvTnC~x%(}5zI%n+<1TO)3hRI7Zgy{Q|4UJ;N8B6T zTikzhf9n3iy;q!ezxxCC$L<&IpWPq2H@VNa@4BD6cexL^U%KP&U)=5PuiQQE3+_Yi zmF^;U$c?$b6ZIzC7d1ZrlKZl|*Zrfr*nQm{b6<6TEgC=W{>XjP-RHjHE_FX~|K$Fw z+b=p_?yeN=uM)3a?OrARxW-*8Zn(}}?|$1oDjvDf{f_%x_geQFjd|bWe$Tzm-Q<4X z{nS0?jzpO#a)0k0azAi~-G|-7?uYIZ?nmy&?)~mt?)&cB?g955_n`X+_r0jXeZ+lK zJp8xrv+i%)|8$>ouXjh?e{p~5KJPy1KIQI;vhL09XYOwI>8e*>b(t7e zb#^#%=5s2}di6C|LvLlH7DZX4sxI(?)&Um}+^n)U=wB=>{;BrgrGK&eAHrnh-lu=D z+VvUje^yVA_1qt8{}JIR7IeD9nZiqE>)G30?Ak85X5Zy5cg5c8t`a9O4dwJqYL)ky z4NS_#ftT;Q<|@}_zuoqm(@CyK|8fnVG*o+|7mIV7>>fShqO(Q4>xJVt3Jce}cZwSC zcfWE|QAJc^M`1sz;h&q*nHt@_yLi8NzP0!b*IE3u>nc9(<`?f#>HAzy@t1Bv@u#|f zNAVXr`>4+RP-pJ3s~%SiI#kwO{GuKIP}u8GZR+$CzpJug-IL#+NpjZfDH~LKqwarN z@j>@89q-cdZXKVm<6E`=4sGw$_9xnIQ`wz@AJ=w7+b6W$rLs?Io6yF6AF|&c+VB1L z`>1|G& zDL!6&XYt|UW5u@=KVAHJ@dHoy;^L9wSH&A&(zSoD?H5mVUGYKT;%WVf3i>PFPyOOI zivQ{_D*j;hi;F)A=a1~ktgG%#>ZW1w zm~W5jJe-slf1d1}41G()Cr|n3?>D`rfSt!gANb*$37)81{0_Y--e>!d`K$diRQfr|u}f-~N=y7vD!IS( z1huI6#p1W^o{#uz)w_V-Qhm>z{}AZ=sA|v#wg`V3jO(e;X&Hn-RIBzvHJ2LZ7P0GH2zsq=Hc|;nfK?q@}K7h-RT=ik5cEv z7kbX4={wAn)8a>y`qIm;_)~G{ePCj7U{?HWcxm(GlykwFOcQEOWwgJ9Jo$Rx`%_)t zrTbUtDRuhClUwu;&ysYO-}H~Wd5Yk{f>plR)*!#NQJ$;+%gCRtkVnf1Bdhv0MJIoP zH95v&THu^~}a4S2yX3>DS{^ z#d->V)Pf@5Wjbc;^wa+76#l*UR^whSUoGt$E;ZlqG*Lr;@(r^B8PNkOmdo(>szlBD zR9URL^F%?(*518WT<6ZW-&fl2r59hb_ab+d{a$CkH(qhsC41dX_WMTree>1Vj9um4 zYQMMI@4K#j^?_^Md+qlF_Io(AJMDY2A6t3)m$rIOHu=q1N%|Kr7J2c%m1;SkRU43B zwjq>iBG1mAVf~CW@~PBu>~59L@lW_>sPULe>x8KrY@88k&yUPzFO4*o!na?myVQuH z-5RUCM%T1RDt^~sryV~Wjvp4q__%z7#w*n7G)O6ZZ&SN9{#JRU@gKcmgpT*$8jfRW z#H~+Rr=SrXiKvn2$kXbiPh*Yv7)iWPrI9o*qxuSI+TXDa-1bQ;Z`GClxzYav$ \ No newline at end of file diff --git a/res/menu/9165683_home_house_icon.png b/res/menu/9165683_home_house_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..df9e3c5990bbe988d22805eba6c32fb31cec5dcf GIT binary patch literal 18176 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 Mpfe&so5dFYA3hku9{>OV literal 0 HcmV?d00001 diff --git a/res/menu/forest_by_forheksed_d9q4k94-fullview 1.png b/res/menu/forest_by_forheksed_d9q4k94-fullview 1.png new file mode 100644 index 0000000000000000000000000000000000000000..b7fe19d4f6c1530a7fe4ff2c6c48eec71d2ef657 GIT binary patch literal 973465 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%0A{gOIWV4 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

    { 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

    ;JWtQUSC!A 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�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

    o*+TV}w;y|#HC4;y_+-)tWL=PTli`ZOsS1wB} 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¨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

    tp$!{w{nu!Han_71FpFFY5@ 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

    SruxM8P^rCO)r^ew%lrHAXsQ1)9t


    K%HS*@7U~UWHgfuS4)t-?{tj=UCQWvq6+( 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

    yA=Im?nM{S^5V~!xtl~pyB{hYvY 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

    `AvsqvmIInHhWAi1YV zm+{^yj)&mf(Y_~N|HQ8R7aR(}r0@Unzo96N)MJAsCXyf0Go+!BMx{AHVd9^nokFnWqRsz{UXmYz&JE>UbSA#i1*+ z;&>)iX~Et(?kfZ(2$*m-5pa7V)lr1S|LlP;`wn>zw1n)*rceXr`Zw;7FI0hJLbs=A zNSf5+O^P<|C96`_=ETaW)>%L$ntj9ZXlcqEq&G94)VKLq1Qy>0G&o7%s-E>aAfW78 zuPzH7eopT_c_@bfmW+vHA3g1W0gh7ych;OmRh2MQY49T`CXewsnf8)^o^mR< zB1VXwIrZpueAaBCbDMHJ+$%vqpR7Bp#m^xY4geAR7W1va6v8ZI213&q)ja_b7*|%; zJp%_R#md1V;N^_d0{w#(opZ@&iShiWGz+ZEfC(1GAw%ut}tsx1F) zykNJdSrE;X?9HIg$$p{rU~ur|^Y8sofHjyouRIXA+tFT)TR(dkjpNm)g6gtYgDbQi@@pF6rt#9}-@Z`q#*v)pd;inFK?A0?y z`ZfYd7V(E!Tu!$T$u9nq)B{St0Bs7`UHJ633@Z)lj^||1bSLvrfM<3 zHf-#1_8I9buIO)iv0t#Y#c=N=_RNwQHAVlX3G`Fj)FAd%8|yd}&h^IWJo>s0n0hhn z8GMueeu&nX#fd^(BZ1;*uUM1Rd}>y|KEUa<#|s&=+r3gdEd6~vs80{Q5+koP+HZc{ zFIl2o_U_i7`Cf&BDk>@|sSz9~3_YWl*E!eIh?MshOaI6u2Q<=2;~YUbwMaOjNi!Y9 zDuD16rd&7*qvQ~`*^B8?nq3at#?g+ueOr9ZV;-ekO}l1l0bt^i6a!8S#>;z(@~s`D zor)DezB-WISEI!a&oeh6#Q53r=2pO8FpBCJJ{8}CHQOHJfcdomys6dBYPCi3M7I?tK4Xj3)pNuhf-~o_dVpiOJ!L;=Ja`c`ll~QoVw2ULgj6 zJ-WZBUo;V2`S+%vKW6!gacb0aQ%fD%l2XL^!F(ev8+s0T5cn&Kpjsp&{{&0)0O8+* zdWAWG6LqDS9gm_LeJh?TT7RBxZ2IPvD(0BFbNj~Bf|7KZuY8d#x>oCP$* zt*92K#yD$ct%R6Y0DVj-yQr)aDaUxtBU_j-U1Q`l5-|Z8*K)*X;oioqaKurxhu9m4 z_YZ?Lkyv~$+7(%CeZ(uBZBpr^Xu8of(R@rTAHF*4F#ZUscRb00GcUfPiEyXo_o`#YWxMW31)!$+b-%UvP{seHES; z;%0=bo!*yN3ZBJ_OXgdMHLzjI<;EDy1Ka|$@%a@;PxYt};AT;tUU{{WqBYnMzGyCWp4i0q+S~Bfv$7 zF~q{j{72q9qZUO9gOK7b+NAs%p&Xl&3bJHD`|_0reGHFsi|?JH51>_40+Ggj+`4gG z_LA5QU_EU)H zvBztiLI@;GZvc>R?0pDkj8*SD#;AhYt6@F2pb&{k9|=_}LBVja4=Dc%28-{ z(73-&i2n}8B+dXwU?D;7L;NHHS)L0#hbe?`iuUz;M!Qu(+P)1#UF*CX{^nO!uP1eh zJ5{DN16U$rGXsi8yax`VYULn`KavyD=Th_whq^jXS|lP=HRgH>Ow{9rKW^3zIxw4 zHEgZy00a&c4H|T|qIxHmM~Z}QiXf&ZwX^p(J3dkujY3}wIL=AQVhS;zR#AslMlUdM z8(^>g{Fe;GJ91ZsqA?9rzprYinDR*$rJhxJIM1}*m;Yh6@wEko+V43v?T4{MFRehC zX_~Q-U-)ajM*by*7GGRo^!jr)tFQC^Fer&TgqRl2Y*yf1ylR1EJ zOW_{M>F)46JB>2qt8}b9BN>@*-jqafyJYpjGLVfmPhoiZ`H`TA*CAbu8tp|NdJ)`d zni!K>K>$eS6eEjLONR>YfnqO+bC|iyF82(ClVTDiefvG%kJACr(~0Zmk1G(SUWu_A zmi7_qFDL)y)@o_5OOxUQ2x-x|GAHHja^Rt|vL(5@*ReJBzgD%hf^5`O69tHY?Z z`RSk8 zDq^Fy-uVXF2-yx$T)jsD7{q(%OV)C`m{G-hAEQvC5G`y_1CZKT$$DPAhDk*+f-bd5 zG=Y`4pms)nvLSO=$zZq%%1rlfW%%+>{72I zlJ17u(>c4UG9sg+k+&;1!HWZf&xL2@2fCKMgcK_Dxg7sJBG4G@ruScYr=C$X{a>Jo zq}c7n5W-WwiQGs(=~f|`UHOaSo07yrXzQv_N;K1#Q0&6raX2<100QPd$A4g~5s~{r zGV@j6o5B#KT0+mI<3>i0!Ul@YsF2=zlCi_MsI4#XB?AKV^@5%R2Lfg7Vf&zi=|-@J z;$PMbLX6zFee=o&zeXwcc2q#*1A++9rr4``=hr&Y-rwZC-J*vfYj!V3uyG$}jyhR+ z5Z4`X@F4CukP6suq=+|Cc&Xz<m z}F$2-%E$;)n`u{>Yb9%tEX4?24L0-iRMIVv+awu9#hqdD=V$dK&BSe zh=-&+$G8b&Y_{C|6lLc%uQ^n8BZ!_N2SPBg+0%tDgJXWj|XN+Hsr z;6|%S1B?o3>H;W8+{frCqT(YG{nt052@<~e%8 zJJE=G3e_ArIs@_N!4L6%5?a4t&1S_!A5Zw5?R3r79!Gl5IJXLo=3swt+b~!G{SUoe z5Vit)rqTCGs~`hV^!HtZ#)X-h{K1K0YEZ)jmB4{l)LfypMut4(f?R$6${%sAt`C?EzUj6xk-?Q!(2^=@bSXCJdC7XGRO9eR5g zz}tskU?*i(n%%x2(U>GSM5NtBmF*+An5dqwYlCl~;=8FYnj^K6U@OjH4*z~G3YE@+ zOMG?f0BBt+nI^?_Kd|4C{(LP}%oDWzi+z=HN+((i3jq^TD?!Xkv%T*_`i7?(gJ@T4 z&riL2iGFAYhKHff!ak^C;Q4i%HCZ7K+k@SE^|9Xjzk6kpqvrfq*-inNNu9Ki`Y->? z9#sRdhF;-=ZHI&Hz;?n5djrfdI5)Q~o@TQGQu0}$Vv5y`M2i)7`Zs}atxuBnrM2FW zxu!Q^yimkuo8v``BnW!~F-<6kO-<V(C1G-!U!CRe`2OsxH`*yt;ld7% zp+d{+_qDvdl2!`hoSoZ=`>g;d`iCN>N|9h2D)+trJCg835HLh*@EQ&rKU5)p=hud+ z>U5B(7^%fj?7z_z1cK>P$F>Mm{RtmX478`l13$YH^>qxPNmR&MtI0%gte^K5p2sl+ zv^a0q&of$#Ao>VOYl?9{q3VOlj8}?JBHs(pgr58l$BM zJZ53Rtv@&7jTHU|l-aH}ck#ZD4i*ZrvT! zH}CO)m%4bK(cUycg?Suiu$alVJ?^!{Ecz)#%18swO!f{0lGGls^25LN_-Bdg>cPQ# zzuqhV-fbcGRO1}e$~I`X13SX6W#ypj4gff&z(Dv9ahk^+6rIchve43*qRoZ{F+3Z9 zDzUCD*CH1LYXhZdoUuhDQ1NWQNU#g9%&n9M5JWjhj8hcfW=j?l;zR(xRppn!A?$^} z_kPe>yocy1`lkIp?xUxcF}{#UU+a+~POv>A7!p-FJ1xNsRKyw!2FWmykB1KG5<6~;*Moz-Um)i$% z%rAtt($Q3*zfjJ^n<03G0S8@T*p8AOM`N=)zvE)(7rmmPMGtUS{Lj1I_U>3cf&yBPaUBf@2?YFNIh1o5OjxII;EYvSI}ABh z5U*_Ipv21`{Mf$u@sHhT?B05CC6R<|ZGFM?10+zo2#t?fE01NsTljfmA zWsC_7=hC4!7ggp&CBZQ&%mj^q_Yp*sGPRJ$ppTnIRn6>_d4*1W<;B`s&70$cuZkq( zd!O5$KxAQ0Z#nD*dax&{&Qw8&)M>tU7kU|T3MJeMo!%mxZ#=Wsvk&yNy04zzIoNn0 z1md6xsAC6fGyB@Lx1_20p1G=0gm~l89lIfV80GOeyWPKc4f?0s{NtT}7^sEpm7iD* zr9&oVT9n>tn!TmHyS(PiognK}X)O5Kb zDBPn`d{o~lg){-$`M&Nq8q0Dl0I3#STULKTvvaWLcvKY?-?RDTxrz(;Y^cNgx@68q z4SIG6SaOnrCpz1MX7OeO=(`687sObb{MW+Q94%@94|-yh?#D478nFUt(n)Poq!YHD z%~2G?HB=28fb~QGVuxj^iWaLx_`VeVxpd1NY3d|0BWQ;Y@%yeZ8&^7AHOA^`4_a#G zW@NyQ=f%0fEqsocuTIlEXWAPDM34H%VdpR{gAn96|tfjBqFTY=)PSa3Hp|U@v6U}s1 zWRA_=eugoO+gd`_DQq>WtV!_}v~6yo7T;Kfe(shZJ>~Tvj>XiJ$pP%b;u(ii+DU-) zZ+^k+L4;R5=2;_K(PlA-A;Bps0RB9YTOk$s;-wwGc*A1LJ=jDLhQvLQVOri6PD}sLl|a#Pdqf0Fh!k>G&A=SG9Jvu^Ec`)dA+DNN!+EP+%xk zRagl2^?tq@^9Oc$^!OViX=fyc_E|LT?q+ZKPkzjpeh2&S;0;DT!A7i5DD$EL6Iwqf zuw$#Imux%5_ahPBJE)&W2@fMy&u%B`eh6P1v3KmL+7jh(m#fQbx4BQ)*A2ZmTz9&@ z~HXE-&{y_JD+T2ejKJew@7sXpewIvLZc~qn6*JU zf-XcWn}4ZI+%Wtj)yydgt zEzQXomlSX6H;RBAJ)SrWD+dG?0Yb2X?Ew)fOCBU0-$MN_p3w?H)+PW91ValRR?>%t zA?Ucx8785`%MjWqnlW3>(9^FXO0@-EtTg*NAQ^%P843b;4+z4URJIX_W4*cvg6dh4 z-KfvApNn(#m{YTvmKL7V$XIsb*w zFQD}3AK!fYYqs6^*KYhwzWS1t)(w>3Q2}sgFotp_gCX`q)m(3QkFnn&!{vxBG8PBrEq0wjEWyJzhNF9?q-i4FUIAK+3ahr|kWkE)1pNQ|CQo*n^>nWgiGAD~G3>ev5WFOIeumCPd^LlB5J z%@Tp)?>YL|LgcOeuKkd#{ZH9)oF&yyW;!;19%ELJ$34XPL9)3M7+BBC+szT5wJ~5q z-xQ!-Gqs}c#piYq_K|HovW*7Jkpn4n8dH&&9I>~mQ4ize5G)@ddJ@h_8?5O2LOGta zX`<({lM{NPBIv~iD-TUu`NOZy_YS}gD7}L|-_(H{WmYVXmK3N;sG0Hs97I6PN&+fx zIEcfE)#Cf(yfp-Y-z>>->AbQOH`Ty&s=T2`B`%1m@?vK1m zeDT=}s)(-8f9p1awmuMh0C%u$I7fh#F205tpd0=fEy?yT|A^7N6kMeqJvPePSWe?u za-I8ak*r3l#Am`zF}WxhH)>#c92?5KQmCxP8WsdMP}s zC@=5t8SIix0{h1CBZconIyqExsk|M6P6)*DK4@2i=%NSO6K4yn(n)zfw$Zfd6CHut zaUnoFSM@BTO$-cJ*i-`froMBwC6QRb3G19m3Uy(z93p%OvBnm}!ybc?mYaCqDD4)m zdw>mW)d~tT_d?a#k{DeC)kpHE-dkU`%<#cCwni0&7BtAPY3#cU>h-K?5WzUr`BZ+J;}@(CeOfV8UsKGfjO=v;#qgu5NXbyEOS2gCC-52AaZXY1U9OWvGUjv zqaZN`r?5{v%Hs%8*uCQgEsp*Xi;Z|{P^uyw?!S>UUoB0b9|}$%7Z%&_aZmn{h41u}u<4#W^Q+_v+H@#WgFq zEciH(F_jWYyNRYd+n^fZcs&KAakls;oOiUQg8qy#o1c7a<^?DZhzN?+8wW3U)q8j^tEY}i1{$qI0t8WS`*w$XTf!|-&)wM7dxT#wmIWjIIqWS6Z}rY{CVryjFa|20B5zmMt9FXU+>B)i2UK5)m*H zons;zdbVEzg{iETW&#mYLy6{q^XzpNxaXMD#r8`7>mI#17Ko zCZY&*7qNs_6K>ql12cm2Lk}RtZ_q1-J&ObjB32l6vPW-t3B=n$D^%z~uf|9#ieF7< zT`08)i=56DKcAGGp0quRtI&#{U9;Z{X0rkaNDh`{su;_$Yp!K`yJVV$8P0Q(QEQ?q zHTGkpjJ4|g3L;~m!XSxfC1Nin%r-s%hMs3Y&a{R@Y0s)%XO1LCz59iTIgeD5$|=s7 zRLlY3Oza=KD5qGYC3g)KozdO$Nch!6`=9=kuYT@QdtZPB&wbI zm-%cDN`(6P#Qe>#)mUOoN|}4lIHPs`aaBw>?Kz1~UCXJW&fqkHXR)`Z2oU1o&9COf z=RYxU5!G;-tMny$rKlhdU)FVhD@ieXtlGKa=B=W@on5*>VX-xK{%;TP%=FLNBT#&1 zs}%M{>`REhOze*~im)xZ6#)Z|q#@Xsm<%-qc(R4yCm@j1MF1IV%t}?P3;g!60dox) z#Lwf|<7~&dLq)cMK-R>)S`Y=WdMRaMQY2HFpJ5xj)(ldkPlsbP0g~wyP!X`QnLhZz zR}=Zns-}{8l5I|!+Wcg)X&5-hSt6@R-xE(q?i5KLt87K=i%yhCi8AW>P%)bHRrOV} zQxtSl_8>;GUy3C=F{8##fh=q)z5=mOv@kGvXZzXY&roW!a@nd3Gnt(eHmxb?hqJX6 zgM&$6Zr?BMjS_wlXP(u*rXZU|{p3B&)z&1R)Lc=j;jil{fKDg&oi#fa)h#61qlC{4gct^yLALliiYZO}Slf zD}%*eY)l}oV~bJS>ef?SAw7urIoha54FY)PI2`tz3iv_aKj@i#_7XAi46?Ak_o3$@EUS|kDU)!?^T%5hRg@8>CU(J@tT7#Jp znMSbcDA*bCKeS`^q_&TtzZ3T_zPg?BudY-~@=m_{33XU!@o zu~Y0;IkK;^Ed+h9jFE_*WoiWQETf7{yN2iJwQ@Xjh(038@6}31)=ZV%$8({Adi1WU zz3|KjWZ6I^ak7=+x#{2&`zt5;b*nS0mZHUJn$LyB*JyjKO+Prr5+8it_?fKSD9yl3 zEPJzS7KOzCKhwOYWu@u!&qTR$(H<L13tFGZJu!t|iw&n!r+ zH{|~_S2R(BC3X}2u#>8_EokSaXRlaKR0-6`eFRceUjyojL+_t;e_$Hn8&U#J2W8x{ z#ZAy*ROJ}zde5Ie)d-1Elvt{!j$;_Qj&v#Dv8%g*P5pzv?_pK#`r^U^OU!rdNDo2n zeEjr@RR2i#$(-wan4s7@XjH@Iipa(;g~-$-+9wV&)oS6ulvew-SH2f!(iTUfK-ulW z*jqHIlm3w;PtRW425RIwJGYk9oqK)I1<^~6HN9MJDC7ki7YzM=lp^&JeTx`1<%b@q zTP;gDNB`yt=#}XZK&b7=N=YQc9Lcg!0F4R&gazd8NbjlE99ulw^Q^Vj2zE^SXSLRG zDH0f)IPO4wxI%~J3OPA2)xS2fc?5IlXI~`_PYZay`ktmUE{fK%WhlCE^a1%Atk+0d zSFEzJ?uBH9RYW=G77$v1846-0xU}?WbY11(v5X7$vL#aRb0DV{K}3&=9{R^{&XOv8 zxGspkLHuUdB8RzpE^2sfy_*5TG%!O)E~LR=sC_?d_gnV2J;N|^By;X8FlU+LzxwEF z!FwGgmDj5m)<({eKu;#K4yQ%+o0|4x6Lv46wq?ejap%BNsX) z19KJFq5^g-Husk&^=D3!tz{*SCnLu?Ac_I%JO+t>iZuyZUN@;?1-|MsZUJw9tg2Az zsGVjr^A&#6!)qbh1C?kjxtBsLM}cH%yk?C4g6xXkJ| z%_nf;7y3#m;+O`Y6rKgrAW4B-u%alDo1XODtE=a>MGv?80Z;%z1t!&Yx*)TH;|}4^ zP}K#n7ebU0Y3bSrtB=%TFSnMEUcZoRFZ~yC?&HHzv%?|Um^4NNZ6|pa*c9cRJ*@$l z)nLAIoofTiPZf}uYe1T0rQB?Yxp_RmS@ua4m1T^`X|%r*pg2|hBj{5fUov|H_JzI8 zjttr}RcJZ$l83pMPb6h?;OuuyXGPf{jITBfgr7`I36A@#U5s|nVL>xi7GD^)nHU-}l`(kpgBo{W6EG~S##Q2sh(a#!53R`$;RH!2^g*X!I zT?gYy!9>lXr?M?BHh@4e33bq!1cc~T^ZX#K*BGVND&q|x$dPPd0e09!c|Hh=ad8)u z=%CaCqEKGUQ4YVFgFbHYjPN_C(RlV__Xq=om#QT<{&m;fXS z;#G-)A|3@}4M50LB~CU{U@r`Z`?SktrV{>k+Ix|35L=(%2tQ2oA-AU@k8%B?Yv0`f(4BdjFJ!~L+m0!MV;*~Yxv0;RS|ZHzV9e9OePij_5IO~XuCxee;IK$rCi~GQb&r^oq$+@e0)BzmL1E8~Ypk>61%U@cd#I-+1BgfABQ#(r?)_TZm&x23?BJ=@s&lh17R%};Ic&HV7Nwdv(+zlR+U5g#IqJ;X$?z*!1w zr6C6hcwXJvldDU+eK^>1U+m-cwY_@vCHphK{Il=c%P(Kr@b;a3cJU3ndw65xb5FN_ z{n~%_%C_J6J}Wi3^Xl9uzPWz?*ZfV<8?k23)ZQZL@V#;I^vb^d>%ZnkYoyV?`M2M* zpZxPbhzi9dMP58$Bu{VdJsI|(rGF(+0`&a8-AN#)i3Ei4BlX0$)1{Xd4^vQYicmVU zQwk>JHxTv9E6eK(Tl#apay#+E|Lza%JOA;aZe<(5v6v*zxB6gmCgLi_IP}Xex=+Wq$^5xAy7t zwQY8z-QMkN|N4#n^!QT!rVH}*9W*)GEykV&%EoHI)rtvGG8$zh1f7$|pw?fikJ>z4}lz5iP>NM+;( zcCxvhVJ;i1lGv!t_XvhDLmV^OsS$w3aSt=#-{KXy>q>Br%Ks3)!nm95&i{U(zzQP? zOx=0Vx`8ydLQhsC2BeveZJ)*c!J+#-9$qX-)dKRehiKvJJDdK8KehdrJB?cePBc2 zXd?=N&U$uVwD?IYh$Q*we!a(YfZnPf6aW<*9t-07Rn;O=I<*IL`$&kZIS9|3mfNnXai z-*Aq*x!E4pUVH7MJJSb02UlSHVXigisXsk(#2M-89-nm^fdw1bfgwvnfFmIR)*oYb ztpD5X=!o+l$ST{((4y8|RCYO|H9$JLoOxlsMTtlY9KdAIW#lxT&|Y(D5%FR>8<@Kp zD@PUqT*G|b$>TuSpW47W%$-GS1K{c;=Fo`ok`(%y7C@c7*j)?p1t17;i7&-EPoZVf zVlW8o0VtR_f444uuqqBoWn7guLMa}k7YU-FxYI^O&1LZuWCEh?0Ja2Gej>+}*E*87 zKXGK}!_xzO4TRw8?Otap2?$9ZGu8J`1gPif;AT-(&-pnj{}}5>h*7?Z+9?jOVGs8x zoS?nQ@9!bjr~l#iZ1dS?UU3`jGxwzr|LM={;fr6fci4@MUH`LxX5$suQfE@8?fis} zJf64YXJ_--C;t7d#C6}@+xvg@2W-i-msi$*dTaY1ec$8fTRZvp&Ub##?;q&ruktpE z6w=6muLdK9%ruf5x@y-2tOz zZ2tP4=LM5`g$IF#02C7%kw>iL#RSSRh2SS$VFTP;=2*B3k3%3sABm2?-9`?sAE25mZ5$^^6C4o63^8J;Y;9brMZ7&PesbbjFGx}mw{1cg7homM zGWHgKMhg7wkui-US-awCytiL8&H^L_O?PvboK*@^EPA1^KqupfC0tu z_O#zG6rUQh{;HZ8QN71Ov)PacgIj)IJYevoV&`uN;{s)53=+R9ABdFg>&_qgmYZNh zL25L7pDo?_0uHZ*-p3e$j-RVi4*IGGD#aez?=wJMZBkWllayHC9ym}PLT6b4Lx$vh z(&&(LQq==LKTaBv0t0p8Fnd+|8=2}i#b4~Pi6oDeww|pG3~swt;Cr0-y+rz3Vh{0z zzH?7>Yupcl1I&+Qov5h#6mweiyQnemy4Rjnv97=e5R)Hp= z%>LZZz7MxWNb=;!+_-@NQ})MUxmSf7?ux&)I@9Mnf!54RY`CkQu6D#qZKjZVY zzlWo+*fR*aprEdEp}suKz9SV36=uJdlPBj8tHMk`7>wO16O8Gzl4&BoT_@^&3urOA zCRhhbY~ilh_id0E$rRFtEMOP*0R!{B(my`69RJ(?VIsK zhX-8)z$ZMzLE?X1Bx$@vs+d*^p`kL3qd5mc3Bj6NMddCFKoSqMgbH%f2s=0i^_8Xz zMu71>)GiWLpb3iWe!n?HI^0g|v0Ffs3;NvNzy5@TcjyS9-FrZ^?X}-1RTZ`ge}IrNf^*^}`8n!WPp-T@eoGT0-j!LD4N%af8~ zJ2edfP}R;}^~5L!o?aLw%z|})L6z>5qZnAlY~g$K1W!`XYirmo_8^?>iVEQ7Ny!DC%HFU4$pJ1j)~Qmh1d>#{XeT1H#7blhAg?Tx z;_rHmsazf-(HpUi!q&_l&^|$s$3pnVL4ybPK^UdgyN!96j-1*AEeF!~Xfr2{e>r8? z-;I=T!CWXYQ`5AMN$c?7w@+dm00c*sA3D?dtQMlAP{0ZiPg|rB0RHY zAZujF2%t-CeU~#P-w-C6XS3NA+WH=#i(-{39y8x-N^|_KsmjWvMWY7GBkT5 z6d&ALz?NhsuBVb=6I8xnX5`jNQX-)(k?i9 z)bmv;k5i%8!R*p|VaCz9=?J|C_v@b6PM9kTpZJJr7)Q?=;1fqlzv8wzQmZU@2JW?B zk9*>J?h7Ywp+CUf^u&kG?4}&5@LC_ zg-IQIr0tAe;INUUQ_dri53|-nM>TzpE$EroP*(~p2soVcNT%w%i7{&x{%K?L;Y?dW zm3fM}4g`qUT7xlPRpwQ6`pQI?V*s(vqikaZD39W8| zG@dm|06j?PWrGYhE?Vrsm}z#N`GDBZh8`_!5g2GJAUArihn^LDi%u)z7U`%Eml&(i zXQ=SOdLV%t6(Cmj?)rcIfwP~4v#WG)6hs8i9aWYXJA~emF(`vDa48fN5oI6zTweJh z?);#ZlX|eaT_VCjRmLM6&7M6U!lR?Q7`@VP(m1;lXbMGh=&(&a1l8A(4iVw*BxKTp zZviy!A;FR>9hnAI1uPP zh4P`2q86~Ia=`RwwhOh}_)8*_ zP`4HlnJ7aXMFOEV2YdR$aSw~Kxl9QCpH~{<}!00Eeb88Z|ZeH}=ps zu-0KGkr$nli4F{Vg*{3z)Ki>L&b&;v#GDt`nc|Oytq|ocBwea~w1MkIIh^~4m6Wpd zX*E^zmLRr$%Du_zLm?lRAqbSt(@vDeoWhU?u);(&Q^*f?f{(TnRhctGYg{>Ssj%?B6u@a0oBIB{+yt(b45{6^#I`9ddM$Op2V-U%3%&lxYT${ zsw*WumJ`Wwk1=*}E^rU$qVWi5(NRJjk#GIhIcWe>^f}g`$8uj$kWJ5dPIi&R%7HFD zQ9|Ej96oA0QLw@yLTZmb7$l~jZ6Z4DHxLBoNh7GvfUGlLN0q((j^rcEs9k_WT{v+d=VlzlT0QfO9xs z)26dFW0E3T{^ts9MI3h%l+9o=Ar_z_KG-ifZ(thWGqxRpj$w-Kh%9@@K0W}zUC`H? z9k*{U#rm(*0Jpej=3CvxJkL0~AF-0!agP4uCPqntLi~GS0;M$8dJgMieXWVyM7xikXI!|DpIFn2J^Ss~;vmu@UbF@;b^WyxBcGObASJH!5mk1F zIw_@uZI&?VY?q07yl;tXYj&J=V!F7ddhy@*d#C5bsr3XLXI%q?uL7KDN4|~QW1%P7 z;iSP(KVp+Nt(YbGZaybOB~#3`rg}HylZlCTiNv1avS}TR&%F-~nsmA7f9nftG!XRZ zWxuPE7xpq=Jb#aR*o8z(5{mKA=%JQSl`tBBS*3)y{$6YZv{j~{xFe~-nr1#G(BN~RF;W_k=`jwKts!z)&c*nnFJ^bTKli2#`f%AuIpLV?Z_{Q!eaKzSzFCEbGIVrliHNbiu9??H<=S==agG z1U6ifupak5sqylYItwihDa)AyxY!hxM*b10YL?@Oh!!FHeDyhx3H}frI9qD1hz8T&6i>bfsoeH#jgRt zLHB5*fxt>%U-=g|>NR{!M7emEL-b1^>vtrma3H;3&dr{4gMs=??;m}EKykXZ-NQ+} zFQ5yAaxM@^EGDThObiQ!Kk)Sl{mGxcv`5TJ#6^PF>5hE!?w%F8R>ohA)!#hWTrM@c zNye>-FKgcg`{5l>;FE}G$h!0kul4ycL zP-^&rv>dEeFhY){DKs)ZLQpuWf>mpbl>wE|lda1BFh@+Tu2_kfW28vilWi;!w$7$& z8|k<7ihF4h#X^Kzl2om~0_GU0RM&)UeUs+&giuYbs=~Y}g~WQy8B5_b@`c0t)@S22 zFUd?@o=dG|VR4yabCY4!HApR0*OX{5ef ziymBAMbZbi8%Iv7f+;i7U*I^q?UkxS$D=(xK3aP5!U~ixzk0{nh!2nI6)Iaeq(Wqs zXkrT%(GsxT6GW?;UBRE@$|n846evadRz<9|V7AIdSkj!o8gw}_Ha%fNuM~&OpL^SU zcpxaYO@r+)fNtZ6pPyq0(@-;@&q7vH^jkI{ppEUISp|Jow74Y^4s~1w7jdd;{V4Zn z`&MF&p+H^))bYJ3BBcaOf;3Xj1=`M@8Q3N|`9X?)$Oy@dfP;0w1G5tWs0^BsNs$Qn zd3fPI0ujrhMbWeGiLC`}8xfO4q9&u}As4AK^O-j>J2=(jA=XGeJIO1zNUSxJH>pZb zVXjPPQF0DOjDSrGg;Z2UW(F?Z5|Qw3grqG#RS^OMCy0s;y*LWK|gLg0`#TRarJxvF{FE+iRGf zXY<+P%dsfBp9mF~{jR3Ti2>fm{r-7GHPWlbY2?0R1J?N*mA{T)?rw&HvD=IB=wJqB z&c9-HGkfe%ygD)8pX|js+vEEOJE6bTec1+8A@h=+ zXZH4YQE>$*pEybpqa=|Oqhh0KVa%hFZ9y9v=HC1B>D+b$q{5#b<7UPalL6icrb&PS z=9M#yj5?JQ8DXvSemSAhTb^(xS(s{ftMnJTF|E(qc;0RGyLAl(%$kDxg_66)8YO%7 zE*F8mF1~unwc{NY#g32i*0lb7u}F;ceO4;_k9{$ds2rvywf8B{zerw)7$I}>4^;pJ zD8&5eut_ZJo~MhXxUTmSc1@{LR4G5Y?{u*)Yb;YZ|5infrz-82iL5IzS)?TWyqh7t zAMFA~W0a`I3|R@N=D-htd4#q$zrGW}n2|aF=qU7yr~`q5h$#E5woGD08d&{hPVbXH~?yYZu`4~rzbPl zWCkB0*)Yh?Y>di&F15`n&NUsVzRzL97q*S*e4RnV4}bD+&<@jTeMZ z?z3jTw`N2pq`g{aaxh=0;ZW4yUV;TtrxMTTA_6l@#c}tI6R=9x)$BebEOHr!~KPg^f$WNlRd#$H;QV*&5i{b6uW#g z+wqrgxW|b#;rc#%&Fkz_9~z(t;J^QwZ$$B76FB|o-L*g&K~KDYP;)+1r9E*=w{CQC z64BH9)q9)1eCy8cY>zmr*u1#-oqzwuhMR@`#Y0adYMP$dAD2C$=w80^3wmkg*6XS0 z75VCGoB#ALEPd(!eSIxNvr%Av!%O{0nUel63Z!V6f>ZgE(yWR*>$Cma|I`1)eYE30 z=$r5W2Xk2=!G8Vut^N3a`7i9V|N5WX!Pn#cUw`5E@|Siuej~YjHjPhVNYp#S`MZJG za6=*(oyE;L&HQMDk9fq?&M(kP&S ze&h(k>2?9V)M~$tS92zf`9{UM_Jzx&;zEdG4Mc1;_-S z|M;)}Z5W1`&vm%Hwc)c*?7Lq0Y>Xlq*!Pw>uX4bkdWx=)7^kEnAqYRyc#c)`+epXS z`F_F~^q`gW-$@>I37?S|Z3kAB*@q4%fnoHZ6@K_&!}YaY{or%I|IcY?-u=~=_T_*4 zPi7d4_Sxq)Y_~QzNCc#|r~0CviG){X&QAul9}EssMb8h*y{RzQoO%5iybiS9mSD%$ z%2#Y_{Mn%2#Qy@?^xePvL!zjU{zh-%o!-5-wCgCm2PdQIslW-cSJ2Bl^cSC@eS+#( zZYaB8Nn6Hpkfsiba{OLhu1*(3@NVQE^q}IBJ71&i=btJmLSRHOo-=I$=bZYVOpzc@ zV%erWD>+Uj`U?k9E%5oi7bphOt3OskM@dvvCZC8+wQej_xU<9TSyak1lU=-T1ZLPj zpnPFwY_BMAJWT9O;yw9V;rUM~0vp&J%&WzjWo56E-oa*2faCVP9*e5eW}Mv!wI$6$ z^dJbM{l-ynQv}XhzRKVQ0&$eG!f}Qe5LCn=s2I;c8Y5Ay4Vo({&L!q{W3fk#{ub;-MnIS!;LZQxzhUbU=e2^G{%5~%w>W9c55|9BjL7!F4z{h{zL1}9$B$pXeb&zb z5Zn1V*KAS;lZK%3Q4Lu_JMfVZV0!X|3Y&NDHt6Q+ni>}KzE}0d&mDrx5677SQ-c10 z`$yP>SO5HfYHy21RsHJj(SG%R`~R4^-yVMFGb^63u{VCR*Zg;!ksD8x{l7<4orAVp z%5TSitxiJi2&yRAqH3PP=gP;dd?O~uRaHo?Ep!!|SQ+3>9D7!2 zFW!IiK3E!{Df^m$GTK@dPQG3a{yjd;_UOq&`t;UgqZbTpPk28FW*$LYe-elU+i~|^ zLPZEB|LT_n+$gGw9^218^-9+@6NCBqNPEww<|1lzs|J#*i2Zv^>KSa*<^bQgHK(Be z>dT9&?zdr`u=b0%}~#rI9O+q2jH zGyq`npLu=jXZ5vzb59Y%@_3?l4@VDu#|wQGTVi)5-0`wO{*rpfKR{ z_8b51DE6KMcAM8Pt^djI*puf6o!b}^9}Y9y6lb=E73m3?l#%OKZ|uph_vH3>07d=F zFWDDNtrquXy%+S-b;oNf9-~b$=xZT=L<~t`I?TSuS;Z*AH@~vOH@{ZF!=LBLZ6)^| zKy~C#P#wfB#D6ie)a~Qd_doY@TS(iUJtn!bC35wmjExs&%gi()<)-` z!_&rp_UTBW)pDGe$6SO*YSA$P!c8S#6?c4a@{oHGQXBJvOIqp0+ z;f_Vza(L%iEd^MRxNW`RC9U%js-)bz)s5UJ#NPAJaadST@CYv1y(*Or(f+WMYT zj7I7JC04B6XZ`4N_GzENJl*)U{mC2tj$$m28T^^-9en9gA7)P=f=S;b$u}p3Y)-0B z#ZY4&7F2CeHb+l!^#eI?vcyLa#CT!?@4! z90DR;opKy>qJ{`K{NGzC3NSgvGdg+TR-@k<8(i7!x(1}^#Aow)@w4k%$+W-_a+?RM zfTz(l$S6LMxs?74AzKRVEUCKu_aBmBsb5Php}aszvovGv}(% zx)g~40-sKJeCMbdg7+iPX0I6c^~PqX{5?%lkaU2H3XG^~_~(EQ%cO0pq1s!Scy=+C zf`;?`>_JM6HWPux!Yt{8PX4C0&Ki5PX|i0NG_ieyT0g08hK3bXrfx5qHsVSPWmc+4 zchq9g$Wh;aV1-T+j@<8^07~uY1AT0JHY+t_>xC4OP0hA*|r*6QU>Y0e4x^b1S z?euVDoRE?LP6RdG&@bxIBZD5Z=g>U=hkB(r+`^iJ`O%UT(iCIt4D45FVP*KU=*1u# zqlQ4Y-^%~N5pBi4GMH9zQ?+!mOQre6Jy}W*lT!Y7d?#( z=E`Clb9bqXUYD;oMnVmbULyg_?d#8sTNWbPk{CC}QCdDzv0ZHsQ*9jjSlP11TubpR z$^sQHplcU#$j2w~c`waCZp86qi{K|?Ws3yMw5NhqWETl}ONzgJ-xdI~V%!)#W46W| z_y?W^VrM^pcC9nZIHwc9JDm!}qfotj-p!a4pra2qN9)Oe_Ngis#R*9&G!>xIJ*&M9 zNnzh;sj!<7lauOCFlAck$c<8qFQbojhrV7ci`(|;-IK?_JDodH#qimcKrP_U4q7Hy z63qM_G(Dl8P}vg@%u1(;RS1zdX$fwqO)~*R$YSoytgwbKuLT>TDs~iyCRwW(qmP$5 zODB@OZTAXIewm|du}&T6-!HD2sF9fkfA4V|Rs5lwvY*sL%{9r=1;BGEvd!#WhCQqn z3h+Je1K-1_t%B#_g+e8`oyMeDS=xMXEro?jg=#fa`ol``PanRVOvKoutkU}WLWc$a zd+KJg5BNq*wlT5b$ihHH34CgNBl&o)chPzhAcxP#AF?A$D1^ru;NB8li#_seFKOf9 z5}6IX$Gl(-kur}ssWz5mh~fI*HxR|dp6Vsoh*IMz3FxR^1+Kdx+HaLV)TOdwrnXv= z-t9O*M?^)*yh(O=dg7=->Y*S&gU}dSZ8NA+k*I(cibR(Lnw-N>HY+2V9Ymmxr3Qap zbKwxQ0yzL`j9JGJ##;IXL!E3t!aVmn*#4GxDdf}rcOe8bc&2SGjBp8B2|5fBN8 z{U+QoE%>AYkW#{sL?2Dt2#vZzqu#e}ec#-ExFBMIL&2oChUf+QHU~QJag@O@29&B? zq@eO<_AFw|MP+{m*RGS2^wu33)*ML_MjK#U0B7gn`$>}TOkQSDsOWlA^w9Myia$OANZ|}ACS~dhWOscijm`v+Eo1v_^4M&M8HY!&B z``AMe89~6ZEvkIBaV5OOsED$MwJCt6Sf}X2o*}k{A488D=XZCU--rELqtaA@3d0^c zEja@*Qn#~xv>#g@+&~I_F-4mJ{vNYiLeyaqKx@fyCj&RKEdx~cZeflr^Dj4@zE`KH zJVlRh+#j7mTDGe-q_Xu5+5(>0-#Aayl)d!I_`(q=ptGNk(>ECmSQ4Rt4RFeRB zJC#=3b+)~4YhW8eq{RD5R5XGL9X;pD>eq^m#+`)Y4rWNcumS`EG4?BUbh!9?5B1q3 zu%@0yCTLJYEy4DwG0zdf2#{mWcZ~k0(t7B)wUa=`3sIk`w)8UvSn_co+A6j+>{Dx^ zVqzTIpcT&A`o&W;%z6gsg{1wa+u4Cyfjtw?(-es>0;{%Xa+_%yRmo-;+TZ^kX1qQ# zF|G})n$(I^MzuFlfUj>ocmmie#K$mhhw94;?x~T1KmqGPyJSk-n1uA28|eVx)r&ob zv#6aP&wRj)H4;h@=>R7DLRWHiA;pQmSlr zV|{FD5rWOW_B8>)z7^dp0^Ny8u!-V~{g}HoQNWSUL0#h6N_ZlL zUXH}G(2~)=XPmNBdvyRgGAl%e)H@%HloUR`%S++FV)m}YHB!vW7LXC; z{xxX6*nfZDNNTyfU==LjZu_%<4vJ$U^jYr7(xqLoa4}KhV=$!qrY1#giKRf~0W?yO zjzGmnrR^{(R%YCVgl3{G#a?b=bl>?3u{7E$d>qu!lc=zj$zTY8R#j#p5-V*7#RPef zYI5^oJpjy>IFW9ypHpvmC2NGg?l->8SNs`3orQvWiUDVWKp4Y15JW10m#17p;_-A1Y z=Mwn^t~(V0ide6{X$-jC99mE$C(YlbRS4h^;%dmJCW2Qw2kNPfy&IoL)p{#oYXpwV zr*+F3sdv8h9Jh@t{)AP56zthA0%i#i6fw5|v;$B+#qT$bfCep@hyNj(#oFL1VDl$Ehmznag7VMQ24XB}2 zr8AQ_RbyVBT}(J&-wM2ZN?QsTbX z=+ne!0`Vc$peiV|h7PeZH{0>u2S?sF>}Ni`{h%Zc2tEc$n*ctUtyWD|FJYU#*o=6N z9kGZvnkaq0)mL02=V6lmP%aVzTLKQ9=PHyerxv#w?*{=Fs7Kgus5s!h-n|R8P$@r? z;@L;w#sGL;5J(D&Fuoup@i#u3BY5(P2rmaT0)-NEXc*(F=sCnl1WGKybo7)acNUux zz0gG{8-a?QMw4*t0#vL`!Nqfci;iQi{9L_xPwEgxYM?R-)klDjl&l{Vd;xvUy~G(f zq9H3_czl2Fj_O1zFDjG~@tXyKyjYVpXnU#ZU$d%^#DX?E3K!&nHwGqqSsDO+<#9(lx zL$p?KZ%3fUYEdmqZ*(&?iybNTBZ^jA7~VJ4FF~IUg;g?ldeYas00L(s>WSelptB;DE(&K?6pz3~LkVk)+v=?Tt%yyr>u-)wq75qW> zdi>RU2Z|&P!(OXKYYfHAO1*-MqmUvwt#wUILqMigrxe)d2%cK(oUDm9Ew8=CQsjAO z*W;C)KRgi#<&1Y!lCeLgvqYX?yK=YAL2emUZAtMOq(A3{wuoo_TvQhyy@CQp6awip zrcQVTrQ-P=^?W&Nk_?^Mo-o1*J`$pS7|RUhSoYLSqUiSWQ8{lomMGml+0Lst69A5f z1MTq`m)EMKGyAx84!K{bonX=O6dUii@M=Ig&xYx_C@B^bglhi0?w+Fv`E)KStc(G| z2bJibyvBUuto@}5hDMoCCmzqkLCwwU8{fY>wP8@dM6+^fPiM6RfLQ^B;f&EThp>m( z*GN`quchYQ2P=gMkcmwo#*~s1TFf&^P;B0%Bn zRZw4R%vWZ3sPvy}(=p<8<(M5@V}7{uD+#=E z=JpT??yZ}A`dkkPaiUw$x!Sop{txdvMix5Qk4XF=h6x#`9v2nNN<}5L6#F*ChJZDg zF&^Kala$`szOWwz^x%i0Qe5I$8SmpkBs81{__9)>m8herV2Wpq)UDg>{VfKK#v69r zqlIeD5(q_p0lP-(F?^WYL|$t@kwr*(j3n(Qi2WkhAuxt8;RY(+TmJq)MP*gD@orEE zZ>1(VcKJMNoFpaHX!A>Z*@a5b;b4oiudO~FG1-1+87&;J4IFdhpEYT;7|i#WC&NIw zkv?1uBej{t=0$<3@AUkzcro8wEUOfwW5wPq4XBH~F0ix);1Gg-p-qB#@b%}f^*f=j zd-~beOJYn5gu>ZLXGycmqqS?Ui=XCm3GETtF97oH3v;)yC`+g0m=tha2=YJ_-3r(U zkB=Ipjx)zH|70};04P1~ZxXe+IATIkNg=$~-$z(bP&Qy#udZpp28_;2>d8=<9G;Dm+F;L-UgA#%YBO2^MheV(cWc_Jg0`H6T-?_J>r4p16hF4;zW&CZzW&m_LI1f|pUi{S{Pu~}z3uI_U0=Vj zBk97`_L$WMie^aQCkQ7T4)(J@_(NnUavH~`*VvY!(Q7KHUnM*-c@a6#Ufl+%|9A!* z1>r{H=uWL5IKvNvLJ2AhdS!!dg)g639hbe}UZ{c2rcnDd8A`Aq2vmSdOrf!v1KLFo zp2>g3wR7i)ce|IZ}0s@PZgcex6?qV)660io`l=jpj zA-N130(es$WCd7MO^m~rV*Jh!RBZGy!$2beM~?~|84X3JS?buwZKhunU`i`nft^uI zUgMgBqCKTM8~Xs;;BgVE*|IhzVd-&q( zWmY?09OF<`DX#&Fu*R09ysYC;tx-Cg!nKrGC0z2G=2i=1*SX;`{@}+P8J68-J-Q!! z`qMwRGo~SQVms|`Jo)Kwq^(iJENUC7VPy@F`TORDyHCDbw*arx5q(-_?>u-uc(T4B z)5f=wBl71f2fiuZw?dpc{em z-Irh420gULrx?@Xwh(7z6n$>d{^{1ez}eCMepe1ABKbR?pGo)p2Y%()`(^q6b=|}0 zkDg-O%69L2e!BvE_*w*;Yz2#1*AUeFaQMKf2^>X->RFdnJ%hmFwZD%8JFoxo@7czm z!N~!OC%63%9w*rQJAHnzv7= zhfRU8vg&`0$L@qIftB%~ER|0JUD@SW2G60*tl{JjcnwqOz4jI+A!+GC|kR z&FAzy|0Tx9RMQ;wv|v;XG_8M+%vi4yVvp^0`Rlbk(wvs~WVJ7K#m(!*eRrXe(`Shb zwedNqT84nvczE)-VbsVx2O5u{+~N!(2H3$CyT5#jBE-hNd%4}8UH$kcYJUI_eRt^15EOquV`Nd<7^vzrUxWf6cXwm5$AREDEyZ4yt&AlD%j?5AGf-RD~z2^qQ z3)}B+tox_GM{z>ThaMf&pTGK#Zf17w&)qlt;Fa~i`vX5mo=1FzIkj#hzWl<_fSK zq(~Ic!~3^Zj*q%-j7a?aQwIzpQbS@mMT}4+WF>n0y2m6Yr$7#%#MWbCP=RqqMbD9RiNF$~wSg7r4L=Lx2|0De!HDd@ z$qdla-vjJnj3RZw@x;ngHx10FqkT^(Vn2ty9G@9^O8R#tC2u1JxZuIi6I(RqtqM)3oF# zEJ~v}sE0t5gf7JhM=EN-EyW${Xi@0&!?FF@2#>`+A(AaMt;GAN;WT;liT3 zw}8SLC@gs3GkXm*BX^pn7Qw`6T$3Wch%(sHXImvQ1Yux4H2sKXtc+3cEd*pHs}ED96f}JFvI{bW6ZY_tC_4q&p|aktB<9ok3Tz?>q}I} zmN~RlXg}yeylw>7s7h@%6e%JK%~_9=P$l+G#=OU^dTL1*n={V@3?9DE`LCqhxG~3A zrTM!9f&Giu+&g!tM?VVg^gQ^%$fd!n3ilyoL=6pnJ6k-5>KTD_Ye( ze(BsV4t6YW7rM`q%taD!(VL7=b@tC9vBQH@1W%}pj6IOqYG(vKPsPuG1dPzr2}a5O z#S4x9@jqMt`SV}>QUS^=8uq!nOgO{&2a2ewgztgdEoUcZ5&`REud8{p=iOjc?)^@z2^~_VXM)%`+!sa~@!;qJkB`*kc=kdi2LpC*UH% zYP=)b5mpr&v|w#~H&v*Ubpc!@&as$!IqVW=o0QX>1Ia4%bgcNzwlE>)Msw_=UO}6L zS@0V3#y;Q>xJq-A!7%k56K3kH4+;*@V$$7E0SIv&v?7phg!cjc3N*Y1T9B%y@jfZg zd`=4_6;HuG6ej6FQ6Y6SA5JK_bA!Cs45dZ%eTTk-M!N+nomMsvD4%;@xDW2Y(W}-J zVf#P(%FZ|VyGL&xFy$97E#F$u>xB@rf`^f5Zc{OP_uwD$i+XI&r%SfaH^wyMtr-`%PAwu%#vD)ov(l|ZzNc+z|`91)% zgmf?ze4?s9#pmG7*b`bWg5zh}^5Zl;?+4v?VI0=^y$5cf=6mpkHjwV>MqD(^Cp`$f zo*3bD1a2`C74*fYL$U9D?+13@L8*GSlkdHa+Zh&muD85e+^9<$l-`0!UBA$nO-^H{*1sD68v{CqesO_3SKUPEn*kag& z0}MaHxtJS`r{ugO^;{xIhUgGKW55{5-rizndft0Q%%8um>M!i!ob{aVS08zd!>$d*W2yzA?L!aHuM}qhbs^ zJJ_NPvM5-D4aaxRNtLQDfUgq%p0)yFju5v)iNuYcBLf(mGcW~5#8K!3a=p1XNg zlxw}Or01L(*jQBn2z$81AGXG@_==7|QU$Qq1&9VH2v8Vt3gv4;ZG3=`olM(CA zHn8<(0$3AD$t$lctKvUT7$NEB z2-9#p_A5tEz>n`e<{NE%b7#quH;%~zTa%yMX~=_r#)y2w6If1lc<|~k1jsmJKB+wp zXb;35puEnu6tobL9IFu?=R?cR06qo~)yN)nlGveofyyatyF0Dp(T|o+cK~ zuwxoAzG>-j#G;>%0sYR`*NmSlKuU;RBBpL0dGT%1{wq(Y{tuii)yY1 z#_V(W1w%18En=HQ$xyTaV+agSk~d>)7|Pz8#AjM}J^iDEce7Zy@IAgR$Fd5V^&ZOt zAWt60VhRE#9u5Bdz%1KiuU&8L3-=$p*%qxBDw5y%6NSFaB${;&7410yZ0PblVQd)K zj8Lv-BKQmo09l zs$si_=uiqYkX-JN3QrpJ%tx0scpUGiS*&jG$IMbWs9B`O)*}6tDh{@x?)1f zJ~Ak)DGF+3T(bgk$^GXlDi?bas+?a(L6BKAsTyA}~$B99TIlYWK`=V*EX%^|8)bNrWuH3|mRr4-yn@<0)tFr;n1Ve7-Jk!Q6{ zUjM%3hJU~p=Psta=AFEimW)~SKCV>Cs?t3783(Fo{eG(;WB*{r9nfl|LD+9_bTero zSRXayGdW#8H~pQTZ4q3r1+l1MCefrz{Cul;c7b3;2P@xL&mmkpK_F46@w~dM5e3+% zQve05mJR(frsq3f3~pv7=)3)%?@!?&AhhL)PQUibI+$|xIY5RKiC$LX;_rd^+*f`k zk5!3cjS3AbVOC=-L0z3XM422E8mJyQiLML-58X&yfArUPVc?E)S^Ch(2tfpJJ~Mdi z8BisT7-{{BdhU^w)-Do(_>(U-P6^Phl;}@u0a%hKLJG};crK0QfqOuoHIE}Hn|0}V zZS0X8)rS;4L98$oTY{{{D=sY=;(IA!=|TmaN{rm2WqHPJMrDm2Frt)2#ZDos7Tpnf z>1D^B9%(x#i}^`0{;fteImL5zJ8MG3*)7Hq2D4ZfMYJQTOh<9Z8pEN4y=p=^ZA3{t zixll8C2XPs*p~FCXo;A)*C+;PYEM9r&Jj%^NW|&#MY;&0PpSWp>%#v682jWLxuAtjl)t00se02jKF3S>(1 z3*14;F8bBwF9o^e&|Q`A9|uOl-lt%&RK-IjdVLAiv6nS=G2b%&9>JUblkK^$62RE{ zKJx7}b*cIE0J>_l%kWQg=c*_Rs1F8J{Jr%`*Z7Ro3cjf|8a*$4Z(?9(^`j)W#S3Mz ztKkPzEX|6zEucXPE;d+HvJvT{`!3;w)HgZD=pG_CKt!k_58FI*#Fv79wt78t&1p;N zyE19dWb0M!Z%}Jd2}MkNCSSNR?%Db0-ulmeSx+&+KsEstZV2!~DDD(}@qGvxwjs7? zSnQ?jNOr}TPF|22#MB#+SVsKsAT0O%bfhV%F_D0=TaH+;sxQ{6z(*v2~8%;Ue%1F!c`DSel8TK1n1af0* z@dFvZ<9^7>-g3T|KW9&PF`)p(jV%9k#t1OP+_nsM(4H0v-`Z>V1Cc4`S9Mql47(Y`$McHvkcg@jP!%Q-f?x6mR zkQmRxA2|L6YPhKGKpY1Y%o2v8kA#TlI+Uw__yayZ<@Hd-En{kIqubwxC87oxLUBS+Z(9WS}7RcqD~3jdI-G@BG*+A$wMC zyVtLXP@XDiVVGHa47$U>Y8VjII!TO(J;{IhOKsE^@POVy3*#H#*XQN$|H$?+@A&xT z8@qq^m!2?}5T@zL@1KQ6tQ#NC5o?JxJsvEbW40!O*eQYx{PX(OR-wgu5!8v&O2LE{ z2tp98(Lb?|k+jcK*yv0uhR`udu$Nzb&F9fz2_ThSG`3UZ0Z2^O6!J{e(yp_mh@CF_ z>B4#NlR&fJdL-TwMM$>WW!wZ32J~~YkERp-iG5O_&kpE~aHQ(?wIkctR9!@$OMUP_ z+Jn<%anxl)4=30vqzMSa> za#&Etzy_(JN?H36OG`B|1-QYAkChP2QIB;8Rm39Wsl2y@VV?w2Q4ByqAb0czf@wPj zu%za@J?Y**&efouKpXOzH#Y*tdF3|7Ac`-4}Y9uAv z^i}s=17Jb>)~G@O+p}OJ4vzsK$!>9iLQgBiqDNe6tglZwuNy{g=iUleWlKd z?uUYdXT=Y56D~4oFm%esHQ56%i5M&irdU8NaMv0z>5XJ{?zPTM2$Oqx$P3^^^FguI zIDd#U(n+3^**5|c&6q_WVVz2hcB-<4N6kwIjgnY#B$O#yV^S0WQmpYB1w3Q#T3wP_ zi~d2dm|9{?V5`pYlU4q%MI1?-5h`aR#yMps@KlH&HJ7$n#8XMeps8qoY&q7~zHl$x2tUi;vj*)T%N@KE2%F#a>s>zHUJr?M}w!|D*w_o<+wXY{~ z0N*nY=r=y&}p(9hv}CKWfJlAp7R7w4$br(lw*_^B8j)Z^~uONk2Nr=Snv zmGVCFh&7f_3{b;±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℘7A!`ZXsYz3#ccx{P1VZ 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

    Eys2MK`ad5J>dHK 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

    ngP<)V*0MziZ}rNvms1}Hhu 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 Qg!sJVq?9GA#Z7|#2L|XQv;Y7A literal 0 HcmV?d00001 diff --git a/res/menu/restart.png b/res/menu/restart.png new file mode 100644 index 0000000000000000000000000000000000000000..d4b6a8c080c748c6bb0169eda77ecb3c2bf611a1 GIT binary patch literal 913 zcmV;C18)3@P)^;T!UQ!Fv`mmNLBj+o6SSQm>I4lFfIpU!vv6Xa95?yz z-IFYxv+pcS-!t-X;Zsw}$UhGo^yZ~}#vYJtJkkRBYgL0QREAnb9A>*3 z*hujf$3uZSmuZud99eOzYpg903}_(qGdf zICO(Sb*NcE;Tm%Z=S0I87TYM>wmGT$@9d%3bTX24{$SkGcMJ=$Uo;jz7L3SWY6v@# zzd(1q5&7gLrXeglJw!mrI&^6XhqW8KI4vyd(Xtl{6W>Mt2Kl%a`Fkj!C47sml{uw3 zq)FEJyn`|TX$h~R7feyNRvS3LLOgTE9F(xopAY8v|H5UwN1t^|nI#pytX z?!QKO0{r44a>_R@k{(Kx2bKLz)QmY00000NkvXXu0mjf42_wi literal 0 HcmV?d00001 diff --git a/src/uet/oop/bomberman/screen/DeadScreen.java b/src/uet/oop/bomberman/screen/DeadScreen.java index 98c5601..be06989 100644 --- a/src/uet/oop/bomberman/screen/DeadScreen.java +++ b/src/uet/oop/bomberman/screen/DeadScreen.java @@ -19,17 +19,22 @@ public class DeadScreen extends GameScreen { private Keyboard _input; private BufferedImage restartIcon; private BufferedImage homeIcon; - + private BufferedImage backgroundImage; + private BufferedImage gameover; public DeadScreen(Keyboard input, Game game) { _input = input; - this.game = game; + this.game = game; options.add("Restart"); options.add("Back Home"); try { - restartIcon = ImageIO.read(getClass().getResource("/menu/icons8-restart-50.png")); - homeIcon = ImageIO.read(getClass().getResource("/menu/icons8-menu-50.png")); - restartIcon = colorizeIcon(restartIcon, Color.YELLOW); - homeIcon = colorizeIcon(homeIcon, Color.YELLOW); + gameover = ImageIO.read(getClass().getResource("/menu/gameover.png")); + restartIcon = ImageIO.read(getClass().getResource("/menu/restart.png")); + homeIcon = ImageIO.read(getClass().getResource("/menu/9165683_home_house_icon.png")); + backgroundImage = ImageIO.read(getClass().getResource("/menu/forest_by_forheksed_d9q4k94-fullview 1.png")); + homeIcon = resizeImage(homeIcon, 11 * Game.SCALE, 11 * Game.SCALE); + restartIcon = resizeImage(restartIcon, 11 * Game.SCALE, 11 * Game.SCALE); + restartIcon = colorizeIcon(restartIcon, Color.black); + homeIcon = colorizeIcon(homeIcon, Color.black); } catch (IOException e) { e.printStackTrace(); } @@ -61,7 +66,13 @@ public void onKeyPressed(EGameControl gameControl) { } }); } - + private BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight) { + BufferedImage resizedImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_ARGB); + Graphics2D g2d = resizedImage.createGraphics(); + g2d.drawImage(originalImage, 0, 0, targetWidth, targetHeight, null); + g2d.dispose(); + return resizedImage; + } // Rest of the class remains unchanged private BufferedImage colorizeIcon(BufferedImage icon, Color color) { BufferedImage newIcon = new BufferedImage(icon.getWidth(), icon.getHeight(), BufferedImage.TYPE_INT_ARGB); @@ -80,24 +91,30 @@ private BufferedImage colorizeIcon(BufferedImage icon, Color color) { @Override public void drawScreen(Graphics g) { - g.setColor(Color.black); - g.fillRect(0, 0, Global.screenWidth, Global.screenHeight); + + if (backgroundImage != null) { + g.drawImage(backgroundImage, 0, 0, Global.screenWidth, Global.screenHeight, null); + } else { + g.setColor(Color.BLACK); + g.fillRect(0, 0, Global.screenWidth, Global.screenHeight); + } drawTitle(g); drawPOINTS(g, game.getBoard().getPoints()); drawTIMES(g, game.getBoard().getTime()); drawOptions(g); drawSelector(g); + g.drawImage(gameover, Global.screenWidth/3 + 40, Global.screenHeight/2 + 80, 50*Game.SCALE, 50*Game.SCALE, null); } private void drawTitle(Graphics g) { String title = "GAME OVER"; - Font font = new Font("Arial", Font.BOLD, 20 * Game.SCALE); + Font font = new Font("Arial", Font.BOLD, 22 * Game.SCALE); g.setFont(font); - g.setColor(Color.white); + g.setColor(Color.BLACK); FontMetrics fm = g.getFontMetrics(); int x = (Global.screenWidth - fm.stringWidth(title)) / 2; - int marginTop = 100; + int marginTop = 180; int y = marginTop + fm.getAscent(); g.drawString(title, x, y); @@ -105,14 +122,14 @@ private void drawTitle(Graphics g) { private void drawPOINTS(Graphics g,int points) { String Point = "POINTS: " + points; - Font font = new Font("Arial", Font.BOLD, 10 * Game.SCALE); + Font font = new Font("Arial", Font.BOLD, 6 * Game.SCALE); g.setFont(font); - g.setColor(Color.yellow); + g.setColor(Color.BLACK); FontMetrics fm = g.getFontMetrics(); int textWidth = fm.stringWidth(Point); int x = (Global.screenWidth - textWidth) / 2; // Vị trí x để chuỗi ở giữa màn hình - int marginTop = 190; + int marginTop = 255; int y = marginTop + fm.getAscent(); g.drawString(Point, x, y); @@ -121,14 +138,14 @@ private void drawPOINTS(Graphics g,int points) private void drawTIMES(Graphics g,int times) { String Point = "TIME : " + times; - Font font = new Font("Arial", Font.BOLD, 10 * Game.SCALE); + Font font = new Font("Arial", Font.BOLD, 6 * Game.SCALE); g.setFont(font); - g.setColor(Color.yellow); + g.setColor(Color.BLACK); FontMetrics fm = g.getFontMetrics(); int textWidth = fm.stringWidth(Point); int x = (Global.screenWidth - textWidth) / 2; // Vị trí x để chuỗi ở giữa màn hình - int marginTop = 230; + int marginTop = 280; int y = marginTop + fm.getAscent(); g.drawString(Point, x, y); @@ -138,9 +155,9 @@ private void drawOptions(Graphics g) { int w = Global.screenWidth; int h = Global.screenHeight; int iconHeight = restartIcon.getHeight(); - int marginTop = (h - iconHeight) / 2; + int marginTop = (h - iconHeight + 50) / (2); - int spacing = 100; + int spacing = 70; int totalOptionsWidth = restartIcon.getWidth() + spacing + homeIcon.getWidth(); int startX = (w - totalOptionsWidth) / 2; @@ -157,13 +174,13 @@ private void drawSelector(Graphics g) { int iconHeight = restartIcon.getHeight(); int marginTop = (h - iconHeight) / 2; - int spacing = 90; + int spacing = 80; int totalOptionsWidth = restartIcon.getWidth() + spacing + homeIcon.getWidth(); int startX = (w - totalOptionsWidth) / 2; - int selectorX = selectorIndex == 0 ? startX - 40 : startX + restartIcon.getWidth() + spacing - 40; - int y = marginTop + (iconHeight / 2) + 10; + int selectorX = selectorIndex == 0 ? startX - 20 : startX + restartIcon.getWidth() + spacing - 30; + int y = marginTop + (iconHeight / 2) + 35; g.drawString(">", selectorX, y); } From bc36c1d55e9d2ffcbb3859260991da35bf8feabb Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Sun, 26 May 2024 08:09:05 +0000 Subject: [PATCH 52/66] fix: flame not stopped on first brick --- src/uet/oop/bomberman/entities/bomb/Flame.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/uet/oop/bomberman/entities/bomb/Flame.java b/src/uet/oop/bomberman/entities/bomb/Flame.java index 1635d39..0b7cf35 100644 --- a/src/uet/oop/bomberman/entities/bomb/Flame.java +++ b/src/uet/oop/bomberman/entities/bomb/Flame.java @@ -87,10 +87,16 @@ private int calculatePermitedDistance() { if(a instanceof Bomb) ++radius; //explosion has to be below the bom - if(!canSpawnFlameOn(a)) + if(!canSpawnFlameOn(a)) { break; + } ++radius; + + // Stop if encounter brick + if (!a.canBePassedThroughBy(this)) { + break; + } } return radius; } From 56d689fc08bd2368f2eae8e34502b41c0ba894e0 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Sun, 26 May 2024 11:52:21 +0000 Subject: [PATCH 53/66] change fields to private in Character --- .../oop/bomberman/entities/bomb/Flame.java | 1 - .../bomberman/entities/character/Bomber.java | 4 +- .../entities/character/Character.java | 57 ++++++++----------- .../entities/character/Waypoint.java | 21 +++++++ .../entities/character/enemy/Balloon.java | 2 +- .../entities/character/enemy/Doll.java | 2 +- .../entities/character/enemy/Enemy.java | 7 +-- .../entities/character/enemy/Kondoria.java | 2 +- .../entities/character/enemy/Minvo.java | 2 +- .../entities/character/enemy/Oneal.java | 2 +- .../entities/tile/item/BombItem.java | 1 - .../entities/tile/item/FlameItem.java | 1 - .../entities/tile/item/SpeedItem.java | 1 - 13 files changed, 56 insertions(+), 47 deletions(-) create mode 100644 src/uet/oop/bomberman/entities/character/Waypoint.java diff --git a/src/uet/oop/bomberman/entities/bomb/Flame.java b/src/uet/oop/bomberman/entities/bomb/Flame.java index 1635d39..6205185 100644 --- a/src/uet/oop/bomberman/entities/bomb/Flame.java +++ b/src/uet/oop/bomberman/entities/bomb/Flame.java @@ -4,7 +4,6 @@ import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.tile.Tile; -import uet.oop.bomberman.entities.tile.destroyable.DestroyableTile; import uet.oop.bomberman.graphics.Screen; public class Flame extends Entity { diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index a01489a..937d9a8 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -64,7 +64,7 @@ public void handleUpdate() { @Override public void render(Screen screen) { - if (_alive) + if (isAlive()) chooseSprite(); else _sprite = Sprite.player_dead1; @@ -133,7 +133,7 @@ public boolean collide(Entity e) { //sprite private void chooseSprite() { - switch (_direction) { + switch (getDirection()) { case 0: _sprite = Sprite.player_up; if (isMoving()) { diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index bb3f4b1..1b857d0 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -27,34 +27,15 @@ */ public abstract class Character extends AnimatedEntitiy { - protected final IEntityManager entityManager; - protected int _direction = -1; - protected boolean _alive = true; - protected int timerDeathAnimation = 40; + protected IEntityManager entityManager; + + private int direction = -1; + private boolean alive = true; + private int timerDeathAnimation = 40; private final double baseSpeed; private Queue waypoints = new LinkedList<>(); - private class Waypoint { - private double moveX; - private double moveY; - private double moveDuration; - private double moveDx; - private double moveDy; - - public boolean started = false; - public double moveDestX; - public double moveDestY; - - public Waypoint(double moveX, double moveY, double moveDuration) { - this.moveX = moveX; - this.moveY = moveY; - this.moveDuration = moveDuration; - this.moveDx = moveX / moveDuration; - this.moveDy = moveY / moveDuration; - } - } - public Character(int x, int y, double baseSpeed, IEntityManager entityManager) { _x = x; _y = y; @@ -64,7 +45,7 @@ public Character(int x, int y, double baseSpeed, IEntityManager entityManager) { @Override public final void update() { - if (!_alive) { + if (!alive) { if (timerDeathAnimation > 0) { timerDeathAnimation -= 1; } else { @@ -177,10 +158,10 @@ private void updateMove() { } // Adjust direction - if(waypoint.moveDx > 0) _direction = 1; - if(waypoint.moveDx < 0) _direction = 3; - if(waypoint.moveDy > 0) _direction = 2; - if(waypoint.moveDy < 0) _direction = 0; + if(waypoint.moveDx > 0) direction = 1; + if(waypoint.moveDx < 0) direction = 3; + if(waypoint.moveDy > 0) direction = 2; + if(waypoint.moveDy < 0) direction = 0; Entity collidingEntity = entityManager.getEntityAtExcluding( Coordinates.pixelToTile(getCenterX()), @@ -197,8 +178,8 @@ private void updateMove() { * Được gọi khi đối tượng bị tiêu diệt */ public final void handleOnDeath() { - if(!_alive) return; - _alive = false; + if(!alive) return; + alive = false; // TODO: determine killer entityManager.getCharacterManager().handleOnDeath(this, null); } @@ -239,7 +220,7 @@ public boolean isPlayer() { } public boolean isAlive() { - return _alive; + return alive; } public boolean isMoving() { @@ -256,6 +237,18 @@ protected double getSpeedMultiplier() { } public abstract int getPoints(); + + public int getDirection() { + return direction; + } + + public int getTimerDeathAnimation() { + return timerDeathAnimation; + } + + public void setTimerDeathAnimation(int timerDeathAnimation) { + this.timerDeathAnimation = timerDeathAnimation; + } @Override public boolean collide(Entity e) { diff --git a/src/uet/oop/bomberman/entities/character/Waypoint.java b/src/uet/oop/bomberman/entities/character/Waypoint.java new file mode 100644 index 0000000..417df96 --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/Waypoint.java @@ -0,0 +1,21 @@ +package uet.oop.bomberman.entities.character; + +class Waypoint { + double moveX; + double moveY; + double moveDuration; + double moveDx; + double moveDy; + + public boolean started = false; + public double moveDestX; + public double moveDestY; + + public Waypoint(double moveX, double moveY, double moveDuration) { + this.moveX = moveX; + this.moveY = moveY; + this.moveDuration = moveDuration; + this.moveDx = moveX / moveDuration; + this.moveDy = moveY / moveDuration; + } +} \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/character/enemy/Balloon.java b/src/uet/oop/bomberman/entities/character/enemy/Balloon.java index 9b74e2a..2cee00e 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Balloon.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Balloon.java @@ -16,7 +16,7 @@ public Balloon(int x, int y, IEntityManager entityManager) { @Override protected void chooseSprite() { - switch(_direction) { + switch(getDirection()) { case 0: case 1: _sprite = Sprite.movingSprite(Sprite.balloom_right1, Sprite.balloom_right2, Sprite.balloom_right3, _animate, Game.TICKS_PER_SECOND); diff --git a/src/uet/oop/bomberman/entities/character/enemy/Doll.java b/src/uet/oop/bomberman/entities/character/enemy/Doll.java index ab107d9..0114504 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Doll.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Doll.java @@ -24,7 +24,7 @@ public Doll(int x, int y, IEntityManager entityManager) { @Override protected void chooseSprite() { - switch (_direction) { + switch (getDirection()) { case 0: case 1: if (isMoving()) { diff --git a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java index 144a507..6fe2b92 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java @@ -30,7 +30,7 @@ public Enemy(int x, int y, IEntityManager entityManager, Sprite dead, double spe rest = (MAX_STEPS - (int) MAX_STEPS) / MAX_STEPS; _steps = MAX_STEPS; - timerDeathAnimation = 20; + setTimerDeathAnimation(20); _deadSprite = dead; } @@ -41,11 +41,10 @@ public void handleUpdate() { @Override public void render(Screen screen) { - - if(_alive) + if(isAlive()) chooseSprite(); else { - if(timerDeathAnimation > 0) { + if(getTimerDeathAnimation() > 0) { _sprite = _deadSprite; _animate = 0; } else { diff --git a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java index 22fc86b..0f7db66 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Kondoria.java @@ -14,7 +14,7 @@ public Kondoria(int x, int y, IEntityManager entityManager) { @Override protected void chooseSprite() { - switch (_direction) { + switch (getDirection()) { case 0: case 1: if (isMoving()) diff --git a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java index 74ff675..447ccb5 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java @@ -12,7 +12,7 @@ public Minvo(int x, int y, IEntityManager entityManager) { @Override protected void chooseSprite() { - switch (_direction) { + switch (getDirection()) { case 0: case 1: if (isMoving()) diff --git a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java index 90af4b5..907aeed 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Oneal.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Oneal.java @@ -14,7 +14,7 @@ public Oneal(int x, int y, IEntityManager entityManager) { @Override protected void chooseSprite() { - switch(_direction) { + switch(getDirection()) { case 0: case 1: if(isMoving()) diff --git a/src/uet/oop/bomberman/entities/tile/item/BombItem.java b/src/uet/oop/bomberman/entities/tile/item/BombItem.java index 4413976..43a84ad 100644 --- a/src/uet/oop/bomberman/entities/tile/item/BombItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/BombItem.java @@ -1,6 +1,5 @@ package uet.oop.bomberman.entities.tile.item; -import uet.oop.bomberman.Game; import uet.oop.bomberman.graphics.Sprite; public class BombItem extends Item { diff --git a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java index 8e7f17a..cf3c0d1 100644 --- a/src/uet/oop/bomberman/entities/tile/item/FlameItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/FlameItem.java @@ -1,6 +1,5 @@ package uet.oop.bomberman.entities.tile.item; -import uet.oop.bomberman.Game; import uet.oop.bomberman.graphics.Sprite; public class FlameItem extends Item { diff --git a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java index 9094772..bcdeb48 100644 --- a/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/SpeedItem.java @@ -1,6 +1,5 @@ package uet.oop.bomberman.entities.tile.item; -import uet.oop.bomberman.Game; import uet.oop.bomberman.graphics.Sprite; public class SpeedItem extends Item { From dbce61c09b5dab1a7987bc09ee0cfbb6738fe6f1 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Sun, 26 May 2024 12:57:34 +0000 Subject: [PATCH 54/66] remove IActiveItemManager and IBombManager from Bomber --- .../oop/bomberman/base/IActiveItemManager.java | 12 ------------ src/uet/oop/bomberman/base/IGameInfoManager.java | 6 +++++- .../oop/bomberman/entities/character/Bomber.java | 12 ++---------- .../bomberman/entities/character/Character.java | 2 +- src/uet/oop/bomberman/level/FileLevelLoader.java | 2 -- .../oop/bomberman/manager/CharacterManager.java | 10 +++++++++- .../oop/bomberman/manager/GameInfoManager.java | 15 --------------- 7 files changed, 17 insertions(+), 42 deletions(-) delete mode 100644 src/uet/oop/bomberman/base/IActiveItemManager.java diff --git a/src/uet/oop/bomberman/base/IActiveItemManager.java b/src/uet/oop/bomberman/base/IActiveItemManager.java deleted file mode 100644 index 5d5a988..0000000 --- a/src/uet/oop/bomberman/base/IActiveItemManager.java +++ /dev/null @@ -1,12 +0,0 @@ -package uet.oop.bomberman.base; - -import java.util.List; - -import uet.oop.bomberman.entities.tile.item.Item; - -public interface IActiveItemManager { - - public List getPlayerActiveItems(); - public void addActiveItem(Item item); - -} \ No newline at end of file diff --git a/src/uet/oop/bomberman/base/IGameInfoManager.java b/src/uet/oop/bomberman/base/IGameInfoManager.java index 4d94660..32f8c75 100644 --- a/src/uet/oop/bomberman/base/IGameInfoManager.java +++ b/src/uet/oop/bomberman/base/IGameInfoManager.java @@ -1,11 +1,13 @@ package uet.oop.bomberman.base; import java.awt.Graphics; +import java.util.List; +import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.graphics.IRender; import uet.oop.bomberman.graphics.Screen; -public interface IGameInfoManager extends IActiveItemManager, IMessageManager, IRender { +public interface IGameInfoManager extends IMessageManager, IRender { public int subtractTime(); public int getTime(); @@ -17,6 +19,8 @@ public interface IGameInfoManager extends IActiveItemManager, IMessageManager, I public void pause(); public void unpause(); + public List getPlayerActiveItems(); + public void setEntityManager(IEntityManager entityManager); public void render(Screen screen, Graphics g); diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index 937d9a8..5ecc586 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -2,8 +2,6 @@ import java.util.ArrayList; import uet.oop.bomberman.Board; -import uet.oop.bomberman.base.IActiveItemManager; -import uet.oop.bomberman.base.IBombManager; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.bomb.Bomb; @@ -40,17 +38,12 @@ public class Bomber extends Character implements CanUseItem { private Board _board; - private final IActiveItemManager activeItemManager; - private final IBombManager bombManager; - - public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRadius, IEntityManager entityManager, IActiveItemManager activeItemManager, IBombManager bombManager, Board board) { + public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRadius, IEntityManager entityManager, Board board) { super(x, y, baseSpeed, entityManager); this.baseBombLimit = baseBombLimit; this.baseBombRadius = baseBombRadius; this._board = board; _sprite = Sprite.player_right; - this.activeItemManager = activeItemManager; - this.bombManager = bombManager; } @Override @@ -110,7 +103,7 @@ public void placeBomb(int x, int y) { // TODO: thực hiện tạo đối tượng bom, đặt vào vị trí (x, y) Bomb b = new Bomb(x, y, getBombRadius(), entityManager); this._bombs.add(b); - bombManager.addBomb(b); + entityManager.getBombManager().addBomb(b); Sound.play("BOM_SET"); } @@ -200,7 +193,6 @@ public Stream getActiveItems() { @Override public void addActiveItem(Item item) { this.activeItems.add(item); - activeItemManager.addActiveItem(item); } @Override diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 1b857d0..5420225 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -42,7 +42,7 @@ public Character(int x, int y, double baseSpeed, IEntityManager entityManager) { this.entityManager = entityManager; this.baseSpeed = baseSpeed; } - + @Override public final void update() { if (!alive) { diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 9411fd0..18e14a0 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -116,8 +116,6 @@ public void createEntities() { Game.BOMBRATE, Game.BOMBRADIUS, _board.getEntityManager(), - _board.getGameInfoManager(), - _board.getEntityManager().getBombManager(), _board ); _board.getEntityManager().getCharacterManager().addCharacter(bomber); diff --git a/src/uet/oop/bomberman/manager/CharacterManager.java b/src/uet/oop/bomberman/manager/CharacterManager.java index 3d5bf6b..90c2232 100644 --- a/src/uet/oop/bomberman/manager/CharacterManager.java +++ b/src/uet/oop/bomberman/manager/CharacterManager.java @@ -10,7 +10,9 @@ import uet.oop.bomberman.base.ICharacterManager; import uet.oop.bomberman.base.IGameInfoManager; import uet.oop.bomberman.entities.Message; +import uet.oop.bomberman.entities.character.CanUseItem; import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.sound.Sound; @@ -79,7 +81,13 @@ public void handleOnDeath(Character character, Character killer) { @Override public void update() { - characters.forEach(Character::update); + for (Character character: characters) { + character.update(); + if (character instanceof CanUseItem) { + CanUseItem characterCanUseItem = ((CanUseItem) character); + characterCanUseItem.getActiveItems().forEach(Item::update); + } + } characters = characters.stream() .filter(character -> !character.isRemoved()) .collect(Collectors.toList()); diff --git a/src/uet/oop/bomberman/manager/GameInfoManager.java b/src/uet/oop/bomberman/manager/GameInfoManager.java index 47101c9..f141e53 100644 --- a/src/uet/oop/bomberman/manager/GameInfoManager.java +++ b/src/uet/oop/bomberman/manager/GameInfoManager.java @@ -3,7 +3,6 @@ import java.awt.Font; import java.awt.Graphics; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; @@ -22,7 +21,6 @@ public class GameInfoManager implements IGameInfoManager { private int points; private boolean paused; private List messages = new ArrayList<>(); - private List activeItems = new ArrayList<>(); private IEntityManager entityManager; @@ -42,11 +40,6 @@ public List getPlayerActiveItems() { return ((CanUseItem)player).getActiveItems().collect(Collectors.toList()); } - @Override - public void addActiveItem(Item item) { - activeItems.add(item); - } - @Override public void addMessage(Message e) { messages.add(e); @@ -77,20 +70,12 @@ public void addPoints(int points) { @Override public void update() { - updateActiveItems(); updateMessages(); } @Override public void render(Screen screen) {} - private void updateActiveItems() { - Iterator itr = activeItems.iterator(); - - while (itr.hasNext()) - itr.next().update(); - } - private void updateMessages() { Message m; int left; From 8042ddbf4cd1ca4cff974c2f5198b19209a7e81f Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Sun, 26 May 2024 13:24:35 +0000 Subject: [PATCH 55/66] move endGame to GameInfoManager, remove win game logic from Bomber --- src/uet/oop/bomberman/Board.java | 44 ++----------------- src/uet/oop/bomberman/Game.java | 33 +++++++++++--- .../oop/bomberman/base/ICharacterManager.java | 1 + .../oop/bomberman/base/IGameInfoManager.java | 1 + .../bomberman/entities/character/Bomber.java | 12 +---- .../entities/character/Character.java | 5 ++- .../entities/character/enemy/Enemy.java | 5 --- .../oop/bomberman/level/FileLevelLoader.java | 3 +- .../bomberman/manager/CharacterManager.java | 7 +++ .../bomberman/manager/GameInfoManager.java | 12 ++++- 10 files changed, 57 insertions(+), 66 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 4d7e828..86ed9cb 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -15,7 +15,6 @@ import uet.oop.bomberman.manager.GameInfoManager; import uet.oop.bomberman.utils.Global; -import java.awt.*; import java.util.ArrayList; import java.util.List; @@ -32,8 +31,6 @@ public class Board implements Copyable, IRender { private IEntityManager entityManager; private IGameInfoManager gameInfoManager; - private int _screenToShow = -1; // 1:endgame, 2:changelevel, 3:paused - public Board(Game game, Screen screen) { _game = game; _screen = screen; @@ -53,7 +50,6 @@ public void update() { entityManager.update(); gameInfoManager.update(); - detectEndGame(); processAgentAction(); @@ -91,57 +87,23 @@ public void nextLevel() { } public void loadLevel(int level) { - _screenToShow = 2; + _game.setScreenToShow(2); _game.resetScreenDelay(); try { clearAgents(); _levelLoader = new FileLevelLoader(this, level); - gameInfoManager = new GameInfoManager(); + gameInfoManager = new GameInfoManager(_game); entityManager = new EntityManager(_levelLoader, gameInfoManager); gameInfoManager.setEntityManager(entityManager); gameInfoManager.pause(); _levelLoader.createEntities(); } catch (LoadLevelException e) { - endGame(); - } - } - - protected void detectEndGame() { - if (gameInfoManager.getTime() <= 0) { - endGame(); - } - } - - public void endGame() { - _screenToShow = 1; - _game.resetScreenDelay(); - gameInfoManager.pause(); - } - - public void drawScreen(Graphics g) { - switch (_screenToShow) { - case 1: - _screen.drawEndGame(g, gameInfoManager.getPoints()); - break; - case 2: - _screen.drawChangeLevel(g, _levelLoader.getLevel()); - break; - case 3: - _screen.drawPaused(g); - break; + e.printStackTrace(); } } - public int getShow() { - return _screenToShow; - } - - public void setShow(int i) { - _screenToShow = i; - } - public int getWidth() { return _levelLoader.getWidth(); } diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index 400345a..3e980e4 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -56,6 +56,7 @@ public class Game extends Canvas { // game screens private SelectLevelScreen selectLevelScreen; private SelectGameModeScreen selectGameModeScreen; + private int _screenToShow = -1; // 1:endgame, 2:changelevel, 3:paused public Game(Frame frame) { _frame = frame; @@ -86,7 +87,21 @@ private void renderGame(Graphics g) { private void renderScreen(Graphics g) { screen.clear(); - _board.drawScreen(g); + drawScreen(g); + } + + private void drawScreen(Graphics g) { + switch (getScreenToShow()) { + case 1: + screen.drawEndGame(g, _board.getGameInfoManager().getPoints()); + break; + case 2: + screen.drawChangeLevel(g, _board._levelLoader.getLevel()); + break; + case 3: + screen.drawPaused(g); + break; + } } private void initScreen() { @@ -102,7 +117,7 @@ private void update() { case GAME_PLAY_SCREEN: _board.update(); if (Keyboard.i().pause) { // Kiểm tra nếu phím "p" được nhấn - _board.setShow(3); // Hiển thị màn hình tạm dừng + _screenToShow = 3; // Hiển thị màn hình tạm dừng _board.getGameInfoManager().pause(); // Đặt trạng thái game là tạm dừng return; } @@ -130,7 +145,7 @@ private void showScreen() { case GAME_PLAY_SCREEN: if (gameInfoManager.isPaused()) { if (_screenDelay <= 0) { - _board.setShow(-1); + _screenToShow = -1; gameInfoManager.unpause(); } @@ -141,7 +156,7 @@ private void showScreen() { if (Keyboard.i().resume) { gameInfoManager.unpause(); - _board.setShow(-1); + _screenToShow = -1; _screenDelay = 0; } frames++; @@ -154,7 +169,7 @@ private void showScreen() { updates = 0; frames = 0; - if (_board.getShow() == 2) + if (_screenToShow == 2) --_screenDelay; } break; @@ -216,4 +231,12 @@ public Board getBoard() { return _board; } + public int getScreenToShow() { + return _screenToShow; + } + + public void setScreenToShow(int screenToShow) { + this._screenToShow = screenToShow; + } + } diff --git a/src/uet/oop/bomberman/base/ICharacterManager.java b/src/uet/oop/bomberman/base/ICharacterManager.java index 6e5e74e..2d062f7 100644 --- a/src/uet/oop/bomberman/base/ICharacterManager.java +++ b/src/uet/oop/bomberman/base/ICharacterManager.java @@ -13,5 +13,6 @@ public interface ICharacterManager extends IRender { public void setPlayer(Character character); public Character getPlayer(); public void handleOnDeath(Character character, Character killer); + public void handleAfterDeath(Character character); } \ No newline at end of file diff --git a/src/uet/oop/bomberman/base/IGameInfoManager.java b/src/uet/oop/bomberman/base/IGameInfoManager.java index 32f8c75..a6ff0bc 100644 --- a/src/uet/oop/bomberman/base/IGameInfoManager.java +++ b/src/uet/oop/bomberman/base/IGameInfoManager.java @@ -18,6 +18,7 @@ public interface IGameInfoManager extends IMessageManager, IRender { public boolean isPaused(); public void pause(); public void unpause(); + public void endGame(); public List getPlayerActiveItems(); diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index 5ecc586..c54bd70 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -1,7 +1,6 @@ package uet.oop.bomberman.entities.character; import java.util.ArrayList; -import uet.oop.bomberman.Board; import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.bomb.Bomb; @@ -36,13 +35,10 @@ public class Bomber extends Character implements CanUseItem { private final int baseBombRadius; - private Board _board; - - public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRadius, IEntityManager entityManager, Board board) { + public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRadius, IEntityManager entityManager) { super(x, y, baseSpeed, entityManager); this.baseBombLimit = baseBombLimit; this.baseBombRadius = baseBombRadius; - this._board = board; _sprite = Sprite.player_right; } @@ -100,7 +96,6 @@ public boolean placeBomb() { } public void placeBomb(int x, int y) { - // TODO: thực hiện tạo đối tượng bom, đặt vào vị trí (x, y) Bomb b = new Bomb(x, y, getBombRadius(), entityManager); this._bombs.add(b); entityManager.getBombManager().addBomb(b); @@ -113,11 +108,6 @@ private void clearExpiredBombs() { .collect(Collectors.toList()); } - @Override - protected void handleAfterDeath() { - _board.endGame(); - } - @Override public boolean collide(Entity e) { if (!super.collide(e)) return false; diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 5420225..0887b46 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -187,7 +187,10 @@ public final void handleOnDeath() { /** * Xử lý hiệu ứng bị tiêu diệt */ - protected abstract void handleAfterDeath(); + private void handleAfterDeath() { + entityManager.getCharacterManager().handleAfterDeath(this); + remove(); + } /** * Kiểm tra xem đối tượng có di chuyển tới vị trí đã tính toán hay không diff --git a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java index 6fe2b92..3839cb9 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Enemy.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Enemy.java @@ -62,11 +62,6 @@ public boolean collide(Entity e) { return true; } - @Override - protected void handleAfterDeath() { - remove(); - } - protected abstract void chooseSprite(); @Override diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 18e14a0..2db2ebe 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -115,8 +115,7 @@ public void createEntities() { Game.BOMBERSPEED, Game.BOMBRATE, Game.BOMBRADIUS, - _board.getEntityManager(), - _board + _board.getEntityManager() ); _board.getEntityManager().getCharacterManager().addCharacter(bomber); _board.getEntityManager().getCharacterManager().setPlayer(bomber); diff --git a/src/uet/oop/bomberman/manager/CharacterManager.java b/src/uet/oop/bomberman/manager/CharacterManager.java index 90c2232..d1ddb03 100644 --- a/src/uet/oop/bomberman/manager/CharacterManager.java +++ b/src/uet/oop/bomberman/manager/CharacterManager.java @@ -79,6 +79,13 @@ public void handleOnDeath(Character character, Character killer) { } } + @Override + public void handleAfterDeath(Character character) { + if (character.isPlayer()) { + gameInfoManager.endGame(); + } + } + @Override public void update() { for (Character character: characters) { diff --git a/src/uet/oop/bomberman/manager/GameInfoManager.java b/src/uet/oop/bomberman/manager/GameInfoManager.java index f141e53..40c8dd0 100644 --- a/src/uet/oop/bomberman/manager/GameInfoManager.java +++ b/src/uet/oop/bomberman/manager/GameInfoManager.java @@ -22,9 +22,11 @@ public class GameInfoManager implements IGameInfoManager { private boolean paused; private List messages = new ArrayList<>(); + private Game game; private IEntityManager entityManager; - public GameInfoManager() { + public GameInfoManager(Game game) { + this.game = game; this.time = Game.TIME; this.points = Game.POINTS; } @@ -71,6 +73,7 @@ public void addPoints(int points) { @Override public void update() { updateMessages(); + if (getTime() <= 0) endGame(); } @Override @@ -119,5 +122,12 @@ public void pause() { public void unpause() { paused = false; } + + @Override + public void endGame() { + game.setScreenToShow(1); + game.resetScreenDelay(); + pause(); + } } From 8706cda71ad3427cd78e85609e5b40ecb3705655 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Sun, 26 May 2024 14:21:38 +0000 Subject: [PATCH 56/66] fix merge conflicts --- src/uet/oop/bomberman/Board.java | 6 +++--- src/uet/oop/bomberman/Game.java | 16 ++++++++++------ .../oop/bomberman/manager/GameInfoManager.java | 3 +++ src/uet/oop/bomberman/screen/DeadScreen.java | 5 +++-- .../oop/bomberman/screen/SelectLevelScreen.java | 4 ++-- 5 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/uet/oop/bomberman/Board.java b/src/uet/oop/bomberman/Board.java index 86ed9cb..52490ec 100644 --- a/src/uet/oop/bomberman/Board.java +++ b/src/uet/oop/bomberman/Board.java @@ -87,9 +87,6 @@ public void nextLevel() { } public void loadLevel(int level) { - _game.setScreenToShow(2); - _game.resetScreenDelay(); - try { clearAgents(); _levelLoader = new FileLevelLoader(this, level); @@ -102,6 +99,9 @@ public void loadLevel(int level) { } catch (LoadLevelException e) { e.printStackTrace(); } + + _game.setScreenToShow(2); + _game.resetScreenDelay(); } public int getWidth() { diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index c09ac90..ad39602 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -58,7 +58,7 @@ public class Game extends Canvas { public SelectLevelScreen selectLevelScreen; private SelectGameModeScreen selectGameModeScreen; public DeadScreen deadScreen; - + private int _screenToShow = -1; // 1:endgame, 2:changelevel, 3:paused public Game(Frame frame) { @@ -132,7 +132,7 @@ private void update() { selectGameModeScreen.update(); break; case END_GAME_SCREEN: - deadScreen.update(); + deadScreen.update(); break; } @@ -191,7 +191,11 @@ private void showScreen() { selectGameModeScreen.setInput(Keyboard.i()); } selectGameModeScreen.drawScreen(g); + break; case END_GAME_SCREEN: + if (Global.currentScreen != Global.previousScreen) { + deadScreen.setInput(); + } deadScreen.drawScreen(g); break; } @@ -242,15 +246,15 @@ public Board getBoard() { public void restartGame() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'restartGame'"); + Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; + _board.loadLevel(_board._levelLoader.getLevel()); } public void startNewGame() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'startNewGame'"); + Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; } + public int getScreenToShow() { return _screenToShow; } diff --git a/src/uet/oop/bomberman/manager/GameInfoManager.java b/src/uet/oop/bomberman/manager/GameInfoManager.java index 40c8dd0..e635f0a 100644 --- a/src/uet/oop/bomberman/manager/GameInfoManager.java +++ b/src/uet/oop/bomberman/manager/GameInfoManager.java @@ -14,6 +14,8 @@ import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.entities.tile.item.Item; import uet.oop.bomberman.graphics.Screen; +import uet.oop.bomberman.utils.EScreenName; +import uet.oop.bomberman.utils.Global; public class GameInfoManager implements IGameInfoManager { @@ -125,6 +127,7 @@ public void unpause() { @Override public void endGame() { + Global.currentScreen = EScreenName.END_GAME_SCREEN; game.setScreenToShow(1); game.resetScreenDelay(); pause(); diff --git a/src/uet/oop/bomberman/screen/DeadScreen.java b/src/uet/oop/bomberman/screen/DeadScreen.java index b30264b..04e28cf 100644 --- a/src/uet/oop/bomberman/screen/DeadScreen.java +++ b/src/uet/oop/bomberman/screen/DeadScreen.java @@ -2,9 +2,7 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.gui.GameScreen; import uet.oop.bomberman.input.Keyboard; -import uet.oop.bomberman.sound.Sound; import uet.oop.bomberman.utils.EGameControl; -import uet.oop.bomberman.utils.EScreenName; import uet.oop.bomberman.utils.Global; import java.awt.*; import java.util.ArrayList; @@ -37,6 +35,9 @@ public DeadScreen(Game game) { e.printStackTrace(); } + } + + public void setInput() { Keyboard.i().keyboardInputCallback = java.util.Optional.of(new Keyboard.KeyboardInputCallback() { @Override public void onKeyPressed(EGameControl gameControl) { diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index f4524df..8ff0ea6 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -42,11 +42,11 @@ public void onKeyPressed(EGameControl gameControl) { selectorIndex++; break; case ENTER: - Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; - Global.gameLevel = selectorIndex + 1; synchronized (_board) { _board.loadLevel(Global.gameLevel); } + Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; + Global.gameLevel = selectorIndex + 1; onDestroy(); break; } From 2ba02346d792a4c5609fd0813d3abbb9062244a8 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Sun, 26 May 2024 14:31:21 +0000 Subject: [PATCH 57/66] restore soundtrack --- src/uet/oop/bomberman/BombermanGame.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/uet/oop/bomberman/BombermanGame.java b/src/uet/oop/bomberman/BombermanGame.java index ec71619..eeb815c 100644 --- a/src/uet/oop/bomberman/BombermanGame.java +++ b/src/uet/oop/bomberman/BombermanGame.java @@ -6,6 +6,7 @@ public class BombermanGame { public static void main(String[] args) { + Sound.play("soundtrack"); new Frame(); } } From 26745c9f57e1230f2b509760f41875a86a4ce0b0 Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Sun, 26 May 2024 14:51:35 +0000 Subject: [PATCH 58/66] fix choose level not work --- src/uet/oop/bomberman/screen/SelectLevelScreen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index 8ff0ea6..38f038b 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -42,11 +42,11 @@ public void onKeyPressed(EGameControl gameControl) { selectorIndex++; break; case ENTER: + Global.gameLevel = selectorIndex + 1; synchronized (_board) { _board.loadLevel(Global.gameLevel); } Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; - Global.gameLevel = selectorIndex + 1; onDestroy(); break; } From 2a16e79397b67e1a7e0a6a6cf2f5bcea8db1396e Mon Sep 17 00:00:00 2001 From: phuonnngminh Date: Sun, 26 May 2024 15:04:36 +0000 Subject: [PATCH 59/66] fix: user can still input after selecting restart in dead screen --- src/uet/oop/bomberman/Game.java | 18 ++++++++---------- .../oop/bomberman/level/FileLevelLoader.java | 2 +- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/uet/oop/bomberman/Game.java b/src/uet/oop/bomberman/Game.java index ad39602..83d19f4 100644 --- a/src/uet/oop/bomberman/Game.java +++ b/src/uet/oop/bomberman/Game.java @@ -14,6 +14,7 @@ import java.awt.image.BufferStrategy; import java.awt.image.BufferedImage; import java.awt.image.DataBufferInt; +import java.util.Optional; /** * Tạo vòng lặp cho game, lưu trữ một vài tham số cấu hình toàn cục, @@ -149,6 +150,7 @@ private void showScreen() { IGameInfoManager gameInfoManager = _board.getGameInfoManager(); switch (Global.currentScreen) { case GAME_PLAY_SCREEN: + Keyboard.i().keyboardInputCallback = Optional.empty(); if (gameInfoManager.isPaused()) { if (_screenDelay <= 0) { _screenToShow = -1; @@ -181,21 +183,15 @@ private void showScreen() { break; case SELECT_LEVEL_SCREEN: // TODO: render select level screen - if (Global.currentScreen != Global.previousScreen) { - selectLevelScreen.setInput(Keyboard.i()); - } + selectLevelScreen.setInput(Keyboard.i()); selectLevelScreen.drawScreen(g); break; case SELECT_GAME_MODE: - if (Global.currentScreen != Global.previousScreen) { - selectGameModeScreen.setInput(Keyboard.i()); - } + selectGameModeScreen.setInput(Keyboard.i()); selectGameModeScreen.drawScreen(g); break; case END_GAME_SCREEN: - if (Global.currentScreen != Global.previousScreen) { - deadScreen.setInput(); - } + deadScreen.setInput(); deadScreen.drawScreen(g); break; } @@ -247,7 +243,9 @@ public Board getBoard() { public void restartGame() { Global.currentScreen = EScreenName.GAME_PLAY_SCREEN; - _board.loadLevel(_board._levelLoader.getLevel()); + synchronized (_board) { + _board.loadLevel(_board._levelLoader.getLevel()); + } } diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 2db2ebe..29e482f 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -49,7 +49,7 @@ public void loadLevel(int level) { FileReader fr = new FileReader("res/levels/Level" + level + ".txt");//doc tep luu map BufferedReader br = new BufferedReader(fr); String line = br.readLine(); - while (!line.equals("")) { + while (line != null && !line.isEmpty()) { list.add(line); line = br.readLine(); //doc file txt luu vao list From dd851d53c31db58f9850441549078446cf8813ee Mon Sep 17 00:00:00 2001 From: Huy010302 <111289985+Huy010302@users.noreply.github.com> Date: Sun, 26 May 2024 22:26:50 +0700 Subject: [PATCH 60/66] fix level 3, fix display of enemy --- res/levels/Level3.txt | 6 +- res/sprites/fireIcon.png | Bin 0 -> 23906 bytes src/uet/oop/bomberman/BombermanGame.java | 2 +- src/uet/oop/bomberman/Game.java | 120 ++++++++--------- .../entities/character/enemy/Oneal.java | 20 +-- .../oop/bomberman/level/FileLevelLoader.java | 127 +++++++++++------- 6 files changed, 149 insertions(+), 126 deletions(-) create mode 100644 res/sprites/fireIcon.png diff --git a/res/levels/Level3.txt b/res/levels/Level3.txt index 5a6ca2f..b064569 100644 --- a/res/levels/Level3.txt +++ b/res/levels/Level3.txt @@ -5,10 +5,10 @@ # * * *** ** # * ** # # #*# # # # #4# #b#1# # # # #*# # * ** * **# -# # #*# # # # # #*#*#*#*# # # # +# # #*# 3 # # # #*#*#*#*# # # # # * * * *x* * 4 # # # # # #*# # # # # # #*# #*# # -# **** *2 # +# **2* *2 # # # # # # # # # # #*# # # # #*# -# ** ** * 5 # +# **4 ** * 5 # ############################### diff --git a/res/sprites/fireIcon.png b/res/sprites/fireIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..2b2f529cc3fbd66a5736fa24e6a82de2d8e143c8 GIT binary patch literal 23906 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 list = new ArrayList<>(); try { - FileReader fr = new FileReader("res/levels/Level" + level + ".txt");//doc tep luu map + FileReader fr = new FileReader("res/levels/Level" + level + ".txt");// doc tep luu map BufferedReader br = new BufferedReader(fr); String line = br.readLine(); while (line != null && !line.isEmpty()) { list.add(line); line = br.readLine(); - //doc file txt luu vao list + // doc file txt luu vao list } } catch (Exception e) { e.printStackTrace(); @@ -67,7 +69,7 @@ public void loadLevel(int level) { _map[i][j] = list.get(i + 1).charAt(j); } } - //gan cac phan tu cho mang + // gan cac phan tu cho mang } @Override @@ -91,36 +93,34 @@ public void createEntities() { // Thêm Portal case 'x': layeredEntity = new LayeredEntity( - x, y, - new Grass(x, y, Sprite.grass), - new Portal(x, y, _board, Sprite.portal), - new Brick(x, y, Sprite.brick) - ); + x, y, + new Grass(x, y, Sprite.grass), + new Portal(x, y, _board, Sprite.portal), + new Brick(x, y, Sprite.brick)); _board.getEntityManager().getTileManager().addTile(pos, layeredEntity); break; // Thêm brick case '*': layeredEntity = new LayeredEntity( - x, y, - new Grass(x, y, Sprite.grass), - new Brick(x, y, Sprite.brick) - ); + x, y, + new Grass(x, y, Sprite.grass), + new Brick(x, y, Sprite.brick)); _board.getEntityManager().getTileManager().addTile(x + y * _width, layeredEntity); break; // Thêm Bomber player case 'p': Bomber bomber = new Bomber( - Coordinates.tileToPixel(x), - Coordinates.tileToPixel(y) + Game.TILES_SIZE, - Game.BOMBERSPEED, - Game.BOMBRATE, - Game.BOMBRADIUS, - _board.getEntityManager() - ); + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + Game.BOMBERSPEED, + Game.BOMBRATE, + Game.BOMBRADIUS, + _board.getEntityManager()); _board.getEntityManager().getCharacterManager().addCharacter(bomber); _board.getEntityManager().getCharacterManager().setPlayer(bomber); Screen.setOffset(0, 0); - _board.getEntityManager().getTileManager().addTile(x + y * _width, new Grass(x, y, Sprite.grass)); + _board.getEntityManager().getTileManager().addTile(x + y * _width, + new Grass(x, y, Sprite.grass)); agent = new KeyboardAgent(bomber); _board.addAgent(agent); break; @@ -128,22 +128,21 @@ public void createEntities() { // Thêm balloon case '1': enemy = new Balloon( - Coordinates.tileToPixel(x), - Coordinates.tileToPixel(y) + Game.TILES_SIZE, - _board.getEntityManager() - ); + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + _board.getEntityManager()); _board.getEntityManager().getCharacterManager().addCharacter(enemy); - _board.getEntityManager().getTileManager().addTile(x + y * _width, new Grass(x, y, Sprite.grass)); + _board.getEntityManager().getTileManager().addTile(x + y * _width, + new Grass(x, y, Sprite.grass)); agent = new MovingAgent(enemy, new AILow()); _board.addAgent(agent); break; // Thêm oneal case '2': enemy = new Oneal( - Coordinates.tileToPixel(x), - Coordinates.tileToPixel(y) + Game.TILES_SIZE, - _board.getEntityManager() - ); + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + _board.getEntityManager()); _board.getEntityManager().getCharacterManager().addCharacter(enemy); _board.getEntityManager().getTileManager().addTile(pos, new Grass(x, y, Sprite.grass)); agent = new MovingAgent(enemy, new AILow()); @@ -152,44 +151,68 @@ public void createEntities() { // Thêm doll case '3': enemy = new Doll( - Coordinates.tileToPixel(x), - Coordinates.tileToPixel(y) + Game.TILES_SIZE, - _board.getEntityManager() - ); + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + _board.getEntityManager()); _board.getEntityManager().getCharacterManager().addCharacter(enemy); - _board.getEntityManager().getTileManager().addTile(x + y * _width, new Grass(x, y, Sprite.grass)); - agent = new MovingAgent(enemy, new AIMedium(enemy, _board.getEntityManager().getCharacterManager())); + _board.getEntityManager().getTileManager().addTile(x + y * _width, + new Grass(x, y, Sprite.grass)); + agent = new MovingAgent(enemy, + new AIMedium(enemy, _board.getEntityManager().getCharacterManager())); _board.addAgent(agent); break; - // Thêm oneal - // Thêm BomItem + // Thêm minvo + case '4': + enemy = new Minvo( + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + _board.getEntityManager()); + _board.getEntityManager().getCharacterManager().addCharacter(enemy); + _board.getEntityManager().getTileManager().addTile(x + y * _width, + new Grass(x, y, Sprite.grass)); + agent = new MovingAgent(enemy, + new AIMedium(enemy, _board.getEntityManager().getCharacterManager())); + _board.addAgent(agent); + break; + // Thêm kondoria + case '5': + enemy = new Kondoria( + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + _board.getEntityManager()); + _board.getEntityManager().getCharacterManager().addCharacter(enemy); + _board.getEntityManager().getTileManager().addTile(x + y * _width, + new Grass(x, y, Sprite.grass)); + agent = new MovingAgent(enemy, + new AIMedium(enemy, _board.getEntityManager().getCharacterManager())); + _board.addAgent(agent); + break; + + // Thêm BomItem case 'b': layeredEntity = new LayeredEntity( - x, y, - new Grass(x, y, Sprite.grass), - new BombItem(x, y, Sprite.powerup_bombs), - new Brick(x, y, Sprite.brick) - ); + x, y, + new Grass(x, y, Sprite.grass), + new BombItem(x, y, Sprite.powerup_bombs), + new Brick(x, y, Sprite.brick)); _board.getEntityManager().getTileManager().addTile(pos, layeredEntity); break; // Thêm SpeedItem case 's': layeredEntity = new LayeredEntity( - x, y, - new Grass(x, y, Sprite.grass), - new SpeedItem(x, y, Sprite.powerup_speed), - new Brick(x, y, Sprite.brick) - ); + x, y, + new Grass(x, y, Sprite.grass), + new SpeedItem(x, y, Sprite.powerup_speed), + new Brick(x, y, Sprite.brick)); _board.getEntityManager().getTileManager().addTile(pos, layeredEntity); break; // Thêm FlameItem case 'f': layeredEntity = new LayeredEntity( - x, y, - new Grass(x, y, Sprite.grass), - new FlameItem(x, y, Sprite.powerup_flames), - new Brick(x, y, Sprite.brick) - ); + x, y, + new Grass(x, y, Sprite.grass), + new FlameItem(x, y, Sprite.powerup_flames), + new Brick(x, y, Sprite.brick)); _board.getEntityManager().getTileManager().addTile(pos, layeredEntity); break; From 7918ca09dae1ed2c9b6862dc08ad636ef9636d2d Mon Sep 17 00:00:00 2001 From: Huy010302 <111289985+Huy010302@users.noreply.github.com> Date: Sun, 26 May 2024 22:37:10 +0700 Subject: [PATCH 61/66] fix level 3, and fix display enemy --- .../bomberman/entities/character/enemy/Doll.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/uet/oop/bomberman/entities/character/enemy/Doll.java b/src/uet/oop/bomberman/entities/character/enemy/Doll.java index 0114504..b4e2b0e 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Doll.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Doll.java @@ -9,16 +9,12 @@ import uet.oop.bomberman.base.IEntityManager; import uet.oop.bomberman.graphics.Sprite; -/** - * - * @author TUNG318 - */ -public class Doll extends Enemy{ +public class Doll extends Enemy { public Doll(int x, int y, IEntityManager entityManager) { super(x, y, entityManager, Sprite.balloom_dead, Game.BOMBERSPEED, 100); - _sprite = Sprite.balloom_left1; + _sprite = Sprite.doll_left1; } @@ -28,7 +24,8 @@ protected void chooseSprite() { case 0: case 1: if (isMoving()) { - _sprite = Sprite.movingSprite(Sprite.doll_right1, Sprite.doll_right2, Sprite.doll_right3, _animate, Game.TICKS_PER_SECOND); + _sprite = Sprite.movingSprite(Sprite.doll_right1, Sprite.doll_right2, Sprite.doll_right3, _animate, + Game.TICKS_PER_SECOND); } else { _sprite = Sprite.doll_left1; } @@ -36,7 +33,8 @@ protected void chooseSprite() { case 2: case 3: if (isMoving()) { - _sprite = Sprite.movingSprite(Sprite.doll_left1, Sprite.doll_left2, Sprite.doll_left3, _animate, Game.TICKS_PER_SECOND); + _sprite = Sprite.movingSprite(Sprite.doll_left1, Sprite.doll_left2, Sprite.doll_left3, _animate, + Game.TICKS_PER_SECOND); } else { _sprite = Sprite.doll_left1; } From a5b54f3099d3a85a9d72f2f92f179f198ab23eea Mon Sep 17 00:00:00 2001 From: Huy010302 <111289985+Huy010302@users.noreply.github.com> Date: Wed, 29 May 2024 10:33:00 +0700 Subject: [PATCH 62/66] add player 2, not fix collide of 2 player with item yet --- res/levels/Level1.txt | 4 +- res/levels/Level2.txt | 2 +- res/levels/Level4.txt | 14 ++ res/levels/Level5.txt | 14 ++ res/levels/Level6.txt | 14 ++ res/sprites/player2_down.png | Bin 0 -> 228 bytes res/sprites/player2_down_1.png | Bin 0 -> 253 bytes res/sprites/player2_down_2.png | Bin 0 -> 226 bytes res/sprites/player2_left.png | Bin 0 -> 256 bytes res/sprites/player2_left_1.png | Bin 0 -> 256 bytes res/sprites/player2_left_2.png | Bin 0 -> 284 bytes res/sprites/player2_right.png | Bin 0 -> 255 bytes res/sprites/player2_right_1.png | Bin 0 -> 263 bytes res/sprites/player2_right_2.png | Bin 0 -> 255 bytes res/sprites/player2_up.png | Bin 0 -> 241 bytes res/sprites/player2_up_1.png | Bin 0 -> 242 bytes res/sprites/player2_up_2.png | Bin 0 -> 242 bytes .../oop/bomberman/agent/KeyboardAgent.java | 30 ++-- .../bomberman/agent/KeyboardAgentPlayer1.java | 51 ++++++ .../bomberman/agent/KeyboardAgentPlayer2.java | 51 ++++++ .../bomberman/entities/character/Bomber.java | 102 ++++++----- .../bomberman/entities/character/Bomber2.java | 56 ++++++ .../entities/character/enemy/Minvo.java | 99 +---------- src/uet/oop/bomberman/graphics/Sprite.java | 166 ++++++++++-------- src/uet/oop/bomberman/input/Keyboard.java | 19 ++ .../oop/bomberman/level/FileLevelLoader.java | 76 +++++--- .../screen/SelectGameModeScreen.java | 7 +- .../bomberman/screen/SelectLevelScreen.java | 14 +- 28 files changed, 452 insertions(+), 267 deletions(-) create mode 100644 res/levels/Level4.txt create mode 100644 res/levels/Level5.txt create mode 100644 res/levels/Level6.txt create mode 100644 res/sprites/player2_down.png create mode 100644 res/sprites/player2_down_1.png create mode 100644 res/sprites/player2_down_2.png create mode 100644 res/sprites/player2_left.png create mode 100644 res/sprites/player2_left_1.png create mode 100644 res/sprites/player2_left_2.png create mode 100644 res/sprites/player2_right.png create mode 100644 res/sprites/player2_right_1.png create mode 100644 res/sprites/player2_right_2.png create mode 100644 res/sprites/player2_up.png create mode 100644 res/sprites/player2_up_1.png create mode 100644 res/sprites/player2_up_2.png create mode 100644 src/uet/oop/bomberman/agent/KeyboardAgentPlayer1.java create mode 100644 src/uet/oop/bomberman/agent/KeyboardAgentPlayer2.java create mode 100644 src/uet/oop/bomberman/entities/character/Bomber2.java diff --git a/res/levels/Level1.txt b/res/levels/Level1.txt index 130ce88..2fcfc56 100644 --- a/res/levels/Level1.txt +++ b/res/levels/Level1.txt @@ -6,11 +6,11 @@ # # # # # #*# # #*#*# # # # #*# #f x ** * * # # # # # # # # # # #*# #*# # # # -#* * * * * # +#z * * * * # # # # # #*# # # #*#*# # # # # # #* ** * * # # #*# # # # # # #*# # # # # # # -#p * * * # +# * * * # ############################### diff --git a/res/levels/Level2.txt b/res/levels/Level2.txt index b01dcf7..f76a558 100644 --- a/res/levels/Level2.txt +++ b/res/levels/Level2.txt @@ -10,7 +10,7 @@ # # # # #*# # # # # # #*# #*# # # **** *1 # # # # # # # # # # #*# # # # #*# -#a ** * * 3 # +# ** * * 3 # ############################### diff --git a/res/levels/Level4.txt b/res/levels/Level4.txt new file mode 100644 index 0000000..c9867be --- /dev/null +++ b/res/levels/Level4.txt @@ -0,0 +1,14 @@ +4 13 31 +############################### +#p * ** * * s # +# # # # #*# # #*# # # # # #*# # +# * * **1 ** # * ** # +# #*# # # #4# # #*#1# # # # #*# +# b * ** * **# +# # #*# 3 # # # #*#*#*#*# # # # +# * * * *x* * 2 # +# # # # #*# # # # # # #*# #*# # +# **2* *3 # +# # # # # # # # # #*# # # # #*# +#a**5 ** * 4 # +############################### \ No newline at end of file diff --git a/res/levels/Level5.txt b/res/levels/Level5.txt new file mode 100644 index 0000000..78e4ea5 --- /dev/null +++ b/res/levels/Level5.txt @@ -0,0 +1,14 @@ +5 13 31 +############################### +#p * ** * * f # +# # # # #*# # #*# # # # # #*# # +# * * **4 ** # * ** # +# #*# # # #3# # #*#1# # # # #*# +# b * ** * **# +# # #*# 1 # # # #*#*#*#*# # # # +# * * * *x* * 5 # +# # # # #*# # # # # # #*# #*# # +# **2* *2 # +# # # # # # # # # #*# # # # #*# +#a ** ** * 5 # +############################### diff --git a/res/levels/Level6.txt b/res/levels/Level6.txt new file mode 100644 index 0000000..9aa7b90 --- /dev/null +++ b/res/levels/Level6.txt @@ -0,0 +1,14 @@ +6 13 31 +############################### +#p 2 * ** * * f # +# # # # #*# # #*# # # # # #*# # +# * * **4 ** # * 3 ** # +# #*# # # #3# # #*#1# # # # #*# +# b * ** * **# +# # #*# 5 # # # #*#*#*#*# # # # +# * * * *x* * 1 # +# # # # #*# # # # # # #*# #*# # +# **2* *4 # +# # # # # # # # # #*# # # # #*# +#a**3 ** * 5 # +############################### diff --git a/res/sprites/player2_down.png b/res/sprites/player2_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2735443e97ee46631cef929bca2321c27550efdd GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP;i>3 zi(`mI@6zDgf-MFdF%s!Hug=-Manaty|9;jd?K%xDwTAw`oc+Aa-cFpFjvJz-QjRbd zR9K$)cyZ=0u?0_UZpqy^8^@3gTe~DWM4fC2vqf literal 0 HcmV?d00001 diff --git a/res/sprites/player2_down_1.png b/res/sprites/player2_down_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8eddb580fefb2e1d07bf8a687db147c89fc00ffb GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP;kAc zi(`mI@7$n+yoVKdYyy^sobuA#Z)e3c`vUJS&+iTET0-K!Ox)4RB7Nm|!iL%(Ijei- zIR1z<75U8PP(In(E;jDcU8XEs@8~A6z03jkrr&S>GErB>xPpVUy^cqwn)F*A#CdS!Qn&4^U4nK8{Rk8RP0Tx ybKh7pu|a6Xlb0V;I9J&&*gOA#`U%lLjr{9B*gonzm<4n>1B0ilpUXO@geCxB;9;=< literal 0 HcmV?d00001 diff --git a/res/sprites/player2_down_2.png b/res/sprites/player2_down_2.png new file mode 100644 index 0000000000000000000000000000000000000000..46092acad15e9a28f89b0a1d0017149afd3b2dd9 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP;iQ; zi(`n!#NMETf`=7&ChxqnF=V#w4HmN#YB!bN2Gw0`=bUh3pPRgco5wdtQPHMiS%sqv z2lu|6u<-p36@eW~_HDd3gN5I5ExWN$k6BarhZ9eO>efE~Ve4}`)9Z6?qLzjFIZw_r zZ1+|lJvY&WL-4n)&~vjN?FBM+?G_U2zVBDLSbMNw!hV6dng2Sk99i|aTOrRa@-e&K X3++{nK2KzU?ql$D^>bP0l+XkK6OC1T literal 0 HcmV?d00001 diff --git a/res/sprites/player2_left.png b/res/sprites/player2_left.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b74d49f885a26b15832a8d29be0b0289ebd26f GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP;ir{ zi(`n!#Hm5Ic@Hb_*evqknHbt&c}UH`(fy@dZrDq{hp&Gf)L!U!b)Jq2&-2fbY>tcy zCvDfTvB`?)w(P~})2?$fcf7tG`|n1}|J=;BUjf_s7(VP!c#?Fi_Wctd zg@o)!k=)Vkz5^L literal 0 HcmV?d00001 diff --git a/res/sprites/player2_left_1.png b/res/sprites/player2_left_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e8c99b21cb143d2383b64d824f25a2736fadef49 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP;ir{ zi(`n!#Hm5Ic@HZH7zZxlxfr^jxW)Gb%UiX(%vK@qPXBFKVxu=TOHqaI{$VzO5Qa&2 z4ts5gZc_=7u(dh)EV1C-rk_Q{f$6W#oqoJj`24Z@{w47{euuX26xlqzN3J@eyY^ab z?$*9*z4L_Tc*`*!SvQS^KcUjhOd{=n*3))|jpnL}{MnqnM)zv{pOjB{Fq_Zwp(!Vq zzUz_|c4bp1xUWAp;cWU{Q@)GLA>9W5mfp`{ke_N@ukcelzXRxc22WQ%mvv4FO#rgy BV95Xg literal 0 HcmV?d00001 diff --git a/res/sprites/player2_left_2.png b/res/sprites/player2_left_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8d68f292984fd041d16de36eee92c79ff22afe9f GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkQ1G0m zi(`mI@6t){d7BkPj?|l|t+|kRE%~v*A;&@dd4RS^zANZ zSLm2i`}#tvA(Ir%z4rsBJ)abHW&6rAT)h9J7dlPc zmO1O~^GYRwvX#>PXQVG~*g?8}bFoTpaR&sq?W~^bE*`3La$dOc+gQ`!Pcn;^ g&#_(;Qr=)5^L-Uh(UH0TfIegJboFyt=akR{0Dfb0@&Et; literal 0 HcmV?d00001 diff --git a/res/sprites/player2_right.png b/res/sprites/player2_right.png new file mode 100644 index 0000000000000000000000000000000000000000..658940503b88b551af7baea96a0d4976963c0a9b GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP;jHC zi(`n!#JQ6$@*YwUXtVbaZY!92NTzIZ8PnY(wpy!qG~3MOcW4#MdL-^t^x^Q`gXgRF zb#*B4X7H$T2rOsI+P}cNG-BBXAB}yV8DrU=eS4vz74$DuC_(nx-wo4-Py_>$g-&^lg%g%?3cD1j0J#F4khN|9b*&Et5pMZ{M@O1TaS?83{1OW46 BWV-+W literal 0 HcmV?d00001 diff --git a/res/sprites/player2_right_1.png b/res/sprites/player2_right_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb0327915065f97f2db98c08afa93ed81217305b GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP;jTG zi(`n!#JQ8+@-{07w8={gPis1-IQs$1TeZ8+kxQ*ltbg5q`Id8!=Y0W=hj#Os9jBRe zbSUr!uJ;oNxgELMczbke?6HVr9>@1xF1hhUZvAAJ=zaCxOo#qnl6rA=?WdE$%12I} zX8)MD{AKf_xJvH=|-DJUAnYzQ= zQMpUw?jK;98C_%I?0NA_e4tr6QwG2Giswg{M;O=m&K8yb%DCfFy^&4Hf+nCR7(8A5 KT-G@yGywqYBxivD literal 0 HcmV?d00001 diff --git a/res/sprites/player2_right_2.png b/res/sprites/player2_right_2.png new file mode 100644 index 0000000000000000000000000000000000000000..da73c7946135941c1311b15bccc4e156aec504c6 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP;jHC zi(`n!#HEw&3N|YUwAjx$6X6o&_W0NO)?AAB^)&}PVp_97FK@z=<%b;E8_V$^Le%(?-V#-KdqrKY0kb9=IK$p zI&;r%X?ects8p-(-!iYYX&UdUy)VW#K8))>$Yl7Vrc9o3OWJhD<8Qy`>3I5kNK5l2 zelrNxJ8hEa$6@w*)}6q6M@~ literal 0 HcmV?d00001 diff --git a/res/sprites/player2_up.png b/res/sprites/player2_up.png new file mode 100644 index 0000000000000000000000000000000000000000..38dd3abcb4615e5c0e99847e01151d569b3a0f9a GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP;jxQ zi(`n!#Hm5Ic@Hb_*ev#vR9Y?ZEkW2Q@cV+;F8%M!8V4;_RyiFy_WU^KWQTx@?-`@w z7?$6(JJ5bwh=D~(fcM+k2D>Y6M%|IYmffZ8^AcVf%gYDPI9zc5=eFiEISevBiR(75 z-_R1{xl!ihYw>&B?+@E1d48O8!Bjv&@<17%(1a3psnrWj4qWrCn*J(oPtofS){SD- m$9}YH)gBJM$yLAp7<&p+h~K3jbIXCwW$<+Mb6Mw<&;$VQ_gV1( literal 0 HcmV?d00001 diff --git a/res/sprites/player2_up_1.png b/res/sprites/player2_up_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f927a8fe50c808a0582534c6963dc9a6570657 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP;iN- zi(`n!#NJ64d7BM*T;c ze6n~_7|?R4kgt|+@6Bk>O9d6r%)ZIaZsftO^|p=@$3-=1k9=b|r1rYR}}}4V+tQvObnolqK$e<~lzhNJmr2 z-Rwb=)SK`&zvOTI#f%#7_-_1RikO}jDxP5<8^rRa_}`U%PQNc`PPucpMeFjJ5@D@R mOjF!hbUu3+D8xqm;?GaH8Zt9hVm1%Zy$qhNelF{r5}E*&tXSm$ literal 0 HcmV?d00001 diff --git a/src/uet/oop/bomberman/agent/KeyboardAgent.java b/src/uet/oop/bomberman/agent/KeyboardAgent.java index 32a0117..77a1e3d 100644 --- a/src/uet/oop/bomberman/agent/KeyboardAgent.java +++ b/src/uet/oop/bomberman/agent/KeyboardAgent.java @@ -21,26 +21,30 @@ public List getNextActions() { List actions = getMoveActions(); if (character instanceof Bomber) { - if(Keyboard.i().space) { - actions.add(ActionConstants.PLACE_BOMB); + if (Keyboard.i().space) { + actions.add(ActionConstants.PLACE_BOMB); } } - return actions; + return actions; } private List getMoveActions() { int xa = 0, ya = 0; - if(Keyboard.i().up) ya--; - if(Keyboard.i().down) ya++; - if(Keyboard.i().left) xa--; - if(Keyboard.i().right) xa++; - - List actions = new ArrayList<>(); - if(xa != 0 || ya != 0) { + if (Keyboard.i().up) + ya--; + if (Keyboard.i().down) + ya++; + if (Keyboard.i().left) + xa--; + if (Keyboard.i().right) + xa++; + + List actions = new ArrayList<>(); + if (xa != 0 || ya != 0) { ActionMove actionMove = new ActionMove(xa, ya); - actions.add(actionMove); + actions.add(actionMove); } - return actions; + return actions; } - + } diff --git a/src/uet/oop/bomberman/agent/KeyboardAgentPlayer1.java b/src/uet/oop/bomberman/agent/KeyboardAgentPlayer1.java new file mode 100644 index 0000000..d716a5f --- /dev/null +++ b/src/uet/oop/bomberman/agent/KeyboardAgentPlayer1.java @@ -0,0 +1,51 @@ +package uet.oop.bomberman.agent; + +import java.util.ArrayList; +import java.util.List; + +import uet.oop.bomberman.entities.character.Bomber; +import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.character.action.Action; +import uet.oop.bomberman.entities.character.action.ActionConstants; +import uet.oop.bomberman.entities.character.action.ActionMove; +import uet.oop.bomberman.input.Keyboard; + +public class KeyboardAgentPlayer1 extends KeyboardAgent { + // biến + + public KeyboardAgentPlayer1(Character character) { + super(character); + } + + @Override + public List getNextActions() { + List actions = getMoveActions(); + + if (character instanceof Bomber) { + if (Keyboard.i().player1_space) { + actions.add(ActionConstants.PLACE_BOMB); + } + } + return actions; + } + + private List getMoveActions() { + int xa = 0, ya = 0; + if (Keyboard.i().player1_up) + ya--; + if (Keyboard.i().player1_down) + ya++; + if (Keyboard.i().player1_left) + xa--; + if (Keyboard.i().player1_right) + xa++; + + List actions = new ArrayList<>(); + if (xa != 0 || ya != 0) { + ActionMove actionMove = new ActionMove(xa, ya); + actions.add(actionMove); + } + return actions; + } + +} diff --git a/src/uet/oop/bomberman/agent/KeyboardAgentPlayer2.java b/src/uet/oop/bomberman/agent/KeyboardAgentPlayer2.java new file mode 100644 index 0000000..8b0bd84 --- /dev/null +++ b/src/uet/oop/bomberman/agent/KeyboardAgentPlayer2.java @@ -0,0 +1,51 @@ +package uet.oop.bomberman.agent; + +import java.util.ArrayList; +import java.util.List; + +import uet.oop.bomberman.entities.character.Bomber; +import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.character.action.Action; +import uet.oop.bomberman.entities.character.action.ActionConstants; +import uet.oop.bomberman.entities.character.action.ActionMove; +import uet.oop.bomberman.input.Keyboard; + +public class KeyboardAgentPlayer2 extends KeyboardAgent { + + public KeyboardAgentPlayer2(Character character) { + super(character); + // TODO Auto-generated constructor stub + } + + @Override + public List getNextActions() { + List actions = getMoveActions(); + + if (character instanceof Bomber) { + if (Keyboard.i().player2_space) { + actions.add(ActionConstants.PLACE_BOMB); + } + } + return actions; + } + + private List getMoveActions() { + int xa = 0, ya = 0; + if (Keyboard.i().player2_up) + ya--; + if (Keyboard.i().player2_down) + ya++; + if (Keyboard.i().player2_left) + xa--; + if (Keyboard.i().player2_right) + xa++; + + List actions = new ArrayList<>(); + if (xa != 0 || ya != 0) { + ActionMove actionMove = new ActionMove(xa, ya); + actions.add(actionMove); + } + return actions; + } + +} diff --git a/src/uet/oop/bomberman/entities/character/Bomber.java b/src/uet/oop/bomberman/entities/character/Bomber.java index f00e675..a292697 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber.java +++ b/src/uet/oop/bomberman/entities/character/Bomber.java @@ -34,7 +34,7 @@ public class Bomber extends Character implements CanUseItem { protected int bombCooldown = 0; private final int baseBombRadius; - + public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRadius, IEntityManager entityManager) { super(x, y, baseSpeed, entityManager); this.baseBombLimit = baseBombLimit; @@ -45,8 +45,10 @@ public Bomber(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRad @Override public void handleUpdate() { clearExpiredBombs(); - if (bombCooldown < -7500) bombCooldown = 0; - else bombCooldown--; + if (bombCooldown < -7500) + bombCooldown = 0; + else + bombCooldown--; animate(); } @@ -82,16 +84,18 @@ public int getBombCooldown() { } public boolean placeBomb() { - if(getBombRemainingQuota() > 0 && bombCooldown < 0) { - - int xt = Coordinates.pixelToTile(_x + _sprite.getSize() / 2); - int yt = Coordinates.pixelToTile( (_y + _sprite.getSize() / 2) - _sprite.getSize() ); //subtract half player height and minus 1 y position - - placeBomb(xt,yt); - - bombCooldown = 30; + if (getBombRemainingQuota() > 0 && bombCooldown < 0) { + + int xt = Coordinates.pixelToTile(_x + _sprite.getSize() / 2); + int yt = Coordinates.pixelToTile((_y + _sprite.getSize() / 2) - _sprite.getSize()); // subtract half player + // height and minus 1 y + // position + + placeBomb(xt, yt); + + bombCooldown = 30; return true; - } + } return false; } @@ -104,17 +108,20 @@ public void placeBomb(int x, int y) { private void clearExpiredBombs() { _bombs = _bombs.stream() - .filter(bomb -> !bomb.isRemoved()) - .collect(Collectors.toList()); + .filter(bomb -> !bomb.isRemoved()) + .collect(Collectors.toList()); } @Override public boolean collide(Entity e) { - if (!super.collide(e)) return false; + if (!super.collide(e)) + return false; return true; } - //sprite - private void chooseSprite() { + + // sprite + // protected + protected void chooseSprite() { switch (getDirection()) { case 0: _sprite = Sprite.player_up; @@ -154,46 +161,53 @@ public int getPoints() { return 0; } - private static final List VALID_ACTIONS = new ArrayList(){{ - addAll(ActionConstants.LIST_ACTION_MOVE); - add(ActionConstants.PLACE_BOMB); - }}; + private static final List VALID_ACTIONS = new ArrayList() { + { + addAll(ActionConstants.LIST_ACTION_MOVE); + add(ActionConstants.PLACE_BOMB); + } + }; + @Override - protected List getValidActions() { + protected List getValidActions() { return VALID_ACTIONS; - } + } @Override protected void performAction(Action action, boolean isDryRun) throws InvalidActionException, CannotPerformActionException { super.performAction(action, isDryRun); if (action instanceof ActionPlaceBomb) { - if (getBombRemainingQuota() < 0) throw new BombQuotaReachedException(); - if (bombCooldown > 0) throw new ActionOnCooldownException(); - if (!isDryRun) placeBomb(); + if (getBombRemainingQuota() < 0) + throw new BombQuotaReachedException(); + if (bombCooldown > 0) + throw new ActionOnCooldownException(); + if (!isDryRun) + placeBomb(); } } - @Override - public Stream getActiveItems() { - return activeItems.stream().filter(Item::isActive); - } + @Override + public Stream getActiveItems() { + return activeItems.stream().filter(Item::isActive); + } - @Override - public void addActiveItem(Item item) { - this.activeItems.add(item); - } + @Override + public void addActiveItem(Item item) { + this.activeItems.add(item); + } @Override - protected double getSpeedMultiplier() { - double speedMultiplier = 1; - for (Item item: activeItems) { - if (!item.isActive()) continue; - if (item instanceof SpeedItem) { - speedMultiplier += SpeedItem.SPEED_MULTIPLIER; - } - } - return speedMultiplier; - } + protected double getSpeedMultiplier() { + double speedMultiplier = 1; + for (Item item : activeItems) { + if (!item.isActive()) + continue; + if (item instanceof SpeedItem) { + speedMultiplier += SpeedItem.SPEED_MULTIPLIER; + } + } + return speedMultiplier; + } } diff --git a/src/uet/oop/bomberman/entities/character/Bomber2.java b/src/uet/oop/bomberman/entities/character/Bomber2.java new file mode 100644 index 0000000..9a69409 --- /dev/null +++ b/src/uet/oop/bomberman/entities/character/Bomber2.java @@ -0,0 +1,56 @@ +package uet.oop.bomberman.entities.character; + +import uet.oop.bomberman.base.IEntityManager; +import uet.oop.bomberman.entities.Entity; +import uet.oop.bomberman.graphics.Sprite; + +public class Bomber2 extends Bomber { + + public Bomber2(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRadius, + IEntityManager entityManager) { + super(x, y, baseSpeed, baseBombLimit, baseBombRadius, entityManager); + } + + @Override + public boolean collide(Entity e) { + if (!super.collide(e)) + return false; + return true; + } + + @Override + protected void chooseSprite() { + switch (getDirection()) { + case 0: + _sprite = Sprite.player2_up; + if (isMoving()) { + _sprite = Sprite.movingSprite(Sprite.player2_up_1, Sprite.player2_up_2, _animate, 20); + } + break; + case 1: + _sprite = Sprite.player2_right; + if (isMoving()) { + _sprite = Sprite.movingSprite(Sprite.player2_right_1, Sprite.player2_right_2, _animate, 20); + } + break; + case 2: + _sprite = Sprite.player2_down; + if (isMoving()) { + _sprite = Sprite.movingSprite(Sprite.player2_down_1, Sprite.player2_down_2, _animate, 20); + } + break; + case 3: + _sprite = Sprite.player2_left; + if (isMoving()) { + _sprite = Sprite.movingSprite(Sprite.player2_left_1, Sprite.player2_left_2, _animate, 20); + } + break; + default: + _sprite = Sprite.player2_right; + if (isMoving()) { + _sprite = Sprite.movingSprite(Sprite.player2_right_1, Sprite.player2_right_2, _animate, 20); + } + break; + } + } +} diff --git a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java index 447ccb5..43cf3c4 100644 --- a/src/uet/oop/bomberman/entities/character/enemy/Minvo.java +++ b/src/uet/oop/bomberman/entities/character/enemy/Minvo.java @@ -25,107 +25,10 @@ protected void chooseSprite() { case 3: if (isMoving()) _sprite = Sprite.movingSprite(Sprite.minvo_left1, Sprite.minvo_left2, Sprite.minvo_left3, _animate, - Game.TICKS_PER_SECOND); + Game.TICKS_PER_SECOND); else _sprite = Sprite.minvo_left1; break; } } - - // // Thêm hành vi cho Minvo - - // @Override - // public void update() { - // super.update(); - // Bomber bomber = _board.getBomber(); - // if (bomber != null) { - // int bomberX = bomber.getXTile(); - // int bomberY = bomber.getYTile(); - // int minvoX = this.getXTile(); - // int minvoY = this.getYTile(); - - // double distance = Math.sqrt(Math.pow(bomberX - minvoX, 2) + Math.pow(bomberY - // - minvoY, 2)); - - // // Kiểm tra xem khoảng cách giữa Minvo và Bomber có dưới một ngưỡng nhất định - // // hay không - // if (distance <= 3) { - // moveTowardBomber(); - // placeBomb(); - // } else { - // _direction = _ai.calculateDirection(); - // // move(); - // } - // } - // } - - // private void moveTowardBomber() { - // Bomber bomber = _board.getBomber(); - // if (bomber != null) { - // int bomberX = bomber.getXTile(); - // int bomberY = bomber.getYTile(); - // int minvoX = this.getXTile(); - // int minvoY = this.getYTile(); - - // // hướng vector từ minvo đến bomber - // int dx = bomberX - minvoX; - // int dy = bomberY - minvoY; - - // // Chọn hướng đi gần nhất - // if (Math.abs(dx) > Math.abs(dy)) { - // if (dx > 0) { - // _direction = 1; // Di chuyển sang phải - // } else { - // _direction = 3; // Di chuyển sang trái - // } - // } else { - // if (dy > 0) { - // _direction = 2; // Di chuyển xuống dưới - // } else { - // _direction = 0; // Di chuyển lên trên - // } - - // } - // } - // // // di chuyển mivo - // // move(); - - // } - - // private void placeBomb() { - // if (_board.detectNoEnemies()) { - // return; - // } - // int bombRate = _board.getBombRate(); - // if (Math.random() < bombRate) { // Kiểm tra xác suất đặt bom - // int xt = Coordinates.pixelToTile(_x + Game.TILES_SIZE / 2); - // int yt = Coordinates.pixelToTile((_y + Game.TILES_SIZE / 2)); - // _board.addBomb(new Bomb(xt, yt, _board)); - // } - // } - - // private void move() { - // double xa = _x, ya = _y; - - // switch (_direction) { - // case 0: - // ya -= _speed; - // break; - // case 1: - // xa += _speed; - // break; - // case 2: - // ya += _speed; - // break; - // case 3: - // xa -= _speed; - // break; - // } - - // // Kiểm tra va chạm với tường và cập nhật tọa độ đích đến nếu cần - // if (!_board.detectWallCollision(xa, ya, _collisionRadius)) { - // _x = xa; - // _y = ya; - // } - // } } diff --git a/src/uet/oop/bomberman/graphics/Sprite.java b/src/uet/oop/bomberman/graphics/Sprite.java index fb1d38c..91940db 100644 --- a/src/uet/oop/bomberman/graphics/Sprite.java +++ b/src/uet/oop/bomberman/graphics/Sprite.java @@ -4,170 +4,188 @@ * Lưu trữ thông tin các pixel của 1 sprite (hình ảnh game) */ public class Sprite { - + public final int SIZE; private int _x, _y; public int[] _pixels; protected int _realWidth; protected int _realHeight; private SpriteSheet _sheet; - private SpriteSheet1 _sheet1; + private SpriteSheet1 _sheet1; /* - |-------------------------------------------------------------------------- - | Board sprites - |-------------------------------------------------------------------------- + * |-------------------------------------------------------------------------- + * | Board sprites + * |-------------------------------------------------------------------------- */ public static Sprite grass = new Sprite(16, 8, 4, SpriteSheet1.tiles, 16, 16); public static Sprite brick = new Sprite(16, 7, 0, SpriteSheet.tiles, 16, 16); public static Sprite wall = new Sprite(16, 3, 13, SpriteSheet1.tiles, 16, 16); public static Sprite portal = new Sprite(16, 8, 7, SpriteSheet1.tiles, 14, 14); - + /* - |-------------------------------------------------------------------------- - | Bomber Sprites - |-------------------------------------------------------------------------- + * |-------------------------------------------------------------------------- + * | Bomber Sprites + * |-------------------------------------------------------------------------- */ public static Sprite player_up = new Sprite(16, 0, 0, SpriteSheet.tiles, 15, 16); public static Sprite player_down = new Sprite(16, 2, 0, SpriteSheet.tiles, 12, 15); public static Sprite player_left = new Sprite(16, 3, 0, SpriteSheet.tiles, 10, 15); public static Sprite player_right = new Sprite(16, 1, 0, SpriteSheet.tiles, 10, 16); - + public static Sprite player_up_1 = new Sprite(16, 0, 1, SpriteSheet.tiles, 12, 16); public static Sprite player_up_2 = new Sprite(16, 0, 2, SpriteSheet.tiles, 12, 15); - + public static Sprite player_down_1 = new Sprite(16, 2, 1, SpriteSheet.tiles, 12, 15); public static Sprite player_down_2 = new Sprite(16, 2, 2, SpriteSheet.tiles, 12, 16); - + public static Sprite player_left_1 = new Sprite(16, 3, 1, SpriteSheet.tiles, 11, 16); - public static Sprite player_left_2 = new Sprite(16, 3, 2, SpriteSheet.tiles, 12 ,16); - + public static Sprite player_left_2 = new Sprite(16, 3, 2, SpriteSheet.tiles, 12, 16); + public static Sprite player_right_1 = new Sprite(16, 1, 1, SpriteSheet.tiles, 11, 16); public static Sprite player_right_2 = new Sprite(16, 1, 2, SpriteSheet.tiles, 12, 16); - + public static Sprite player_dead1 = new Sprite(16, 4, 2, SpriteSheet.tiles, 14, 16); public static Sprite player_dead2 = new Sprite(16, 5, 2, SpriteSheet.tiles, 13, 15); public static Sprite player_dead3 = new Sprite(16, 6, 2, SpriteSheet.tiles, 16, 16); - + + // Render player 2 + public static Sprite player2_up = new Sprite(16, 0, 0, SpriteSheet.tiles, 15, 16); + public static Sprite player2_down = new Sprite(16, 2, 0, SpriteSheet.tiles, 12, 15); + public static Sprite player2_left = new Sprite(16, 3, 0, SpriteSheet.tiles, 10, 15); + public static Sprite player2_right = new Sprite(16, 1, 0, SpriteSheet.tiles, 10, 16); + + public static Sprite player2_up_1 = new Sprite(16, 0, 1, SpriteSheet.tiles, 12, 16); + public static Sprite player2_up_2 = new Sprite(16, 0, 2, SpriteSheet.tiles, 12, 15); + + public static Sprite player2_down_1 = new Sprite(16, 2, 1, SpriteSheet.tiles, 12, 15); + public static Sprite player2_down_2 = new Sprite(16, 2, 2, SpriteSheet.tiles, 12, 16); + + public static Sprite player2_left_1 = new Sprite(16, 3, 1, SpriteSheet.tiles, 11, 16); + public static Sprite player2_left_2 = new Sprite(16, 3, 2, SpriteSheet.tiles, 12, 16); + + public static Sprite player2_right_1 = new Sprite(16, 1, 1, SpriteSheet.tiles, 11, 16); + public static Sprite player2_right_2 = new Sprite(16, 1, 2, SpriteSheet.tiles, 12, 16); + /* - |-------------------------------------------------------------------------- - | Character - |-------------------------------------------------------------------------- + * |-------------------------------------------------------------------------- + * | Character + * |-------------------------------------------------------------------------- */ - //BALLOM + // BALLOM public static Sprite balloom_left1 = new Sprite(16, 9, 0, SpriteSheet.tiles, 16, 16); public static Sprite balloom_left2 = new Sprite(16, 9, 1, SpriteSheet.tiles, 16, 16); public static Sprite balloom_left3 = new Sprite(16, 9, 2, SpriteSheet.tiles, 16, 16); - + public static Sprite balloom_right1 = new Sprite(16, 10, 0, SpriteSheet.tiles, 16, 16); public static Sprite balloom_right2 = new Sprite(16, 10, 1, SpriteSheet.tiles, 16, 16); public static Sprite balloom_right3 = new Sprite(16, 10, 2, SpriteSheet.tiles, 16, 16); - + public static Sprite balloom_dead = new Sprite(16, 9, 3, SpriteSheet.tiles, 16, 16); - - //ONEAL + + // ONEAL public static Sprite oneal_left1 = new Sprite(16, 11, 0, SpriteSheet.tiles, 16, 16); public static Sprite oneal_left2 = new Sprite(16, 11, 1, SpriteSheet.tiles, 16, 16); public static Sprite oneal_left3 = new Sprite(16, 11, 2, SpriteSheet.tiles, 16, 16); - + public static Sprite oneal_right1 = new Sprite(16, 12, 0, SpriteSheet.tiles, 16, 16); public static Sprite oneal_right2 = new Sprite(16, 12, 1, SpriteSheet.tiles, 16, 16); public static Sprite oneal_right3 = new Sprite(16, 12, 2, SpriteSheet.tiles, 16, 16); - + public static Sprite oneal_dead = new Sprite(16, 11, 3, SpriteSheet.tiles, 16, 16); - - //Doll + + // Doll public static Sprite doll_left1 = new Sprite(16, 13, 0, SpriteSheet.tiles, 16, 16); public static Sprite doll_left2 = new Sprite(16, 13, 1, SpriteSheet.tiles, 16, 16); public static Sprite doll_left3 = new Sprite(16, 13, 2, SpriteSheet.tiles, 16, 16); - + public static Sprite doll_right1 = new Sprite(16, 14, 0, SpriteSheet.tiles, 16, 16); public static Sprite doll_right2 = new Sprite(16, 14, 1, SpriteSheet.tiles, 16, 16); public static Sprite doll_right3 = new Sprite(16, 14, 2, SpriteSheet.tiles, 16, 16); - + public static Sprite doll_dead = new Sprite(16, 13, 3, SpriteSheet.tiles, 16, 16); - - //Minvo + + // Minvo public static Sprite minvo_left1 = new Sprite(16, 8, 5, SpriteSheet.tiles, 16, 16); public static Sprite minvo_left2 = new Sprite(16, 8, 6, SpriteSheet.tiles, 16, 16); public static Sprite minvo_left3 = new Sprite(16, 8, 7, SpriteSheet.tiles, 16, 16); - + public static Sprite minvo_right1 = new Sprite(16, 9, 5, SpriteSheet.tiles, 16, 16); public static Sprite minvo_right2 = new Sprite(16, 9, 6, SpriteSheet.tiles, 16, 16); public static Sprite minvo_right3 = new Sprite(16, 9, 7, SpriteSheet.tiles, 16, 16); - + public static Sprite minvo_dead = new Sprite(16, 8, 8, SpriteSheet.tiles, 16, 16); - - //Kondoria + + // Kondoria public static Sprite kondoria_left1 = new Sprite(16, 10, 5, SpriteSheet.tiles, 16, 16); public static Sprite kondoria_left2 = new Sprite(16, 10, 6, SpriteSheet.tiles, 16, 16); public static Sprite kondoria_left3 = new Sprite(16, 10, 7, SpriteSheet.tiles, 16, 16); - + public static Sprite kondoria_right1 = new Sprite(16, 11, 5, SpriteSheet.tiles, 16, 16); public static Sprite kondoria_right2 = new Sprite(16, 11, 6, SpriteSheet.tiles, 16, 16); public static Sprite kondoria_right3 = new Sprite(16, 11, 7, SpriteSheet.tiles, 16, 16); - + public static Sprite kondoria_dead = new Sprite(16, 10, 8, SpriteSheet.tiles, 16, 16); - - //ALL + + // ALL public static Sprite mob_dead1 = new Sprite(16, 15, 0, SpriteSheet.tiles, 16, 16); public static Sprite mob_dead2 = new Sprite(16, 15, 1, SpriteSheet.tiles, 16, 16); public static Sprite mob_dead3 = new Sprite(16, 15, 2, SpriteSheet.tiles, 16, 16); - + /* - |-------------------------------------------------------------------------- - | Bomb Sprites - |-------------------------------------------------------------------------- + * |-------------------------------------------------------------------------- + * | Bomb Sprites + * |-------------------------------------------------------------------------- */ public static Sprite bomb = new Sprite(16, 0, 3, SpriteSheet.tiles, 15, 15); public static Sprite bomb_1 = new Sprite(16, 1, 3, SpriteSheet.tiles, 13, 15); public static Sprite bomb_2 = new Sprite(16, 2, 3, SpriteSheet.tiles, 12, 14); - + /* - |-------------------------------------------------------------------------- - | FlameSegment Sprites - |-------------------------------------------------------------------------- + * |-------------------------------------------------------------------------- + * | FlameSegment Sprites + * |-------------------------------------------------------------------------- */ public static Sprite bomb_exploded = new Sprite(16, 0, 4, SpriteSheet.tiles, 16, 16); public static Sprite bomb_exploded1 = new Sprite(16, 0, 5, SpriteSheet.tiles, 16, 16); public static Sprite bomb_exploded2 = new Sprite(16, 0, 6, SpriteSheet.tiles, 16, 16); - + public static Sprite explosion_vertical = new Sprite(16, 1, 5, SpriteSheet.tiles, 16, 16); public static Sprite explosion_vertical1 = new Sprite(16, 2, 5, SpriteSheet.tiles, 16, 16); public static Sprite explosion_vertical2 = new Sprite(16, 3, 5, SpriteSheet.tiles, 16, 16); - + public static Sprite explosion_horizontal = new Sprite(16, 1, 7, SpriteSheet.tiles, 16, 16); public static Sprite explosion_horizontal1 = new Sprite(16, 1, 8, SpriteSheet.tiles, 16, 16); public static Sprite explosion_horizontal2 = new Sprite(16, 1, 9, SpriteSheet.tiles, 16, 16); - + public static Sprite explosion_horizontal_left_last = new Sprite(16, 0, 7, SpriteSheet.tiles, 16, 16); public static Sprite explosion_horizontal_left_last1 = new Sprite(16, 0, 8, SpriteSheet.tiles, 16, 16); public static Sprite explosion_horizontal_left_last2 = new Sprite(16, 0, 9, SpriteSheet.tiles, 16, 16); - + public static Sprite explosion_horizontal_right_last = new Sprite(16, 2, 7, SpriteSheet.tiles, 16, 16); public static Sprite explosion_horizontal_right_last1 = new Sprite(16, 2, 8, SpriteSheet.tiles, 16, 16); public static Sprite explosion_horizontal_right_last2 = new Sprite(16, 2, 9, SpriteSheet.tiles, 16, 16); - + public static Sprite explosion_vertical_top_last = new Sprite(16, 1, 4, SpriteSheet.tiles, 16, 16); public static Sprite explosion_vertical_top_last1 = new Sprite(16, 2, 4, SpriteSheet.tiles, 16, 16); public static Sprite explosion_vertical_top_last2 = new Sprite(16, 3, 4, SpriteSheet.tiles, 16, 16); - + public static Sprite explosion_vertical_down_last = new Sprite(16, 1, 6, SpriteSheet.tiles, 16, 16); public static Sprite explosion_vertical_down_last1 = new Sprite(16, 2, 6, SpriteSheet.tiles, 16, 16); public static Sprite explosion_vertical_down_last2 = new Sprite(16, 3, 6, SpriteSheet.tiles, 16, 16); - + /* - |-------------------------------------------------------------------------- - | Brick FlameSegment - |-------------------------------------------------------------------------- + * |-------------------------------------------------------------------------- + * | Brick FlameSegment + * |-------------------------------------------------------------------------- */ public static Sprite brick_exploded = new Sprite(16, 7, 1, SpriteSheet.tiles, 16, 16); public static Sprite brick_exploded1 = new Sprite(16, 7, 2, SpriteSheet.tiles, 16, 16); public static Sprite brick_exploded2 = new Sprite(16, 7, 3, SpriteSheet.tiles, 16, 16); - + /* - |-------------------------------------------------------------------------- - | Powerups - |-------------------------------------------------------------------------- + * |-------------------------------------------------------------------------- + * | Powerups + * |-------------------------------------------------------------------------- */ public static Sprite powerup_bombs = new Sprite(16, 0, 10, SpriteSheet.tiles, 16, 16); public static Sprite powerup_flames = new Sprite(16, 1, 10, SpriteSheet.tiles, 16, 16); @@ -176,7 +194,7 @@ public class Sprite { public static Sprite powerup_detonator = new Sprite(16, 4, 10, SpriteSheet.tiles, 16, 16); public static Sprite powerup_bombpass = new Sprite(16, 5, 10, SpriteSheet.tiles, 16, 16); public static Sprite powerup_flamepass = new Sprite(16, 6, 10, SpriteSheet.tiles, 16, 16); - + public Sprite(int size, int x, int y, SpriteSheet sheet, int rw, int rh) { SIZE = size; _pixels = new int[SIZE * SIZE]; @@ -187,6 +205,7 @@ public Sprite(int size, int x, int y, SpriteSheet sheet, int rw, int rh) { _realHeight = rh; load(); } + public Sprite(int size, int x, int y, SpriteSheet1 sheet1, int rw, int rh) { SIZE = size; _pixels = new int[SIZE * SIZE]; @@ -197,12 +216,13 @@ public Sprite(int size, int x, int y, SpriteSheet1 sheet1, int rw, int rh) { _realHeight = rh; load1(); } + public Sprite(int size, int color) { SIZE = size; _pixels = new int[SIZE * SIZE]; setColor(color); } - + private void setColor(int color) { for (int i = 0; i < _pixels.length; i++) { _pixels[i] = color; @@ -216,6 +236,7 @@ private void load() { } } } + private void load1() { for (int y = 0; y < SIZE; y++) { for (int x = 0; x < SIZE; x++) { @@ -223,26 +244,27 @@ private void load1() { } } } + public static Sprite movingSprite(Sprite normal, Sprite x1, Sprite x2, int animate, int time) { int calc = animate % time; int diff = time / 3; - - if(calc < diff) { + + if (calc < diff) { return normal; } - - if(calc < diff * 2) { + + if (calc < diff * 2) { return x1; } - + return x2; } - + public static Sprite movingSprite(Sprite x1, Sprite x2, int animate, int time) { int diff = time / 2; - return (animate % time > diff) ? x1 : x2; + return (animate % time > diff) ? x1 : x2; } - + public int getSize() { return SIZE; } diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index 839a705..35eca03 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -2,6 +2,7 @@ import uet.oop.bomberman.utils.EGameControl; +import java.awt.RenderingHints.Key; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Optional; @@ -31,6 +32,9 @@ public interface KeyboardInputCallback { public boolean up, down, left, right, space, x, pause, resume; public Optional keyboardInputCallback; + public boolean player1_up, player1_down, player1_left, player1_right, player1_space; + public boolean player2_up, player2_down, player2_left, player2_right, player2_space; + public void update() { up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W]; down = keys[KeyEvent.VK_DOWN] || keys[KeyEvent.VK_S]; @@ -39,6 +43,21 @@ public void update() { space = keys[KeyEvent.VK_SPACE]; x = keys[KeyEvent.VK_X]; + + // Player 1 + player1_up = keys[KeyEvent.VK_W]; + player1_down = keys[KeyEvent.VK_S]; + player1_left = keys[KeyEvent.VK_A]; + player1_right = keys[KeyEvent.VK_D]; + player1_space = keys[KeyEvent.VK_X]; + + // Player 2 + player2_up = keys[KeyEvent.VK_UP]; + player2_down = keys[KeyEvent.VK_DOWN]; + player2_left = keys[KeyEvent.VK_LEFT]; + player2_right = keys[KeyEvent.VK_RIGHT]; + player2_space = keys[KeyEvent.VK_SPACE]; + } private EGameControl keyToGameControl(int keyCode) { diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index b92afe8..7017b0a 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -8,9 +8,12 @@ import uet.oop.bomberman.Game; import uet.oop.bomberman.agent.Agent; import uet.oop.bomberman.agent.KeyboardAgent; +import uet.oop.bomberman.agent.KeyboardAgentPlayer1; +import uet.oop.bomberman.agent.KeyboardAgentPlayer2; import uet.oop.bomberman.agent.MovingAgent; import uet.oop.bomberman.entities.LayeredEntity; import uet.oop.bomberman.entities.character.Bomber; +import uet.oop.bomberman.entities.character.Bomber2; import uet.oop.bomberman.entities.character.enemy.Balloon; import uet.oop.bomberman.entities.character.enemy.Doll; import uet.oop.bomberman.entities.character.enemy.Enemy; @@ -29,6 +32,8 @@ import uet.oop.bomberman.exceptions.LoadLevelException; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.graphics.Sprite; +import uet.oop.bomberman.utils.EGameMode; +import uet.oop.bomberman.utils.Global; public class FileLevelLoader extends LevelLoader { @@ -44,32 +49,38 @@ public FileLevelLoader(Board board, int level) throws LoadLevelException { @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 List list = new ArrayList<>(); try { - FileReader fr = new FileReader("res/levels/Level" + level + ".txt");// doc tep luu map + String filePath; + if (Global.gameMode == EGameMode.ONE_PLAYER) { + filePath = "res/levels/Level" + level + ".txt"; + } else { + filePath = "res/levels/Level" + (level + 3) + ".txt"; + } + + FileReader fr = new FileReader(filePath); // Đọc tệp lưu map BufferedReader br = new BufferedReader(fr); String line = br.readLine(); while (line != null && !line.isEmpty()) { list.add(line); line = br.readLine(); - // doc file txt luu vao list } } catch (Exception e) { e.printStackTrace(); } - String[] arrays = list.get(0).trim().split(" "); - _level = Integer.parseInt(arrays[0]); - _height = Integer.parseInt(arrays[1]); - _width = Integer.parseInt(arrays[2]); - _map = new char[_height][_width]; - for (int i = 0; i < _height; i++) { - for (int j = 0; j < _width; j++) { - _map[i][j] = list.get(i + 1).charAt(j); + + if (!list.isEmpty()) { + String[] arrays = list.get(0).trim().split(" "); + _level = Integer.parseInt(arrays[0]); + _height = Integer.parseInt(arrays[1]); + _width = Integer.parseInt(arrays[2]); + _map = new char[_height][_width]; + for (int i = 0; i < _height; i++) { + for (int j = 0; j < _width; j++) { + _map[i][j] = list.get(i + 1).charAt(j); + } } } - // gan cac phan tu cho mang } @Override @@ -121,24 +132,31 @@ public void createEntities() { Screen.setOffset(0, 0); _board.getEntityManager().getTileManager().addTile(x + y * _width, new Grass(x, y, Sprite.grass)); - agent = new KeyboardAgent(bomber); + // if + if (Global.gameMode == EGameMode.TWO_PLAYER) { + agent = new KeyboardAgentPlayer1(bomber); + } else { + agent = new KeyboardAgent(bomber); + } + _board.addAgent(agent); + break; + // Thêm player 1: + case 'a': + Bomber bomber2 = new Bomber2( + Coordinates.tileToPixel(x), + Coordinates.tileToPixel(y) + Game.TILES_SIZE, + Game.BOMBERSPEED, + Game.BOMBRATE, + Game.BOMBRADIUS, + _board.getEntityManager()); + _board.getEntityManager().getCharacterManager().addCharacter(bomber2); + _board.getEntityManager().getCharacterManager().setPlayer(bomber2); + Screen.setOffset(0, 0); + _board.getEntityManager().getTileManager().addTile(x + y * _width, + new Grass(x, y, Sprite.grass)); + agent = new KeyboardAgentPlayer2(bomber2); _board.addAgent(agent); break; - - // case 'a': - // Bomber bomber2 = new Bomber( - // Coordinates.tileToPixel(x), - // Coordinates.tileToPixel(y) + Game.TILES_SIZE, - // Game.BOMBERSPEED, - // Game.BOMBRATE, - // Game.BOMBRADIUS, - // _board, - // _board); - // _board.addCharacter(bomber2); - // _board.setPlayer2(bomber2); - // Screen.setOffset(0, 0); - // _board.addEntity(x + y * _width, new Grass(x, y, Sprite.grass)); - // break; // Thêm balloon case '1': enemy = new Balloon( diff --git a/src/uet/oop/bomberman/screen/SelectGameModeScreen.java b/src/uet/oop/bomberman/screen/SelectGameModeScreen.java index 42ede6d..b362204 100644 --- a/src/uet/oop/bomberman/screen/SelectGameModeScreen.java +++ b/src/uet/oop/bomberman/screen/SelectGameModeScreen.java @@ -39,6 +39,7 @@ public void onKeyPressed(EGameControl gameControl) { } else { Global.gameMode = EGameMode.ONE_PLAYER; } + Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; break; } @@ -88,10 +89,10 @@ private void drawOptions(Graphics g) { int boxHeight = textHeight * this.gameModes.size(); int marginTop = (h - boxHeight) / 2; - for (int i=0; i < this.gameModes.size(); i++) { + for (int i = 0; i < this.gameModes.size(); i++) { String level = this.gameModes.get(i); int x = (w - fm.stringWidth(level)) / 2; - int y = marginTop + fm.getAscent() + textHeight*i; + int y = marginTop + fm.getAscent() + textHeight * i; g.drawString(level, x, y); } @@ -107,7 +108,7 @@ private void drawSelector(Graphics g) { int marginTop = (h - boxHeight) / 2; int x = (w - fm.stringWidth(level)) / 2 - 30; - int y = marginTop + fm.getAscent() + textHeight*selectorIndex; + int y = marginTop + fm.getAscent() + textHeight * selectorIndex; g.drawString(">", x, y); } diff --git a/src/uet/oop/bomberman/screen/SelectLevelScreen.java b/src/uet/oop/bomberman/screen/SelectLevelScreen.java index 38f038b..84bd521 100644 --- a/src/uet/oop/bomberman/screen/SelectLevelScreen.java +++ b/src/uet/oop/bomberman/screen/SelectLevelScreen.java @@ -7,6 +7,7 @@ import uet.oop.bomberman.utils.EGameControl; import uet.oop.bomberman.utils.EGameLevel; +import uet.oop.bomberman.utils.EGameMode; import uet.oop.bomberman.utils.EScreenName; import uet.oop.bomberman.utils.Global; @@ -70,6 +71,7 @@ public void drawScreen(Graphics g) { drawOptions(g); drawSelector(g); } + private void drawTitle(Graphics g) { String title = "SELECT LEVEL"; Font font = new Font("Arial", Font.BOLD, 20 * Game.SCALE); @@ -96,10 +98,10 @@ private void drawOptions(Graphics g) { int boxHeight = textHeight * this.levels.size(); int marginTop = (h - boxHeight) / 2; - for (int i=0; i < this.levels.size(); i++) { + for (int i = 0; i < this.levels.size(); i++) { String level = this.levels.get(i); int x = (w - fm.stringWidth(level)) / 2; - int y = marginTop + fm.getAscent() + textHeight*i; + int y = marginTop + fm.getAscent() + textHeight * i; g.drawString(level, x, y); } @@ -115,16 +117,18 @@ private void drawSelector(Graphics g) { int marginTop = (h - boxHeight) / 2; int x = (w - fm.stringWidth(level)) / 2 - 30; - int y = marginTop + fm.getAscent() + textHeight*selectorIndex; + int y = marginTop + fm.getAscent() + textHeight * selectorIndex; g.drawString(">", x, y); } @Override - public void update() {} + public void update() { + } @Override public void onDestroy() { - this._input.get().keyboardInputCallback = Optional.ofNullable(null);; + this._input.get().keyboardInputCallback = Optional.ofNullable(null); + ; } } From d5fac22419403790126ae4d9f3a56991ba498645 Mon Sep 17 00:00:00 2001 From: Huy010302 <111289985+Huy010302@users.noreply.github.com> Date: Wed, 29 May 2024 17:16:56 +0700 Subject: [PATCH 63/66] fix move for 2 player --- res/levels/{Level1.txt => Level1P_1.txt} | 4 +- res/levels/{Level2.txt => Level1P_2.txt} | 0 res/levels/{Level3.txt => Level1P_3.txt} | 0 res/levels/{Level4.txt => Level2P_1.txt} | 0 res/levels/{Level5.txt => Level2P_2.txt} | 0 res/levels/{Level6.txt => Level2P_3.txt} | 0 .../bomberman/agent/KeyboardAgentPlayer1.java | 2 +- .../bomberman/agent/KeyboardAgentPlayer2.java | 2 +- .../oop/bomberman/base/ICharacterManager.java | 9 +- .../bomberman/entities/character/Bomber2.java | 12 +- .../entities/character/Character.java | 137 ++++++++++-------- src/uet/oop/bomberman/input/Keyboard.java | 8 +- .../oop/bomberman/level/FileLevelLoader.java | 6 +- .../screen/SelectGameModeScreen.java | 1 - 14 files changed, 100 insertions(+), 81 deletions(-) rename res/levels/{Level1.txt => Level1P_1.txt} (93%) rename res/levels/{Level2.txt => Level1P_2.txt} (100%) rename res/levels/{Level3.txt => Level1P_3.txt} (100%) rename res/levels/{Level4.txt => Level2P_1.txt} (100%) rename res/levels/{Level5.txt => Level2P_2.txt} (100%) rename res/levels/{Level6.txt => Level2P_3.txt} (100%) diff --git a/res/levels/Level1.txt b/res/levels/Level1P_1.txt similarity index 93% rename from res/levels/Level1.txt rename to res/levels/Level1P_1.txt index 2fcfc56..75c2936 100644 --- a/res/levels/Level1.txt +++ b/res/levels/Level1P_1.txt @@ -4,9 +4,9 @@ # # # #*# # #*#*# # # #*#*#*# # # x* b** * * * * # # # # # # #*# # #*#*# # # # #*# -#f x ** * * # +# x ** * * # # # # # # # # # # #*# #*# # # # -#z * * * * # +# * * * * # # # # # #*# # # #*#*# # # # # # #* ** * * # # #*# # # # # # #*# # # # # # # diff --git a/res/levels/Level2.txt b/res/levels/Level1P_2.txt similarity index 100% rename from res/levels/Level2.txt rename to res/levels/Level1P_2.txt diff --git a/res/levels/Level3.txt b/res/levels/Level1P_3.txt similarity index 100% rename from res/levels/Level3.txt rename to res/levels/Level1P_3.txt diff --git a/res/levels/Level4.txt b/res/levels/Level2P_1.txt similarity index 100% rename from res/levels/Level4.txt rename to res/levels/Level2P_1.txt diff --git a/res/levels/Level5.txt b/res/levels/Level2P_2.txt similarity index 100% rename from res/levels/Level5.txt rename to res/levels/Level2P_2.txt diff --git a/res/levels/Level6.txt b/res/levels/Level2P_3.txt similarity index 100% rename from res/levels/Level6.txt rename to res/levels/Level2P_3.txt diff --git a/src/uet/oop/bomberman/agent/KeyboardAgentPlayer1.java b/src/uet/oop/bomberman/agent/KeyboardAgentPlayer1.java index d716a5f..5e95761 100644 --- a/src/uet/oop/bomberman/agent/KeyboardAgentPlayer1.java +++ b/src/uet/oop/bomberman/agent/KeyboardAgentPlayer1.java @@ -22,7 +22,7 @@ public List getNextActions() { List actions = getMoveActions(); if (character instanceof Bomber) { - if (Keyboard.i().player1_space) { + if (Keyboard.i().player1_bomb) { actions.add(ActionConstants.PLACE_BOMB); } } diff --git a/src/uet/oop/bomberman/agent/KeyboardAgentPlayer2.java b/src/uet/oop/bomberman/agent/KeyboardAgentPlayer2.java index 8b0bd84..1724ced 100644 --- a/src/uet/oop/bomberman/agent/KeyboardAgentPlayer2.java +++ b/src/uet/oop/bomberman/agent/KeyboardAgentPlayer2.java @@ -22,7 +22,7 @@ public List getNextActions() { List actions = getMoveActions(); if (character instanceof Bomber) { - if (Keyboard.i().player2_space) { + if (Keyboard.i().player2_bomb) { actions.add(ActionConstants.PLACE_BOMB); } } diff --git a/src/uet/oop/bomberman/base/ICharacterManager.java b/src/uet/oop/bomberman/base/ICharacterManager.java index 2d062f7..d8db116 100644 --- a/src/uet/oop/bomberman/base/ICharacterManager.java +++ b/src/uet/oop/bomberman/base/ICharacterManager.java @@ -6,13 +6,18 @@ import uet.oop.bomberman.graphics.IRender; public interface ICharacterManager extends IRender { - + public List getCharacters(); + public Character getCharacterAtExcluding(int x, int y, Character a); + public void addCharacter(Character e); + public void setPlayer(Character character); + public Character getPlayer(); + public void handleOnDeath(Character character, Character killer); - public void handleAfterDeath(Character character); + public void handleAfterDeath(Character character); } \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/character/Bomber2.java b/src/uet/oop/bomberman/entities/character/Bomber2.java index 9a69409..0197c3a 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber2.java +++ b/src/uet/oop/bomberman/entities/character/Bomber2.java @@ -11,12 +11,12 @@ public Bomber2(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRa super(x, y, baseSpeed, baseBombLimit, baseBombRadius, entityManager); } - @Override - public boolean collide(Entity e) { - if (!super.collide(e)) - return false; - return true; - } + // @Override + // public boolean collide(Entity e) { + // if (!super.collide(e)) + // return false; + // return true; + // } @Override protected void chooseSprite() { diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index 0887b46..af07f4f 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -26,7 +26,7 @@ * Bao gồm Bomber và Enemy */ public abstract class Character extends AnimatedEntitiy { - + protected IEntityManager entityManager; private int direction = -1; @@ -45,28 +45,33 @@ public Character(int x, int y, double baseSpeed, IEntityManager entityManager) { @Override public final void update() { - if (!alive) { - if (timerDeathAnimation > 0) { - timerDeathAnimation -= 1; - } else { - handleAfterDeath(); - } - return; - } + if (!alive) { + if (timerDeathAnimation > 0) { + timerDeathAnimation -= 1; + } else { + handleAfterDeath(); + } + return; + } updateMove(); handleUpdate(); }; protected abstract void handleUpdate(); - + @Override public abstract void render(Screen screen); - private static final List VALID_ACTIONS = new ArrayList(){{ - addAll(ActionConstants.LIST_ACTION_MOVE); - add(ActionConstants.DO_NOTHING); - }}; - protected List getValidActions() { return VALID_ACTIONS; } + private static final List VALID_ACTIONS = new ArrayList() { + { + addAll(ActionConstants.LIST_ACTION_MOVE); + add(ActionConstants.DO_NOTHING); + } + }; + + protected List getValidActions() { + return VALID_ACTIONS; + } public boolean isValidAction(Action action) { return getValidActions().contains(action); @@ -76,14 +81,18 @@ public final void performAction(Action action) throws InvalidActionException, Ca performAction(action, false); } - protected void performAction(Action action, boolean isDryRun) throws InvalidActionException, CannotPerformActionException { - if (!isValidAction(action)) throw new InvalidActionException(); + protected void performAction(Action action, boolean isDryRun) + throws InvalidActionException, CannotPerformActionException { + if (!isValidAction(action)) + throw new InvalidActionException(); if (action instanceof ActionMove) { ActionMove actionMove = (ActionMove) action; double dx = actionMove.getDx() * Game.TILES_SIZE; double dy = actionMove.getDy() * Game.TILES_SIZE; - if (isMoving()) throw new ActionOnCooldownException(); - if (!isDryRun) move(dx, dy); + if (isMoving()) + throw new ActionOnCooldownException(); + if (!isDryRun) + move(dx, dy); } }; @@ -98,26 +107,26 @@ public final boolean canPerformAction(Action action) { public List getPerformableActions() { return getValidActions().stream() - .filter(this::canPerformAction) - .collect(Collectors.toList()); + .filter(this::canPerformAction) + .collect(Collectors.toList()); } - /** Check if can be moved with vector (xa, ya). + /** + * Check if can be moved with vector (xa, ya). + * * @param xa * @param ya */ public void move(double xa, double ya) { double moveDurationBase = Game.TICKS_PER_SECOND / getSpeed(); Waypoint waypointX = new Waypoint( - xa, - 0, - moveDurationBase - ); + xa, + 0, + moveDurationBase); Waypoint waypointY = new Waypoint( - 0, - ya, - moveDurationBase - ); + 0, + ya, + moveDurationBase); if (xa != 0 && ya != 0 && canMove(xa, ya) && canMove(xa, 0)) { waypoints.add(waypointX); waypoints.add(waypointY); @@ -130,14 +139,14 @@ public void move(double xa, double ya) { waypoints.add(waypointY); } else { System.out.println(String.format( - "Cannot move character %s to (%s, %s)", - getClass().getSimpleName(), xa, ya - )); + "Cannot move character %s to (%s, %s)", + getClass().getSimpleName(), xa, ya)); } } private void updateMove() { - if (waypoints.isEmpty()) return; + if (waypoints.isEmpty()) + return; Waypoint waypoint = waypoints.peek(); if (!waypoint.started) { waypoint.started = true; @@ -156,29 +165,33 @@ private void updateMove() { // Remove waypoint waypoints.poll(); } - + // Adjust direction - if(waypoint.moveDx > 0) direction = 1; - if(waypoint.moveDx < 0) direction = 3; - if(waypoint.moveDy > 0) direction = 2; - if(waypoint.moveDy < 0) direction = 0; - - Entity collidingEntity = entityManager.getEntityAtExcluding( - Coordinates.pixelToTile(getCenterX()), - Coordinates.pixelToTile(getCenterY()), - this - ); - if (collidingEntity != null) { - this.collide(collidingEntity); - collidingEntity.collide(this); - } + if (waypoint.moveDx > 0) + direction = 1; + if (waypoint.moveDx < 0) + direction = 3; + if (waypoint.moveDy > 0) + direction = 2; + if (waypoint.moveDy < 0) + direction = 0; + + Entity collidingEntity = entityManager.getEntityAtExcluding( + Coordinates.pixelToTile(getCenterX()), + Coordinates.pixelToTile(getCenterY()), + this); + if (collidingEntity != null) { + this.collide(collidingEntity); + collidingEntity.collide(this); + } } /** * Được gọi khi đối tượng bị tiêu diệt */ public final void handleOnDeath() { - if(!alive) return; + if (!alive) + return; alive = false; // TODO: determine killer entityManager.getCharacterManager().handleOnDeath(this, null); @@ -194,6 +207,7 @@ private void handleAfterDeath() { /** * Kiểm tra xem đối tượng có di chuyển tới vị trí đã tính toán hay không + * * @param x * @param y * @return @@ -202,26 +216,26 @@ public boolean canMove(double dx, double dy) { double x = getCenterX() + dx; double y = getCenterY() + dy; Entity a = entityManager.getEntityAtExcluding( - Coordinates.pixelToTile(x), - Coordinates.pixelToTile(y), - this - ); - if (a==null) return true; + Coordinates.pixelToTile(x), + Coordinates.pixelToTile(y), + this); + if (a == null) + return true; return a.canBePassedThroughBy(this); } protected double getXMessage() { return (_x * Game.SCALE) + (_sprite.SIZE / 2 * Game.SCALE); } - + protected double getYMessage() { - return (_y* Game.SCALE) - (_sprite.SIZE / 2 * Game.SCALE); + return (_y * Game.SCALE) - (_sprite.SIZE / 2 * Game.SCALE); } public boolean isPlayer() { return entityManager.getPlayer() == this; } - + public boolean isAlive() { return alive; } @@ -240,7 +254,7 @@ protected double getSpeedMultiplier() { } public abstract int getPoints(); - + public int getDirection() { return direction; } @@ -255,7 +269,7 @@ public void setTimerDeathAnimation(int timerDeathAnimation) { @Override public boolean collide(Entity e) { - if(e instanceof Flame){ + if (e instanceof Flame) { this.handleOnDeath(); return false; } @@ -270,7 +284,8 @@ public boolean collide(Entity e) { return false; } } - if( e instanceof LayeredEntity) return(e.collide(this)); + if (e instanceof LayeredEntity) + return (e.collide(this)); return true; } diff --git a/src/uet/oop/bomberman/input/Keyboard.java b/src/uet/oop/bomberman/input/Keyboard.java index 35eca03..09d8878 100644 --- a/src/uet/oop/bomberman/input/Keyboard.java +++ b/src/uet/oop/bomberman/input/Keyboard.java @@ -32,8 +32,8 @@ public interface KeyboardInputCallback { public boolean up, down, left, right, space, x, pause, resume; public Optional keyboardInputCallback; - public boolean player1_up, player1_down, player1_left, player1_right, player1_space; - public boolean player2_up, player2_down, player2_left, player2_right, player2_space; + public boolean player1_up, player1_down, player1_left, player1_right, player1_bomb; + public boolean player2_up, player2_down, player2_left, player2_right, player2_bomb; public void update() { up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W]; @@ -49,14 +49,14 @@ public void update() { player1_down = keys[KeyEvent.VK_S]; player1_left = keys[KeyEvent.VK_A]; player1_right = keys[KeyEvent.VK_D]; - player1_space = keys[KeyEvent.VK_X]; + player1_bomb = keys[KeyEvent.VK_X]; // Player 2 player2_up = keys[KeyEvent.VK_UP]; player2_down = keys[KeyEvent.VK_DOWN]; player2_left = keys[KeyEvent.VK_LEFT]; player2_right = keys[KeyEvent.VK_RIGHT]; - player2_space = keys[KeyEvent.VK_SPACE]; + player2_bomb = keys[KeyEvent.VK_SPACE]; } diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 7017b0a..92982c6 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -53,9 +53,9 @@ public void loadLevel(int level) { try { String filePath; if (Global.gameMode == EGameMode.ONE_PLAYER) { - filePath = "res/levels/Level" + level + ".txt"; + filePath = "res/levels/Level1P_" + level + ".txt"; } else { - filePath = "res/levels/Level" + (level + 3) + ".txt"; + filePath = "res/levels/Level2P_" + level + ".txt"; } FileReader fr = new FileReader(filePath); // Đọc tệp lưu map @@ -140,7 +140,7 @@ public void createEntities() { } _board.addAgent(agent); break; - // Thêm player 1: + // Thêm player 2: case 'a': Bomber bomber2 = new Bomber2( Coordinates.tileToPixel(x), diff --git a/src/uet/oop/bomberman/screen/SelectGameModeScreen.java b/src/uet/oop/bomberman/screen/SelectGameModeScreen.java index b362204..951dc64 100644 --- a/src/uet/oop/bomberman/screen/SelectGameModeScreen.java +++ b/src/uet/oop/bomberman/screen/SelectGameModeScreen.java @@ -39,7 +39,6 @@ public void onKeyPressed(EGameControl gameControl) { } else { Global.gameMode = EGameMode.ONE_PLAYER; } - Global.currentScreen = EScreenName.SELECT_LEVEL_SCREEN; break; } From 4023241e6002b20015fcc082469419470e816cac Mon Sep 17 00:00:00 2001 From: Huy010302 <111289985+Huy010302@users.noreply.github.com> Date: Fri, 31 May 2024 00:39:47 +0700 Subject: [PATCH 64/66] fix collide for player 1 --- res/levels/Level2P_1.txt | 24 +++--- res/levels/Level2P_2.txt | 18 ++--- res/levels/Level2P_3.txt | 18 ++--- .../oop/bomberman/base/ICharacterManager.java | 4 + .../oop/bomberman/base/IEntityManager.java | 10 ++- .../oop/bomberman/base/IGameInfoManager.java | 6 ++ .../entities/character/Character.java | 2 +- .../oop/bomberman/entities/tile/Portal.java | 9 +-- .../entities/tile/item/BombItem.java | 3 +- .../bomberman/entities/tile/item/Item.java | 5 +- src/uet/oop/bomberman/gui/InfoPanel.java | 5 +- .../oop/bomberman/level/FileLevelLoader.java | 2 + .../bomberman/manager/CharacterManager.java | 60 +++++++++------ .../oop/bomberman/manager/EntityManager.java | 76 +++++++++++-------- 14 files changed, 144 insertions(+), 98 deletions(-) diff --git a/res/levels/Level2P_1.txt b/res/levels/Level2P_1.txt index c9867be..a551e0c 100644 --- a/res/levels/Level2P_1.txt +++ b/res/levels/Level2P_1.txt @@ -1,14 +1,14 @@ -4 13 31 +1 13 31 ############################### -#p * ** * * s # -# # # # #*# # #*# # # # # #*# # -# * * **1 ** # * ** # -# #*# # # #4# # #*#1# # # # #*# -# b * ** * **# -# # #*# 3 # # # #*#*#*#*# # # # -# * * * *x* * 2 # -# # # # #*# # # # # # #*# #*# # -# **2* *3 # -# # # # # # # # # #*# # # # #*# -#a**5 ** * 4 # +#p s* * 1 * * * * * # +# # # #*# # #*#*# # # #*#*#*# # +# x* b** * * * * # +# # # # # #*# # #*#*# # # # #*# +# x ** * * # +# # # # # # # # # #*# #*# # # # +# * * * * # +# # # # #*# # # #*#*# # # # # # +#* ** * * # +# #*# # # # # # #*# # # # # # # +#a * * * # ############################### \ No newline at end of file diff --git a/res/levels/Level2P_2.txt b/res/levels/Level2P_2.txt index 78e4ea5..b88931e 100644 --- a/res/levels/Level2P_2.txt +++ b/res/levels/Level2P_2.txt @@ -1,14 +1,14 @@ -5 13 31 +2 13 31 ############################### -#p * ** * * f # +#p * *2 * ** * * *# # # # # #*# # #*# # # # # #*# # -# * * **4 ** # * ** # -# #*# # # #3# # #*#1# # # # #*# -# b * ** * **# -# # #*# 1 # # # #*#*#*#*# # # # -# * * * *x* * 5 # +# * * *** ** * ** # +# #*# # # # #1# #b#1# # # # #*# +# * ** * **# +# # #*# # # # # #*#*#*#*# # # # +# * * * *x* * # # # # # #*# # # # # # #*# #*# # -# **2* *2 # +# **** *1 # # # # # # # # # # #*# # # # #*# -#a ** ** * 5 # +#a ** * * 3 # ############################### diff --git a/res/levels/Level2P_3.txt b/res/levels/Level2P_3.txt index 9aa7b90..b29f0ef 100644 --- a/res/levels/Level2P_3.txt +++ b/res/levels/Level2P_3.txt @@ -1,14 +1,14 @@ -6 13 31 +3 13 31 ############################### -#p 2 * ** * * f # +#p * *3 * ** * * *# # # # # #*# # #*# # # # # #*# # -# * * **4 ** # * 3 ** # -# #*# # # #3# # #*#1# # # # #*# -# b * ** * **# -# # #*# 5 # # # #*#*#*#*# # # # -# * * * *x* * 1 # +# * * *** ** # * ** # +# #*# # # # #4# #b#1# # # # #*# +# * ** * **# +# # #*# 3 # # # #*#*#*#*# # # # +# * * * *x* * 4 # # # # # #*# # # # # # #*# #*# # -# **2* *4 # +# **2* *2 # # # # # # # # # # #*# # # # #*# -#a**3 ** * 5 # +#a**4 ** * 5 # ############################### diff --git a/src/uet/oop/bomberman/base/ICharacterManager.java b/src/uet/oop/bomberman/base/ICharacterManager.java index d8db116..7f457bb 100644 --- a/src/uet/oop/bomberman/base/ICharacterManager.java +++ b/src/uet/oop/bomberman/base/ICharacterManager.java @@ -20,4 +20,8 @@ public interface ICharacterManager extends IRender { public void handleOnDeath(Character character, Character killer); public void handleAfterDeath(Character character); + + public void addPlayer(Character e); + + public List getPlayers(); } \ No newline at end of file diff --git a/src/uet/oop/bomberman/base/IEntityManager.java b/src/uet/oop/bomberman/base/IEntityManager.java index af5861f..eaf805d 100644 --- a/src/uet/oop/bomberman/base/IEntityManager.java +++ b/src/uet/oop/bomberman/base/IEntityManager.java @@ -1,5 +1,7 @@ package uet.oop.bomberman.base; +import java.util.List; + import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Character; import uet.oop.bomberman.graphics.IRender; @@ -7,15 +9,21 @@ public interface IEntityManager extends IRender { public Entity getEntityAtExcluding(double x, double y, Character m); + public default Entity getEntityAt(double x, double y) { return getEntityAtExcluding(x, y, null); }; - + public boolean isEnemyCleared(); + public Character getPlayer(); + public List getPlayers(); + public ITileManager getTileManager(); + public ICharacterManager getCharacterManager(); + public IBombManager getBombManager(); } \ No newline at end of file diff --git a/src/uet/oop/bomberman/base/IGameInfoManager.java b/src/uet/oop/bomberman/base/IGameInfoManager.java index a6ff0bc..1f053e1 100644 --- a/src/uet/oop/bomberman/base/IGameInfoManager.java +++ b/src/uet/oop/bomberman/base/IGameInfoManager.java @@ -10,19 +10,25 @@ public interface IGameInfoManager extends IMessageManager, IRender { public int subtractTime(); + public int getTime(); public int getPoints(); + public void addPoints(int points); public boolean isPaused(); + public void pause(); + public void unpause(); + public void endGame(); public List getPlayerActiveItems(); public void setEntityManager(IEntityManager entityManager); + public void render(Screen screen, Graphics g); } \ No newline at end of file diff --git a/src/uet/oop/bomberman/entities/character/Character.java b/src/uet/oop/bomberman/entities/character/Character.java index af07f4f..c3ba74d 100644 --- a/src/uet/oop/bomberman/entities/character/Character.java +++ b/src/uet/oop/bomberman/entities/character/Character.java @@ -233,7 +233,7 @@ protected double getYMessage() { } public boolean isPlayer() { - return entityManager.getPlayer() == this; + return entityManager.getPlayers().contains(this); } public boolean isAlive() { diff --git a/src/uet/oop/bomberman/entities/tile/Portal.java b/src/uet/oop/bomberman/entities/tile/Portal.java index 8dfffd6..a9cf4ec 100644 --- a/src/uet/oop/bomberman/entities/tile/Portal.java +++ b/src/uet/oop/bomberman/entities/tile/Portal.java @@ -19,7 +19,7 @@ public boolean collide(Entity e) {// xu li khi 2 entity va cham // true cho di qua // false khong cho di qua // TODO: xử lý khi Bomber đi vào - if (e instanceof Character && ((Character)e).isPlayer()) { + if (e instanceof Character && ((Character) e).isPlayer()) { if (canBePassedThroughBy(e)) { _board.nextLevel(); @@ -33,15 +33,12 @@ public boolean collide(Entity e) {// xu li khi 2 entity va cham @Override public boolean canBePassedThroughBy(Entity other) { - if (other instanceof Character && ((Character)other).isPlayer()) { + if (other instanceof Character && ((Character) other).isPlayer()) { if (!_board.getEntityManager().isEnemyCleared()) return false; - if (other.getXTile() == getX() && other.getYTile() == getY()) { - return true; - } - + return true; } return true; } diff --git a/src/uet/oop/bomberman/entities/tile/item/BombItem.java b/src/uet/oop/bomberman/entities/tile/item/BombItem.java index 43a84ad..a288df4 100644 --- a/src/uet/oop/bomberman/entities/tile/item/BombItem.java +++ b/src/uet/oop/bomberman/entities/tile/item/BombItem.java @@ -6,7 +6,7 @@ public class BombItem extends Item { public static final int BOMB_LIMIT_BONUS = 1; - public BombItem(int x, int y, Sprite sprite) { + public BombItem(int x, int y, Sprite sprite) { super(x, y, sprite); } @@ -22,5 +22,4 @@ protected void handleItemInactive() { public String getDisplayActiveItem() { return "Bomb:"; } - } diff --git a/src/uet/oop/bomberman/entities/tile/item/Item.java b/src/uet/oop/bomberman/entities/tile/item/Item.java index 365bea5..f48d13c 100644 --- a/src/uet/oop/bomberman/entities/tile/item/Item.java +++ b/src/uet/oop/bomberman/entities/tile/item/Item.java @@ -24,7 +24,8 @@ public Item(int x, int y, Sprite sprite) { @Override public boolean collide(Entity e) { - if (isRemoved()) return false; + if (isRemoved()) + return false; if (e instanceof CanUseItem) { CanUseItem player = (CanUseItem) e; Sound.play("Item"); @@ -38,7 +39,7 @@ public boolean collide(Entity e) { @Override public boolean canBePassedThroughBy(Entity e) { - return (e instanceof Character && ((Character)e).isPlayer()); + return (e instanceof CanUseItem); } @Override diff --git a/src/uet/oop/bomberman/gui/InfoPanel.java b/src/uet/oop/bomberman/gui/InfoPanel.java index e718eaf..543f6bd 100644 --- a/src/uet/oop/bomberman/gui/InfoPanel.java +++ b/src/uet/oop/bomberman/gui/InfoPanel.java @@ -1,4 +1,5 @@ package uet.oop.bomberman.gui; + import uet.oop.bomberman.Game; import uet.oop.bomberman.base.IGameInfoManager; import uet.oop.bomberman.entities.tile.item.Item; @@ -14,7 +15,7 @@ public class InfoPanel extends JPanel { private JLabel timeLabel; private JLabel pointsLabel; private JLabel itemTimeLabel; - + private final Game game; public InfoPanel(Game game) { @@ -32,7 +33,7 @@ public InfoPanel(Game game) { itemTimeLabel.setForeground(Color.white); itemTimeLabel.setHorizontalAlignment(JLabel.LEFT); itemTimeLabel.setBorder(BorderFactory.createEmptyBorder(0, 40, 0, 0)); - + add(itemTimeLabel); add(timeLabel); add(pointsLabel); diff --git a/src/uet/oop/bomberman/level/FileLevelLoader.java b/src/uet/oop/bomberman/level/FileLevelLoader.java index 92982c6..ef21d9c 100644 --- a/src/uet/oop/bomberman/level/FileLevelLoader.java +++ b/src/uet/oop/bomberman/level/FileLevelLoader.java @@ -129,6 +129,7 @@ public void createEntities() { _board.getEntityManager()); _board.getEntityManager().getCharacterManager().addCharacter(bomber); _board.getEntityManager().getCharacterManager().setPlayer(bomber); + _board.getEntityManager().getCharacterManager().addPlayer(bomber); Screen.setOffset(0, 0); _board.getEntityManager().getTileManager().addTile(x + y * _width, new Grass(x, y, Sprite.grass)); @@ -151,6 +152,7 @@ public void createEntities() { _board.getEntityManager()); _board.getEntityManager().getCharacterManager().addCharacter(bomber2); _board.getEntityManager().getCharacterManager().setPlayer(bomber2); + _board.getEntityManager().getCharacterManager().addPlayer(bomber2); Screen.setOffset(0, 0); _board.getEntityManager().getTileManager().addTile(x + y * _width, new Grass(x, y, Sprite.grass)); diff --git a/src/uet/oop/bomberman/manager/CharacterManager.java b/src/uet/oop/bomberman/manager/CharacterManager.java index d1ddb03..2da14b9 100644 --- a/src/uet/oop/bomberman/manager/CharacterManager.java +++ b/src/uet/oop/bomberman/manager/CharacterManager.java @@ -18,14 +18,16 @@ public class CharacterManager implements ICharacterManager { - private List characters = new ArrayList<>(); - private Character player; + private List characters = new ArrayList<>(); + // list + private Character player; + private List players = new ArrayList<>(); - private final IGameInfoManager gameInfoManager; + private final IGameInfoManager gameInfoManager; - public CharacterManager(IGameInfoManager gameInfoManager) { - this.gameInfoManager = gameInfoManager; - } + public CharacterManager(IGameInfoManager gameInfoManager) { + this.gameInfoManager = gameInfoManager; + } @Override public Character getCharacterAtExcluding(int x, int y, Character a) { @@ -62,6 +64,16 @@ public Character getPlayer() { return this.player; } + @Override + public void addPlayer(Character e) { + players.add(e); + } + + @Override + public List getPlayers() { + return players; + } + @Override public void handleOnDeath(Character character, Character killer) { if (character.isPlayer()) { @@ -86,28 +98,28 @@ public void handleAfterDeath(Character character) { } } - @Override - public void update() { - for (Character character: characters) { + @Override + public void update() { + for (Character character : characters) { character.update(); if (character instanceof CanUseItem) { CanUseItem characterCanUseItem = ((CanUseItem) character); characterCanUseItem.getActiveItems().forEach(Item::update); } } - characters = characters.stream() - .filter(character -> !character.isRemoved()) - .collect(Collectors.toList()); - } - - @Override - public void render(Screen screen) { - characters.forEach(character -> character.render(screen)); - } - - @Override - public List getCharacters() { - return characters; - } - + characters = characters.stream() + .filter(character -> !character.isRemoved()) + .collect(Collectors.toList()); + } + + @Override + public void render(Screen screen) { + characters.forEach(character -> character.render(screen)); + } + + @Override + public List getCharacters() { + return characters; + } + } diff --git a/src/uet/oop/bomberman/manager/EntityManager.java b/src/uet/oop/bomberman/manager/EntityManager.java index 31c041c..6809482 100644 --- a/src/uet/oop/bomberman/manager/EntityManager.java +++ b/src/uet/oop/bomberman/manager/EntityManager.java @@ -1,5 +1,7 @@ package uet.oop.bomberman.manager; +import java.util.List; + import uet.oop.bomberman.base.IBombManager; import uet.oop.bomberman.base.ICharacterManager; import uet.oop.bomberman.base.IEntityManager; @@ -7,6 +9,7 @@ import uet.oop.bomberman.base.ITileManager; import uet.oop.bomberman.entities.Entity; import uet.oop.bomberman.entities.character.Character; +import uet.oop.bomberman.entities.character.enemy.Enemy; import uet.oop.bomberman.graphics.Screen; import uet.oop.bomberman.level.LevelLoader; @@ -25,40 +28,52 @@ public EntityManager(LevelLoader levelLoader, IGameInfoManager gameInfoManager) this.bombManager = new BombManager(); } + @Override + public Entity getEntityAtExcluding(double x, double y, Character m) { - @Override - public Entity getEntityAtExcluding(double x, double y, Character m) { - - Entity res = null; - - if (x < 0) return null; - if (y < 0) return null; - if (x >= levelLoader.getWidth()) return null; - if (y >= levelLoader.getHeight()) return null; + Entity res = null; - res = bombManager.getFlameSegmentAt((int) x, (int) y); - if (res != null) - return res; + if (x < 0) + return null; + if (y < 0) + return null; + if (x >= levelLoader.getWidth()) + return null; + if (y >= levelLoader.getHeight()) + return null; - res = bombManager.getBombAt(x, y); - if (res != null) - return res; + res = bombManager.getFlameSegmentAt((int) x, (int) y); + if (res != null) + return res; - res = characterManager.getCharacterAtExcluding((int) x, (int) y, m); - if (res != null) - return res; + res = bombManager.getBombAt(x, y); + if (res != null) + return res; - res = tileManager.getTileAt((int) x, (int) y); + res = characterManager.getCharacterAtExcluding((int) x, (int) y, m); + if (res != null) + return res; - return res; - } + res = tileManager.getTileAt((int) x, (int) y); - @Override - public boolean isEnemyCleared() { - return !characterManager.getCharacters().stream() - .anyMatch(character -> character != characterManager.getPlayer()); - } + return res; + } + @Override + public boolean isEnemyCleared() { + // viết lại thành dòng for: kiểm tra trong list character xem có ai nằm trong + // list players hay không + // Nếu có thì chưa clear -> false + // Nếu không còn thì clear -> true + // return !characterManager.getCharacters().stream() + // .anyMatch(character -> characterManager.getPlayers().contains(character)); + for (Character character : characterManager.getCharacters()) { + if (!characterManager.getPlayers().contains(character)) { + return false; + } + } + return true; + } @Override public void update() { @@ -67,7 +82,6 @@ public void update() { bombManager.update(); } - @Override public void render(Screen screen) { tileManager.render(screen); @@ -80,22 +94,24 @@ public Character getPlayer() { return characterManager.getPlayer(); } + @Override + public List getPlayers() { + return characterManager.getPlayers(); + } @Override public ITileManager getTileManager() { return tileManager; } - @Override public ICharacterManager getCharacterManager() { return characterManager; } - @Override public IBombManager getBombManager() { return bombManager; } - + } From 5cd832d40c57c47b38346547c16532de67cdda64 Mon Sep 17 00:00:00 2001 From: Huy010302 <111289985+Huy010302@users.noreply.github.com> Date: Fri, 31 May 2024 00:51:45 +0700 Subject: [PATCH 65/66] fix collide for player 1 --- src/uet/oop/bomberman/entities/character/Bomber2.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/uet/oop/bomberman/entities/character/Bomber2.java b/src/uet/oop/bomberman/entities/character/Bomber2.java index 0197c3a..52a40d1 100644 --- a/src/uet/oop/bomberman/entities/character/Bomber2.java +++ b/src/uet/oop/bomberman/entities/character/Bomber2.java @@ -11,13 +11,6 @@ public Bomber2(int x, int y, double baseSpeed, int baseBombLimit, int baseBombRa super(x, y, baseSpeed, baseBombLimit, baseBombRadius, entityManager); } - // @Override - // public boolean collide(Entity e) { - // if (!super.collide(e)) - // return false; - // return true; - // } - @Override protected void chooseSprite() { switch (getDirection()) { From 1752556516cc326b3122b7a674a00dbd92a6e7a5 Mon Sep 17 00:00:00 2001 From: Huy010302 <111289985+Huy010302@users.noreply.github.com> Date: Fri, 31 May 2024 13:07:32 +0700 Subject: [PATCH 66/66] fix render for player 2 --- res/textures/classic.png | Bin 8019 -> 13746 bytes .../bomberman/entities/character/Bomber2.java | 11 +++++++ src/uet/oop/bomberman/graphics/Sprite.java | 28 ++++++++++-------- src/uet/oop/bomberman/sound/Sound.java | 5 ++-- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/res/textures/classic.png b/res/textures/classic.png index 33db1e3ceeec5d5290f3cdf0d165402aa9145598..e93685c0d18b83fca003ce6ff919bddb0efc9a89 100644 GIT binary patch literal 13746 zcmeHO^;;D0*PdnRMo_w>m2L%=1*8Nd6{WjZK#-25QAtHYkWOi(a|sueZUiKxyJLaf z{qE44-YStmKnFWtk3gBM?cM#s+k22Zhu$j711cY*>a;WZ0*$L?vml z<|c&9tWacFSXiEHZJTU!A%6^rAgC3IAkG)rb>QA88vNRCwL4nVHJ$gQ#Bj zg>!>}{II_dG@e6U14tsFwjZ37y1u9EeRJ!_e`CX;v_97gdk|X_PpU-FWko8i&%;hm z(5gH{75@H(2De6%>)vD05BRA<-*y@pdUpz|vvg%dhc?FSJk&qCL%L4(a7yHx zLV)oXI+*k7#^~I;A}X9yf$@#*pNmUFwDn_u)a7_eTErR?z~v z@b4pRWb~khXJ6(Yzs=RS+`rc|DrmDR;oi^AlMfTq<@0| z%%<*y<_bd)_GT$DA8UT~mwOe#&fsW5|okxvtqt&fYzY_0#rtaVB zLblPh4t${CO(-hi&x`!G2KNWuMgjIATc=@UXu%5R!+B~I-3*rN!?KsK4r9SSM=??$ zanaQTG5DJaL3-v8eB0{cUaUr>huu@=nz}T@(-?GrFtXJZ-m6^&tJm!!taKJYMj7(b7+2vGD1z))AbMYVdl?|elQimcB&mF zD5%CG&%*k&&@v*ZeNB~pt`kcC9(%=t2t`K*qDqgE%TkLfQ_ycltW-{n$qNLG7gll|9WX)V%mb8FRS%`%2GTx)W?LgW(XX1mMaeCd5d!) zHArla>2EbulMq22Ypl$oUyrlzzlfu*dumeh9H$0)T+*FLM%E05YjTPwwxVNPP1GLG zS8CZD*IovYYRaDmS^QHp z=QdIe6CFYX!4jA4RrTowZv)JfmL%pheJIXLE>hE&EQh1Wv^-Xn+uaWL4C;Swj5k00 zI@vkhFqxpn{+%}Lha3jIn{(I3Uyb&o{&2}_L3F7Y*{+mScGb+bRAtFn=PSV}NxXo{ zF|Scyy8ufmu4P`*CR&Ap9^Pi6fdEHuWV?qo$+K+oqn3vN)U?m^dNa4%btONCQ_plW zarK&=Tn$ewj3r26q}qJ?+Ph(M=8jrB{_;GW ziD@1_srtfjN#^F+BVIwX6x58`=1zY3RQd0yw;`i%?7Ek2wj`JcXc<8~ywh!{N%Rd6 zuyC2i;QgWU7}frpm_f5TjQJvnM&+=@?%O_|6OxKqTK8gRi*I^oF(RAE%L!XA1|aY% zx;EZn1`i(*W^#=-bxl#ck{~UX#B-5&Bs;v2cgBwo7b}-`_1c(xe?<0t2x3z8-+<1a$cmdq(= zv5>1WgT+2Fkv1z>rz_N55lGot$6II<%pfJq{)kC6baS_whnY<*}D1(*)Ce%wqIx5KzTn4*^JjT~#rz{p5kiw&62qwfP>1?_tHY!A;*g zlI=*AccRqv=ZoJLmaGCi>;UgM91#TYUMKm5xC|v0l_bR-^MZrF2LV>5;5K2pF+i1B>aBj2$Nk3d(vT1{ne^ffo=T_^- z8W;3>=##6B1zt`N@F~_e^vIk)wD~W;rC$)mg-o{0_&qrgeTQdaSu5wg;BQJAGb~0?jqBi=vH25FlNAm_gg9f7oj(swY)JYw zXw;xEiiDj;Ei-r-1&mQ?zCM0Mtrr&%J@N1vDjr{a()dlPqO???N;K-GWxVzJ$g8fN z3<%Cn`Yx<>YdisHqX4rpy`rbSyVWUyLj<3HP!EvJ5(q)X@!piGbw#QnvZ!+3>92ti z?+nD#pMLTX;?(ev4-p`HHyad`viLJCM8&Q}E0w8C? zD8MhhhWiOWE~(SzP(e??%hWw#GRc2fBnxm=2>i!+J96lg!rO&`&*^YsW&~F?l&9(0 zbYF+B4~bQ?ss8%{yyvbe-C-)*FchHOjVPgHNOw;`0kT`}Ut9XU7~f6U?NeJzWDQH9q1(@;f#*)?0OYS-zn>^(Mx&_^{D)V;)Gv z_#A!=@yQ=4O*#e5CQGtI*Wc22_rvh-+-1v#8{d$>z#9y%h3_j0?1n1-IecQ<{W5?9 zZ%q`DQ4$arx-lOypNMJD#x6DwP*T0@o80!12l{w8`}t2m+V|te;7W`kT=~~=C}1vu zu#FV(0&l2JRy7LYSy3+kuq3*g%At6_)KYYL`DY~DDj85)7HSjUA6{6i zrs%&-N!Diwy4VGDL!Oirkv~&(o#Dq<)*F6ptjs~c&BsRKZL0g5i2A9!$~+42xP_1? zK>HstJY|n~aSGBHEUWqnzS)F*V2m_F;vx}AFWdEi3CQ_b6v!d!MQWz_cGwi`XTO_a z*9;(5IY=Yd%I+!aW?0do0OgMvg-{YJ`0OA9r9aj^!~22#J}@WAw*N4;Ol?;kK&d+qtg0kTdUlQtMzKf2?H#ybRMg z`^a4FD&M)Wy{WQ94fy>Ey?pBLiUNAqBUB8i4>6x3Ii_R<*Px77^Ch6y&WoK#J$S>n z6_M&J8FipZVKZ?*ODR{zL^ldZ0mU-qRx7wOz-y@K66dq;nMdU^J%OVVEDhG=dnOQI zC!O{q6?}qAM-KuFM(Wh4>uB3~^kf{*@eKK0XjC3iWAtJASt6Uq_Bnt|cb@VKDm?TPl0X!CHk{q5|eD{0cm z4vumlw#95U)+$l%8m|o{ zZuGG7kSKOmQ+Y_s#7kuCYa?}MRQUrrxpy$e=x3GUWeEqDS@KGSZ z|F#hx`F+|`*UeiJU+(CsfWv#U;C#SE3S&#YxjETWV&$8p>7eJ2CA36GO&iZL-iwOA zMfz*iP)t&96&YuuV9Jqzv&El)V(~N2)kUg~(@yI{gszMCB)_Z|ntCCFpKaDVzj|Pg zRZF*P=Ja;XzEamQFl7I|J}cFMSFa_Eo`ai{XdgPkVD{#EsG>@W0uFhm@r5GHNpgHv z|7SIe556llqlEC%^Fp`&>t@k4S8Q%6V@GMcPpm}Urg+qv}yj4Rp z)&NoBejp_*R#xY4-tzYtP z8By9O{2*3;4+pBZ`2WttlF)#>vNLnGZ;Dai#lfS zz$Sj?e?K8(3jcr}5-ppSf$hk!``N(7WjjmocJ;EES_xpv3 z9(7nq5`A?d7ETr23lzNHWN+Zo6*QvYhAnC;|mbCy+r>x5` zfk&Dhs*wYEaqBsT$HWBJj4w+c>yE68e-JrtNIi*Es*fGKy>Ip@oKDW`=p=cB$Na`{ zLp_FVXSQb`Xcc9TJJ%Kk8e48&k~sq#^4D} z9-Q5Ior%(+{ERYePV(3dl2a06NjljgY6ic}N=Aa^CL!A5F0TvqqYRdLS*N(5M>NWe z;ME+51qnu?c@5(GtoXYDvU@e77hSbIbnse@4*XbEhakn-xX^|hSQI$(V@QKFP{=?4 zev#MOJ(5;+(`Ub-ZWID^SjWpe6@8+{=Y0EHLeny8ce%86G#tPyqiqCZa)KZqbE zONpQ>C(6i`B74cOr4K2+1wtEr4Q6<6WevnS2_H`+&R6K_pWtZwgxD$7M*$#nvkdzr%kr%hzRI&;4Dj zGV5Sv?As7l+Rl-I`tNZ*df!8P4iYb%TV^g8qNjZMU6=sz-o-FikD2z%uCwDrFo3`y zPep@oSC3A>jvve8vPf#t1L_Iia$rrT=QERgGA5ynjOI^x0RB@E`HmN23O1pu{SKIHQeh*%}Y<(cQ3K0=yc@8`9aHN$DEWCE=P^Bud3H!kPLOa!3zk-oI#F)6yVgoPJ) znJ7@M^bHrT#;#@{$r!b>PR$i#DeB>gl?-%MH?@Skp-T{AtFCIkQ1;xu{h^uIKir>g zqz$qTiR`^4&QhxX!<6B2h>*e=mgT>NJ6{+MhG#5Y7dmmT`-Y`k;P@3q$&SUDV&->E zyBq%C*5miS&w^{$61aImfSuYpk(OTc;|9MrhbMJ^sAPo_B8C@by}%Op-Z0J2{vb?B z9_yLBd3{sq61^r-L|AdzF&|R?B7s~rgMHWV+zfAurF2Im{++mRNNOq>Q(l}UGlT2ztuuqA7XMtCQ~$v zkc=kfDvobpf(_DcBZ$LI9;n)k*!k~iiMzJVqSVvP-k4WXejHHXuSG;TZ*ZTh z;9)vmH?fGKNAU&~qW0*DsqMCRvsWRI@)rsjDQ6j~V{VWO&4uYzcN;fk|4K#2#Q{dG zKvrJ!UFD5~lYQ}0 zy;J{l=V4+$m#dCBdtSj`x8=4j-QSlBbeB<1ra9be zr;s=T)yB6TwCfg?E5zKPG)p?OC!mWjO#SJiKVaNXE7v=I>f`4kz-&$$aLtwcF`y;k zZ(4_*K_D2Q!^g59l8jQCs)2>dMdgiGG_ql@7826*?m5)lX-f9T#vUB>m~a&vCBz{aJ6s&aPHR zkqS+rcT^vB>1-Xd>7wRKAYV_=oM54g#zgyyA76_V9H4@%U-qc;Y{_ZkJ*} zIn5haTW<1W)mFgfBO2I3y(Kc9!BLz#?G0Z;Wqy2rA;%bFsdXm&L*^_LI>#g%y|~_I z`;A%aFk*-{;tw+wAqmYLx~iB!m$$at>gSk}guhRUA8OUs&nwCzaW_Db-%1UY(-)TJV&3bu^Y%k-QiD$bCfri3pa%59*v zW~9ka(L^Lbd>-E;cKBI1RaMo8-M~y5(MX6b@NHacM*%uP+#fc8k9ky(@bB*jOA(z6 zxPUD9I14Ts76OdlBR!ZYn2XKvXML|1&_bo-NU{xRwu$Vo8wSt{m28e!#+NHPT(cM` z7&cEv8;ztrlF{uCVdy|AKadTo=f))1ZU;+oPaKZKgnX&4H>Yq;8&))h&2uW_Jl~A} zQM7v`lS;UYoW)?SrGe#<5hS>$~51X6?~Vj{}EeEV?NLr$e|q=C!NpzVNX0 zxtYjiW-k>{OlXcu^RXMx&W$0LyO)b`p7XUnqB}D*o|efHUmN{%iUWi}GsVf-hDNpeE`^DS2TUOMb90joj{kUktmh#GiMC+wjGU}0 z)!3DoSgja#gf2-JZXSMl=z*J)oTw-%Wkdz1Go%A>%=KUIECz<@lVVJD&SRqWy@rXC zpLU5g?N9dC`^H^&eJvbJ`m`>~ds8KJ`!>ybd@}g>8RNOLtf6 z$H#_gFQK$KZ`Q;&&ej{)K`VT@8 z=08q2*&C#lPeFRVi#E?+tolDfUY6umPYs}e0Q)DflFLHbkV@7{3PZV|M`{I^X6d2? z3R0ds>*iTXLW6xl8a|)BlX1XP_4$8ihB8Az2)P=fE~>jRCQJ5Pf>$7h)*O^R?Y}o2JUt{}DTMsV9kqL%?Q&Xzph9 z*>m9}hfvYBKs|@htLXQwTsJypj%U9Qzyu;Fi5%quf(oCA~i2 zcOxInuyE}o3^Km`nxWj!1In*g5leA`rq|#W)~tg)ie_*;k)$HmJz?pHFq;#QlWige zCnd}=9i3$|K3e2}0{zu>6dyZu2oc27&B>)u4p$7#usv>@P4 z`?Q+d6OPwp!e;!gF`;X)PElhoY2D@6-VG?fIbI!QdjuaB|4kb{jCQ`q0dTYu@=GtII-_&5J z{EB4w)ywK&A5Z-JGw9kcK#4CNqQt!*l!n zfy5&ePCwTK8#y@4 zXz5b0=NPp@NjLuClbN;cw)s~->L&KeDDcg=>uTEa>21~7Xik}V#&d)7;K@+>c#dg+ zVgA{Jg0jl5{|+5>KVvW1Lx>>PWx7UD(xKNjj+7mj<2gNj7Fao1KXk-cL`wdRn|*Oh z)f_&(M!|0)sI!hIdO0JhJ0`ncZV+MGgT6%WrA# z7bjl`2F)`&f|etU@Hh&w>C(}ELQh}_&0bstF1rL(a2&zhjZi?LkC_)xHx(`L^ICK+ z_OI|;SivbCd=otTd`I8dqC!36amu1y|EUgdSI$6*LMA#KlRlSQ0@Fhl1!BJ3<1zPI zg8ToINiv5MF_?&sa$6ZyA*3I62$1T8y9cf&Q2`mLhxoaxREd}$=2{6#brxz=6d)+q zsb30Pr9{Qe+^m81Bnq%uy?UfPUohy(+=-*>McVI;4}_5mqHYV4JYaleVQiB;fW0K` zr-oq59~X@z-j-8U=JU%Ip28B`$b|ofbC4KBk&sw(?CR-!cLr?au%(V9o}j;`fb)&Y zr7r-`QU0d|07`W`?xhqwnyGucl!}xi)IYv`-!+ofA1yX z8yUB>F3CY3K$*4T{8;q&s3bdZMiE4&41pRl88x z9LPID6NaJo1-<{;ypq^U19Ju$$Sb1VzcH)m7WA7@XVTGeHW#<-J<8na9p`!jfv+ev zfQU&H!sWKuf3a%0%e@dJl#g9s-f3YN8QCq&rvgzCz6T}bR1K({fR5g_Ye9e+R^Z9E zAmDVcF}Iw$5tLW`dV&Ql&%1Q~n4sM|%lAPkp;XLy0Ugz$7FC!D;DRT68Z(T+VRNJY z1mFZ8#7#0>T@M&#CBN@7mTm%0VBx%qy4NlN>^VTJESuSfr_7B(0Ar7m4mkIZf7oDC zl|5{sPt2LKO8`!8JvZ%AIB0WxBz9KE`i*4NO`Hy5-=`WxV+xmwkGF5Yd~y3~|5|3xZ8h|s}O(ZY1`1xttLt-$=U z7&;H#T9-@!hkFvou<{^<*u%Y-aKP%CS$th3DKO9AfHnL$0L!G5$xA|}y~%RY14jf5 z?>h5;4&_|++;(4}KDoWhsuK?NnFtg;r@3Z5szq^Zw6Z&3ClCzpdFR$%`M?=TX$qQh zzMu?yPfM7{h@01Jyuepy6v@Z8oap>7&l)ej-E{j{GMoCHp^6IH=P{IO$Cwg-N(IcT zrv*}jH{*^0(ojL0Q&8cpxc2mI`T|fDtYRl0>eQL?hbMwnX!RH^&%^(j5y5k1}iF_FS<$sv1w5zjykrp zVL#{e#~Fwa1Ij`Z#T~)H=Y|l)DLkhN#rQR__>Ft^miklPJ$AP`cJ&^;>#(RB$85;n3L z56>gZ7BxFdjAUsuo~k~!=d{wL<;ZUGwAy*s52RoFT0aMOOm)t;nrdYeW(xV zv?CfFzKZB=1&W2B+it2MBA;nSy^|_-Ie&1bVQl_LZPg` zPQMwZzFhoF16T~q01@}oj>v}bh=?$f=%HI_a#P|u^esdSaOxsl-l0hUg7U{!{WAJU zl5^+xNAWNBQfy7#8{b;qp$w`hOL~y4SZKM;p=tUmvr81miP+$@DVM&xb_xxaHwzB( z`1~gHHbz}g*qNo-<2R-xv|G<-ie;8-R#Cxs{I8G=B@DXrXi(sbv=NxiB#H%>uwcy8 zT_Z$=>n5+}FHz}pbT0+|p=_^L*G>LTBMnpkh0@~G9l1;fWw$ctn%QML)pj|s5!g=S zUgFp~D&`iQ_#OKcoV$#-f+JW~K36(^>tul~%^(SAOPk{qwyLdH4senwdLn!2p4NTe zxqHEGovf-ugdT3kez1Y~nT>m@n4QcG7`d!7B9OZ_o}>LEdVru2V1XXclS#%T3Xi5u;Xn_CFgJ<_~Q+q|5< zF&HWue+pm`qugXq=wU#zN-4r^KlGI|H%Qz@lN>P4Za8;+?JLDm=GSfb#Nk^cvd;#o z(8r@<6svX1!`;37!rFBnmk1wfWt`Z@XGAhPE{ulS5$kCiLMi`1&=nA}%@!LjECiU|y=@4pY{8l^j7UblWxSdzK-FLbfW6>DG~Q`w6Qetb_y)SG3h z8Tiz1iEvl zp(W;!vfnvt!hX{xT?27krD@Bb&ne(-_)b(oLI?i{_{XkCi*^*J7#@eakU%9aHRSN* zRYq$L8Z#*Pd%`Q}dmM)<=>vDq)1~~Zu+KaFk&ViOM4|$&yMp+0p!2S@Ds$(u+Tkc^ zdu$Ln1no=uA8TrX3)H)3?{bR7_q}j2=-9Slj|%;Q#WhUp2PgRf`^vi}idgo2?7wm< z71TTb(5~Z!dk8*u(A7>4kP-4``=_iItorZwgeuiNf(Dw2&g6tAj1JU$A+*1%Ar-|2 zdf3AduOpcWUEyHc7rE({Tj&yxj8|?>5z@sYl-L|XhC%K;kD|Veon?iCvz+w9sU`FV zJawk%EJ!+KCljgLr?Fl426ij^I_ACT^7 zZ3_X2n8etj8NPVj+L^C;Q8cwavZwP~{HHO9nA8NX%gl()&%br{|26q%_JmLJ1+%&1 zw~P%}RK!oxifn>wRPF+K+7HK0eavu^`VeOD8<-NfWF{RM^}>ayuPnZ68tG*^B-Tt! zyB*lmksk?vIC~xHU{7I15by(nF_)6jF94N>`s5|=Z2qx~(3`ww zQczlk(X|p%H1Qqb%|D6S%3$`q^|=IBY|x<5t{4dkQ= zM~)FLlR*Nt;@G}td4#>Q4z4HZh>NXNDI8bk*Per)g|yej7+5ccR47XAy-TMTClOir zdrB@TyDk~$L-qz+T$tP5V97FBgdSP?ssJY7z6(g})f=_alfvkMSSIZ*Mne-XSKAXB zVh9u5!8b1lHYm7nHj6X}D;u@ZOALPx;-MhOIIgJAVADL(w>#$eGBphtzF;id6FVTUwoCVaNLc9V@%Yo_lzYh!kR%=2Q&=WS zb4vIJSZ`xQB9xW_#PKQ~rWj;0B014oXKN#Dx@5wb(D(L2g_EP+-c_aLP;U3cab;xX zfuLD~ifZYDraq>C)1LuyMe06mJMguz->+ilsIFwiU8vK5IcVGTOn zoMFT<`g1C{@*qcoe8BI0=}T(et6BEk z=C@70FDxM5j1wPQcJUSxQ@6}1US};n;j7H3$H3~U&We44uP^g_S+%|$w<4lIW7rNF z&qh@TcXh%G2fx=(A~)i4d;z=k+Y<4|K$>ld3T=2CSvb;r>J8Ro;0!H&K~LFr<{)Cp zhu(W~2+xoF?yVs6RV5%V%07ABYxt4-K!9``70dLG7bWz4wR>Nsa@^#6Vm$~FzMt@I zE#Yt0n(s@zBoV#*iPwNFtiYn}Lg7rb$Z;?YM-1q~F)*&P)1$OSq1|8T9W}pC8od_r zRkD`Blxh--nYoPkcO5vKn^^fR!v_`3BtQ=-E~X4m$YBO`C6kQp3P&cxmh6dPpb(r` z24wXb(H1**-k=H$o-Zz8E_|NLE6B{;)S&X8b}G)>zOg$(|4|Wb_p0>Cu>?aa2Z{a@ zJ^k{kc9v~wv1na1x2O<{Av+DX=JhSwge_kr?n={6ONmLden_0Y5A)5lcDo-5KP%<@ z^Hzni88;4PKyD+9K^q+p263vF=fLd^+o_?Nn)b*LC}>;tIdCQJMXV!r?^X||YMrxn zq4-a!%L&J2nsD<`XMy)q`CUf+9&MqOozh(d`k@Gngv-l0e>~7+6|zSCA##*-0Em%oQW9nBD;5(S5iz5KkUNmfp!fq`0^9XlH74-^Y^5~i=tuWHT)6W z*P$_Qwu~$m=We|qGDm+UQ8QLSDpIAl>S~aqvu(Br=E#AwVJUdY4J>50)`~Ni6mWhq z^RLNSAyc%pGXC8?J>^7!q>cuM)GAXS%iNKb@|HAvl0e5a7u(`*9_PMskxTR+iq z8yN@cw3V1fh+PT$oXOY0!|gPj`6xV?9$;ih>Y@ZA1b_6aByPK34=;6LE|w6OJ==pg zUxt8POb5rZw$?tr1}2YVuQb@(2&pd)ti zOS0t~jCXl58Q6||vDl7SkkvqI26;D`b2{pkKo4#VR6ULU)V*aO-=V9VL>l?7=;bZH zu2O_t?U$rTQp&!s@a^ViHbZk(QN_2&WH+!B{^PAlhmcI_yj7SjJ>u>V|m0U2KZ>f%qrG_@1c{QQQ?Ft{Y|ecNmfVr;9{$fY^xH(6V6czb!sjf<2E3A)oK1 zpl>8Bp|Xr7ovt_Svl5LV`a3F$Ti)$pl#7T`h@Tzkuf2jK=;opMm_?gAmp44w>NfectMd+Hre~Y?(=#O^s=Wqg~(~+*UOyeIN zS-L3R3P;O1$M8=s(~oy*$raZc7!5<00<_yKG0$>oM;Y#G%8C}LE4smaO1`}@Ak?6v zbi0Em-2Lf5yBdG5`Po literal 8019 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

    ri*?QDuN&CndZ4pf@G~ym-O(`JWE~^5zzRgvgbq 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%0AX<4(tHU-Os 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Ⓢ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π4WL_bij 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