Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class Battleship {
- private char[][] grid;
- private char[][] printedGrid;
- private char[][] finalGrid;
- private int humanShipsHit = 0;
- private int computerShipsHit = 0;
- private String winner;
- private String storedCoordinates = "";
- private String storedHitCoordinates = "";
- private String hitPosition;
- public Battleship() {
- grid = new char[8][8];
- printedGrid = new char[8][8];
- for (int i = 0; i < printedGrid.length; i++) {
- for (int j = 0; j < printedGrid[i].length; j++) {
- printedGrid[i][j] = '_';
- }
- }
- }
- public String getStoredCoordinates() {
- return this.storedCoordinates;
- }
- private void findXPosition(String givenPosition, Coordinates gridPosition) {
- if (givenPosition.charAt(0) == 'A') {
- gridPosition.setX(0);
- } else if (givenPosition.charAt(0) == 'B') {
- gridPosition.setX(1);
- } else if (givenPosition.charAt(0) == 'C') {
- gridPosition.setX(2);
- } else if (givenPosition.charAt(0) == 'D') {
- gridPosition.setX(3);
- } else if (givenPosition.charAt(0) == 'E') {
- gridPosition.setX(4);
- } else if (givenPosition.charAt(0) == 'F') {
- gridPosition.setX(5);
- } else if (givenPosition.charAt(0) == 'G') {
- gridPosition.setX(6);
- } else if (givenPosition.charAt(0) == 'H') {
- gridPosition.setX(7);
- }
- }
- public void findYPosition(String givenPosition, Coordinates gridPosition) {
- if (givenPosition.charAt(1) == '1') {
- gridPosition.setY(0);
- } else if (givenPosition.charAt(1) == '2') {
- gridPosition.setY(1);
- } else if (givenPosition.charAt(1) == '3') {
- gridPosition.setY(2);
- } else if (givenPosition.charAt(1) == '4') {
- gridPosition.setY(3);
- } else if (givenPosition.charAt(1) == '5') {
- gridPosition.setY(4);
- } else if (givenPosition.charAt(1) == '6') {
- gridPosition.setY(5);
- } else if (givenPosition.charAt(1) == '7') {
- gridPosition.setY(6);
- } else if (givenPosition.charAt(1) == '8') {
- gridPosition.setY(7);
- }
- }
- public void placePlayerItems(Scanner reader, Coordinates ship) {
- //This method will need to loop twice
- //It loops once to place the ships and then a second time to place the grenades
- int i = 1;
- while (i <= 2) {
- //This variable will be used to determine the number of loops (4 if grenades, 6 if ships)
- int loops;
- //This variable will determine the name of the item to be displayed (Either grenade or ship)
- String item;
- //This will check to see if the loop is in its first or second iteration
- //It will make it so the loop is 6 in its first iteration (Placement of ships) and make item equal to "ship"
- if (i == 1) {
- loops = 6;
- item = "ship";
- //If the loop is in its second iteration (placement of grenades) then the loop is set to 4
- //And the value of the String item is set to "grenade"
- } else {
- loops = 4;
- item = "grenade";
- }
- System.out.println("");
- int j = 1;
- while (j <= loops) {
- System.out.print("Enter the coordinates of your " + item + " #" + j + ": ");
- String coordinate = reader.nextLine();
- coordinate = coordinate.toUpperCase();
- if (coordinate.charAt(0) > 72 || (coordinate.charAt(1) > 56 || coordinate.charAt(1) <= 48)) {
- System.out.println("sorry, coordinates outside the grid. try again.");
- continue;
- } else if (storedCoordinates.contains(coordinate)) {
- System.out.println("sorry, coordinates already used. try again");
- continue;
- } else {
- storedCoordinates = storedCoordinates + coordinate;
- findXPosition(coordinate, ship);
- findYPosition(coordinate, ship);
- int x = ship.getX();
- int y = ship.getY();
- if (i == 1) {
- grid[x][y] = 'S';
- } else {
- grid[x][y] = 'G';
- }
- }
- j++;
- }
- i++;
- }
- }
- public void placeComputersItems() {
- for (int i = 0; i < 6; i++) {
- boolean loop = true;
- while (loop) {
- int randomX = (int) (Math.random() * 8);
- int randomY = (int) (Math.random() * 8);
- if (grid[randomX][randomY] == '\u0000') {
- grid[randomX][randomY] = 's';
- loop = false;
- }
- }
- }
- for (int i = 0; i < 4; i++) {
- boolean loop = true;
- while (loop) {
- int randomX = (int) (Math.random() * 8);
- int randomY = (int) (Math.random() * 8);
- if (grid[randomX][randomY] == '\u0000') {
- grid[randomX][randomY] = 'g';
- loop = false;
- }
- }
- }
- }
- public void printArray() {
- for (int i = 0; i < printedGrid.length; i++) {
- System.out.print("\t");
- for (int j = 0; j < printedGrid[i].length; j++) {
- System.out.print(printedGrid[i][j] + " ");
- }
- System.out.println("");
- }
- }
- public void hit(Scanner reader, Coordinates item) {
- String position = reader.nextLine();
- position = position.toUpperCase();
- hitPosition = position;
- if (storedHitCoordinates.contains(position)) {
- System.out.println("position already called");
- return;
- }
- findXPosition(position, item);
- findYPosition(position, item);
- int x = item.getX();
- int y = item.getY();
- if (grid[x][y] == 'S' || grid[x][y] == 's') {
- System.out.println("ship hit.");
- if (storedCoordinates.contains(position)) {
- printedGrid[x][y] = 'S';
- } else {
- printedGrid[x][y] = 's';
- }
- } else if (grid[x][y] == 'G' || grid[x][y] == 'g') {
- System.out.println("boom! grenade");
- if (storedCoordinates.contains(position)) {
- printedGrid[x][y] = 'G';
- } else {
- printedGrid[x][y] = 'g';
- }
- } else {
- System.out.println("nothing.");
- printedGrid[x][y] = '*';
- }
- }
- public void setHit(char hit, Coordinates item) {
- int x = item.getX();
- int y = item.getY();
- printedGrid[x][y] = hit;
- }
- public boolean won(Coordinates item) {
- if (storedHitCoordinates.contains(hitPosition)) {
- return false;
- }
- int x = item.getX();
- int y = item.getY();
- if (printedGrid[x][y] == 'S') {
- humanShipsHit++;
- } else if (printedGrid[x][y] == 's') {
- computerShipsHit++;
- }
- storedHitCoordinates += hitPosition;
- System.out.println("comp " + computerShipsHit);
- System.out.println("human " + humanShipsHit);
- if (humanShipsHit == 6) {
- winner = "computer";
- return true;
- } else if (computerShipsHit == 6) {
- winner = "human";
- return true;
- } else {
- return false;
- }
- }
- public String winner() {
- return this.winner;
- }
- public void printfirstGrid() {
- for (int i = 0; i < grid.length; i++) {
- for (int j = 0; j < grid[i].length; j++) {
- System.out.print(grid[i][j] + " ");
- }
- System.out.println("");
- }
- }
- public void printCoordinate(Coordinates item) {
- System.out.println("");
- System.out.println("************************");
- System.out.println(printedGrid[item.getX()][item.getY()]);
- }
- public void printChar(Scanner reader, Coordinates item) {
- String newPosition = reader.nextLine();
- newPosition = newPosition.toUpperCase();
- findXPosition(newPosition, item);
- findYPosition(newPosition, item);
- int x = item.getX();
- int y = item.getY();
- System.out.println(grid[x][y]);
- }
- public void finalGridPrint() {
- finalGrid = new char[8][8];
- for (int i = 0; i < grid.length; i++) {
- for (int j = 0; j < grid[i].length; j++) {
- if (grid[i][j] != '\u0000') {
- printedGrid[i][j] = grid[i][j];
- } else {
- printedGrid[i][i] = '_';
- }
- }
- }
- for (int i = 0; i < printedGrid.length; i++) {
- System.out.print("\t");
- for (int j = 0; j < printedGrid[i].length; j++) {
- System.out.print(printedGrid[i][j] + " ");
- }
- System.out.println("");
- }
- }
- public void print() {
- for (int i = 0; i < printedGrid.length; i++) {
- System.out.print("\t");
- for (int j = 0; j < printedGrid[i].length; j++) {
- System.out.print(grid[i][j] + " ");
- }
- System.out.println("");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement