From 25284c555d4a33ccd1077a41152926ce61c4bc9f Mon Sep 17 00:00:00 2001 From: B1G-SAM <54065426+B1G-SAM@users.noreply.github.com> Date: Wed, 20 Mar 2024 22:39:38 +0800 Subject: [PATCH] Add extra methods to map and battle interface --- src/main/java/InteractableEntity/Enemy.java | 23 ++++++++++++++- .../java/command/fight/FightingCommand.java | 4 +-- .../command/mapmove/InteractingCommand.java | 6 +++- ...culaChroniclesOfTheAlgorithmicKingdom.java | 1 - src/main/java/map/AMap.java | 8 ++--- .../map/BattleInterface/BattleInterface.java | 29 +++++++++++++++++++ src/main/java/textbox/PlayerStatus.java | 4 +++ 7 files changed, 65 insertions(+), 10 deletions(-) diff --git a/src/main/java/InteractableEntity/Enemy.java b/src/main/java/InteractableEntity/Enemy.java index 8226f79bf7..7023a8d3d7 100644 --- a/src/main/java/InteractableEntity/Enemy.java +++ b/src/main/java/InteractableEntity/Enemy.java @@ -3,9 +3,30 @@ public class Enemy extends InteractableEntity{ protected int damage; protected int defence; + protected int health; - public Enemy(int dmg, int def){ + public Enemy(int dmg, int def, int hp){ this.damage = dmg; this.defence = def; + this.health = hp; + } + + public int getHealth(){ + return health; + } + public void setDamage(int dmg){ + damage = dmg; + } + + public void harmHealth(int dmg){ + health -= dmg; + } + + public int getDefence(){ + return defence; + } + + public int getDamage() { + return damage; } } diff --git a/src/main/java/command/fight/FightingCommand.java b/src/main/java/command/fight/FightingCommand.java index 1f0b0c3de7..dcba32e646 100644 --- a/src/main/java/command/fight/FightingCommand.java +++ b/src/main/java/command/fight/FightingCommand.java @@ -1,8 +1,6 @@ package command.fight; - import command.Command; -import map.AMap; -import map.FirstMap; + public class FightingCommand extends Command { public FightingCommand() { diff --git a/src/main/java/command/mapmove/InteractingCommand.java b/src/main/java/command/mapmove/InteractingCommand.java index 8039f05e49..707ed1f114 100644 --- a/src/main/java/command/mapmove/InteractingCommand.java +++ b/src/main/java/command/mapmove/InteractingCommand.java @@ -5,6 +5,10 @@ import map.BattleInterface.BattleInterface; public class InteractingCommand extends MapMoveCommand { + + public InteractingCommand(){ + commandDescription = "interact"; + } @Override public void execute() { String entityInteractedWith = currentMap.handleInteract(); @@ -12,7 +16,7 @@ public void execute() { AMap battleMap; switch (entityInteractedWith) { case "@": - InteractableEntity monster = new Enemy(10, 10); + InteractableEntity monster = new Enemy(10, 10, 10); battleMap = new BattleInterface(playerStatus, textBox, monster); battleMap.initMap(30, 10); currentMap = battleMap; diff --git a/src/main/java/main/CalculaChroniclesOfTheAlgorithmicKingdom.java b/src/main/java/main/CalculaChroniclesOfTheAlgorithmicKingdom.java index 116e69262d..06fd70e752 100644 --- a/src/main/java/main/CalculaChroniclesOfTheAlgorithmicKingdom.java +++ b/src/main/java/main/CalculaChroniclesOfTheAlgorithmicKingdom.java @@ -42,7 +42,6 @@ public void startGame() { ui.printPlayerStatus(playerStatus); ui.printMap(map); } - textBox.nextTextBoxBasedOnMapAndCommand(userCommand, map); } } diff --git a/src/main/java/map/AMap.java b/src/main/java/map/AMap.java index 653de11911..56659913c6 100644 --- a/src/main/java/map/AMap.java +++ b/src/main/java/map/AMap.java @@ -40,7 +40,7 @@ public void initPlayerLocation(int x, int y) { public void movePlayerUpOne() { - if (this.playerY - 1 >= 0) { + if (this.playerY - 1 >= 0 && currentMap.get(playerY - 1).get(playerX) == '.') { currentMap.get(playerY).set(playerX, '.'); currentMap.get(playerY - 1).set(playerX, 'P'); this.playerY -= 1; @@ -49,7 +49,7 @@ public void movePlayerUpOne() { public void movePlayerDownOne() { - if (this.playerY + 1 < height) { + if (this.playerY + 1 < height && currentMap.get(playerY + 1).get(playerX) == '.') { currentMap.get(playerY).set(playerX, '.'); currentMap.get(playerY + 1).set(playerX, 'P'); this.playerY += 1; @@ -58,7 +58,7 @@ public void movePlayerDownOne() { public void movePlayerLeftOne() { - if (this.playerX - 1 >= 0) { + if (this.playerX - 1 >= 0 && currentMap.get(playerY).get(playerX - 1) == '.') { currentMap.get(playerY).set(playerX, '.'); currentMap.get(playerY).set(playerX - 1, 'P'); this.playerX -= 1; @@ -67,7 +67,7 @@ public void movePlayerLeftOne() { public void movePlayerRightOne() { - if (this.playerY + 1 < width) { + if (this.playerY + 1 < width && currentMap.get(playerY).get(playerX + 1) == '.') { currentMap.get(playerY).set(playerX, '.'); currentMap.get(playerY).set(playerX + 1, 'P'); this.playerX += 1; diff --git a/src/main/java/map/BattleInterface/BattleInterface.java b/src/main/java/map/BattleInterface/BattleInterface.java index b1d467895a..e9e473b570 100644 --- a/src/main/java/map/BattleInterface/BattleInterface.java +++ b/src/main/java/map/BattleInterface/BattleInterface.java @@ -2,9 +2,12 @@ import InteractableEntity.Enemy; import InteractableEntity.InteractableEntity; +import command.Command; import map.AMap; +import parser.Parser; import textbox.PlayerStatus; import textbox.TextBox; +import ui.Ui; import java.lang.management.PlatformLoggingMXBean; import java.util.ArrayList; @@ -14,10 +17,12 @@ public class BattleInterface extends AMap { protected TextBox currentTextBox; protected InteractableEntity currentEntity; + public BattleInterface(PlayerStatus player, TextBox text, InteractableEntity entity) { this.currentPlayer = player; this.currentTextBox = text; this.currentEntity = entity; + } public void initMap(int givenWidth, int givenHeight) { @@ -45,4 +50,28 @@ public void initMap(int givenWidth, int givenHeight) { } } + + public void playerHitEnemy(){ + if (currentEntity instanceof Enemy){ + int dmgDone = 10 - (10 * ((Enemy) currentEntity).getDefence()); + ((Enemy) currentEntity).harmHealth(dmgDone); + } + } + + public void enemyHitPlayer(){ + if (currentEntity instanceof Enemy){ + int dmgDone = ((Enemy) currentEntity).getDamage(); + currentPlayer.harmHealth(dmgDone); + } + } + + + public InteractableEntity getCurrentEntity(){ + return currentEntity; + } + + public PlayerStatus getCurrentPlayer(){ + return currentPlayer; + } + } diff --git a/src/main/java/textbox/PlayerStatus.java b/src/main/java/textbox/PlayerStatus.java index 6aab98c777..afce2afe52 100644 --- a/src/main/java/textbox/PlayerStatus.java +++ b/src/main/java/textbox/PlayerStatus.java @@ -35,4 +35,8 @@ public void setPlayerHealth(int playerHealth) { public void setPlayerMoney(int playerMoney) { this.playerMoney = playerMoney; } + + public void harmHealth(int dmg){ + playerHealth -= dmg; + } }