diff --git a/src/main/java/BattleInterface/BattleInterface.java b/src/main/java/BattleInterface/BattleInterface.java new file mode 100644 index 0000000000..7dae13beb5 --- /dev/null +++ b/src/main/java/BattleInterface/BattleInterface.java @@ -0,0 +1,20 @@ +package BattleInterface; + +import InteractableEntity.Enemy; +import InteractableEntity.InteractableEntity; +import textbox.PlayerStatus; +import textbox.TextBox; + +import java.lang.management.PlatformLoggingMXBean; + +public class BattleInterface { + protected PlayerStatus currentPlayer; + protected TextBox currentTextBox; + protected InteractableEntity currentEntity; + + public BattleInterface(PlayerStatus player, TextBox text, InteractableEntity entity){ + this.currentPlayer = player; + this.currentTextBox = text; + this.currentEntity = entity; + } +} diff --git a/src/main/java/InteractableEntity/Enemy.java b/src/main/java/InteractableEntity/Enemy.java new file mode 100644 index 0000000000..636e1b6361 --- /dev/null +++ b/src/main/java/InteractableEntity/Enemy.java @@ -0,0 +1,13 @@ +package InteractableEntity; + +public class Enemy extends InteractableEntity{ + protected int damage; + protected int defence; + protected String currentImage; + + public Enemy(int dmg, int def, String img){ + this.damage = dmg; + this.defence = def; + this.currentImage = img; + } +} diff --git a/src/main/java/InteractableEntity/InteractableEntity.java b/src/main/java/InteractableEntity/InteractableEntity.java new file mode 100644 index 0000000000..ec045e0740 --- /dev/null +++ b/src/main/java/InteractableEntity/InteractableEntity.java @@ -0,0 +1,6 @@ +package InteractableEntity; + +public abstract class InteractableEntity { + protected String name; + +} diff --git a/src/main/java/command/Command.java b/src/main/java/command/Command.java index 129ee8f513..e8bfcc5d62 100644 --- a/src/main/java/command/Command.java +++ b/src/main/java/command/Command.java @@ -1,11 +1,11 @@ package command; -import java.util.ArrayList; +import map.AMap; public abstract class Command { protected String commandDescription; - protected ArrayList> currentMap; + protected AMap currentMap; public abstract void execute(); public Command(){ commandDescription = "Impossible"; @@ -14,7 +14,11 @@ public Command(){ public String getCommandDescription(){ return commandDescription; } - public ArrayList> getCurrentMap(){ + public AMap getCurrentMap(){ return currentMap; } + + public void setCurrentMap(AMap givenMap){ + currentMap = givenMap; + } } diff --git a/src/main/java/command/mapmove/InteractingCommand.java b/src/main/java/command/mapmove/InteractingCommand.java index 76aa8e6e7c..f1bcd5e741 100644 --- a/src/main/java/command/mapmove/InteractingCommand.java +++ b/src/main/java/command/mapmove/InteractingCommand.java @@ -4,6 +4,6 @@ public class InteractingCommand extends MapMoveCommand { @Override public void execute() { - + String entityInteractedWith = currentMap.handleInteract(); } } diff --git a/src/main/java/command/mapmove/MovingDownwardCommand.java b/src/main/java/command/mapmove/MovingDownwardCommand.java index 1f3573d2e8..f25d413713 100644 --- a/src/main/java/command/mapmove/MovingDownwardCommand.java +++ b/src/main/java/command/mapmove/MovingDownwardCommand.java @@ -5,6 +5,7 @@ public class MovingDownwardCommand extends MapMoveCommand { @Override public void execute() { + currentMap.movePlayerDownOne(); } } diff --git a/src/main/java/command/mapmove/MovingForwardCommand.java b/src/main/java/command/mapmove/MovingForwardCommand.java index 6f0dd3abac..815cf4b576 100644 --- a/src/main/java/command/mapmove/MovingForwardCommand.java +++ b/src/main/java/command/mapmove/MovingForwardCommand.java @@ -3,6 +3,6 @@ public class MovingForwardCommand extends MapMoveCommand { @Override public void execute() { - + currentMap.movePlayerUpOne(); } } diff --git a/src/main/java/command/mapmove/MovingLeftCommand.java b/src/main/java/command/mapmove/MovingLeftCommand.java index 6f6cfca0af..70acc2a35f 100644 --- a/src/main/java/command/mapmove/MovingLeftCommand.java +++ b/src/main/java/command/mapmove/MovingLeftCommand.java @@ -3,6 +3,7 @@ public class MovingLeftCommand extends MapMoveCommand { @Override public void execute() { + currentMap.movePlayerLeftOne(); } } diff --git a/src/main/java/command/mapmove/MovingRightCommand.java b/src/main/java/command/mapmove/MovingRightCommand.java index 8d581a1245..c76ed71396 100644 --- a/src/main/java/command/mapmove/MovingRightCommand.java +++ b/src/main/java/command/mapmove/MovingRightCommand.java @@ -4,5 +4,6 @@ public class MovingRightCommand extends MapMoveCommand { @Override public void execute() { + currentMap.movePlayerRightOne(); } } diff --git a/src/main/java/main/CalculaChroniclesOfTheAlgorithmicKingdom.java b/src/main/java/main/CalculaChroniclesOfTheAlgorithmicKingdom.java index 3966c25cdb..e4f44cc502 100644 --- a/src/main/java/main/CalculaChroniclesOfTheAlgorithmicKingdom.java +++ b/src/main/java/main/CalculaChroniclesOfTheAlgorithmicKingdom.java @@ -27,10 +27,10 @@ public void startGame() { while (true) { String userCommandText = ui.readInCommand(); userCommand = parser.parserCommand(userCommandText); + userCommand.setCurrentMap(map); userCommand.execute(); - - map.nextMapBasedOnCommand(userCommand); ui.printPlayerStatus(playerStatus); + ui.printMap(map); textBox.nextTextBoxBasedOnMapAndCommand(userCommand, map); } } diff --git a/src/main/java/map/Map.java b/src/main/java/map/AMap.java similarity index 64% rename from src/main/java/map/Map.java rename to src/main/java/map/AMap.java index ed8077d9e1..2c457e8e2e 100644 --- a/src/main/java/map/Map.java +++ b/src/main/java/map/AMap.java @@ -2,7 +2,7 @@ import command.Command; import java.util.ArrayList; -public abstract class Map { +public abstract class AMap { protected int width; protected int height; protected ArrayList> storedMap; @@ -44,6 +44,7 @@ public void movePlayerUpOne(){ if (this.playerY - 1 >= 0){ storedMap.get(playerY).set(playerX, '.'); storedMap.get(playerY - 1).set(playerX, 'P'); + this.playerY -= 1; } } @@ -52,6 +53,7 @@ public void movePlayerDownOne(){ if (this.playerY + 1 < height){ storedMap.get(playerY).set(playerX, '.'); storedMap.get(playerY + 1).set(playerX, 'P'); + this.playerY += 1; } } @@ -60,6 +62,7 @@ public void movePlayerLeftOne(){ if (this.playerX - 1 >= 0){ storedMap.get(playerY).set(playerX, '.'); storedMap.get(playerY).set(playerX - 1, 'P'); + this.playerX -= 1; } } @@ -68,14 +71,40 @@ public void movePlayerRightOne(){ if (this.playerY + 1 < width){ storedMap.get(playerY).set(playerX, '.'); storedMap.get(playerY).set(playerX + 1, 'P'); + this.playerX += 1; } } - public void nextMapBasedOnCommand(Command userCommand){ - userCommand.execute(); - } public ArrayList> getMap(){ return storedMap; } + + public String handleInteract() { + if (playerY > 0 && storedMap.get(playerY - 1).get(playerX) != '.') { + return String.valueOf(storedMap.get(playerY - 1).get(playerX)); + } + + if (playerX < storedMap.get(0).size() - 1 && storedMap.get(playerY).get(playerX + 1) != '.') { + return String.valueOf(storedMap.get(playerY).get(playerX + 1)); + } + + if (playerY < storedMap.size() - 1 && storedMap.get(playerY + 1).get(playerX) != '.') { + return String.valueOf(storedMap.get(playerY + 1).get(playerX)); + } + + if (playerX > 0 && storedMap.get(playerY).get(playerX - 1) != '.') { + return String.valueOf(storedMap.get(playerY).get(playerX - 1)); + } + return "no interaction"; + } + + + public int getPlayerX(){ + return playerX; + } + + public int getPlayerY(){ + return playerY; + } } diff --git a/src/main/java/map/FirstMap.java b/src/main/java/map/FirstMap.java index 90b594c982..9a3f37c4f8 100644 --- a/src/main/java/map/FirstMap.java +++ b/src/main/java/map/FirstMap.java @@ -1,5 +1,5 @@ package map; -public class FirstMap extends Map{ +public class FirstMap extends AMap{ protected String DIFFICULTY_MODIFIER = "easy"; //can use to determine question difficulty } diff --git a/src/main/java/textbox/TextBox.java b/src/main/java/textbox/TextBox.java index 152bf88435..53ee349d2c 100644 --- a/src/main/java/textbox/TextBox.java +++ b/src/main/java/textbox/TextBox.java @@ -1,14 +1,14 @@ package textbox; import command.Command; -import map.Map; +import map.AMap; public class TextBox { protected String nextMessage; public void initTextBox(){ this.nextMessage = " "; } - public void nextTextBoxBasedOnMapAndCommand(Command userCommand, Map map){ + public void nextTextBoxBasedOnMapAndCommand(Command userCommand, AMap map){ } public String getNextMessage(){ diff --git a/src/main/java/ui/Ui.java b/src/main/java/ui/Ui.java index 86dbe18855..81677a1a9f 100644 --- a/src/main/java/ui/Ui.java +++ b/src/main/java/ui/Ui.java @@ -1,11 +1,14 @@ package ui; -import map.Map; +import BattleInterface.BattleInterface; +import map.AMap; import textbox.PlayerStatus; import textbox.TextBox; import java.util.ArrayList; import java.util.Scanner; public class Ui { + private static final int DEFAULT_WIDTH_OF_BATTLE_INTERFACE = 50; + private static final int DEFAULT_HEIGHT_OF_BATTLE_INTERFACE = 50; public String readInCommand(){ return null; } @@ -32,7 +35,7 @@ public void printTextBox(TextBox box){ printDividingLine(); } - public void printMap(Map map){ + public void printMap(AMap map){ printDividingLine(); for (ArrayList row : map.getStoredMap()) { for (char cell : row) { @@ -42,4 +45,36 @@ public void printMap(Map map){ } printDividingLine(); } + + public void printBattleInterface(BattleInterface currentInteraction){ + ArrayList> constructedInterface = new ArrayList<>(); + + constructedInterface.add(new ArrayList<>()); + for (int j = 0; j < DEFAULT_WIDTH_OF_BATTLE_INTERFACE; j++) { + constructedInterface.get(0).add('-'); + } + + for (int i = 1; i < DEFAULT_HEIGHT_OF_BATTLE_INTERFACE - 1; i++) { + constructedInterface.add(new ArrayList<>()); + constructedInterface.get(i).add('|'); + for (int j = 1; j < DEFAULT_WIDTH_OF_BATTLE_INTERFACE - 1; j++) { + constructedInterface.get(i).add(' '); + } + constructedInterface.get(i).add('|'); + } + + + constructedInterface.add(new ArrayList<>()); + for (int j = 0; j < DEFAULT_WIDTH_OF_BATTLE_INTERFACE; j++) { + constructedInterface.get(DEFAULT_HEIGHT_OF_BATTLE_INTERFACE - 1).add('-'); + } + + + for (ArrayList row : constructedInterface) { + for (Character c : row) { + System.out.print(c); + } + System.out.println(); + } + } }