From 0610b9d686167d383b5706c153c0fa47ea55b86f Mon Sep 17 00:00:00 2001 From: Mehrdad Shirvani Date: Mon, 12 May 2025 22:31:47 +0330 Subject: [PATCH] feat: add battleship --- src/main/java/Client/BattleShip.java | 47 ++++++++++++++++++++++++ src/main/java/Client/BattleShipCell.java | 46 +++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 src/main/java/Client/BattleShip.java create mode 100644 src/main/java/Client/BattleShipCell.java diff --git a/src/main/java/Client/BattleShip.java b/src/main/java/Client/BattleShip.java new file mode 100644 index 0000000..918f5ec --- /dev/null +++ b/src/main/java/Client/BattleShip.java @@ -0,0 +1,47 @@ +package Client; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class BattleShip { + static final Map ships = Map.of( + "Carrier", 5, + "Battleship", 4, + "Cruiser", 3, + "Submarine", 3, + "Destroyer", 2 + ); + + private final int length; + private final String type; + private final List cellsInBoard = new ArrayList<>(); + + public BattleShip(String type) { + this.type = type; + if(ships.get(type) == null) + { + System.out.println("SHIP NOT FOUND"); + } + length = ships.get(type); + } + + public void addShipCell(BattleShipCell cell){ + cellsInBoard.add(cell); + } + public boolean isAllHit() { + for (BattleShipCell cell : cellsInBoard) { + if (!cell.isMarked()) + return false; + } + return true; + } + + public int getLength() { + return length; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/Client/BattleShipCell.java b/src/main/java/Client/BattleShipCell.java new file mode 100644 index 0000000..fcbe60b --- /dev/null +++ b/src/main/java/Client/BattleShipCell.java @@ -0,0 +1,46 @@ +package Client; + +import Client.utils.AnsiColor; + +public class BattleShipCell { + private BattleShip battleShip; + private boolean isMarked; + private boolean isEnemyShip; + public BattleShipCell() + { + this.isEnemyShip = false; + this.isMarked = false; + } + + public boolean isMarked() { + return isMarked; + } + public void setMarked(boolean value) { + isMarked = value; + } + public boolean isShip() { + return battleShip != null || isEnemyShip; + } + public BattleShip getBattleShip() { + return battleShip; + } + public void setBattleShip(BattleShip battleShip) { + this.battleShip = battleShip; + } + public void setEnemyShip(boolean value) { + this.isEnemyShip = value; + } + + @Override + public String toString() { + if(isMarked){ + return (isShip())? AnsiColor.RED + "X" + AnsiColor.RESET: AnsiColor.BLUE + "O" + AnsiColor.RESET; + } + if(isShip()) + { + return AnsiColor.WHITE + "S" + AnsiColor.RESET; + } + return AnsiColor.GRAY + "." + AnsiColor.RESET; + } + +}