
Добрый день.
Во времясоздания морского боя (игрок против игрока) столкнулся с тем, что не получается сравнить значения массивов и если сходятся, вывести сообщения. Т.е. у меня есть массив выстрела игрока по координатам X Y(размер массива соответствует размеру поля), мне нужно сравнить его с массивом корабля (координаты X Y на которые игрок поставил корабль) и если адреса сходятся(X и Y), вывести сообщение, что корабль потоплен, а также проставить на поле отметку, что корабль потоплен(знак "-"). Отметил TODOшкой место, на котором случился затык.
Работю в Intelidj Idea, ниже код, который нужен для решения ошибки, вот все классы, если кто то захочет запустить и протестировать(пакет seaBatle_ex1 - battle: https://yadi.sk/d/3VKc-GKC3VetiH
Помогите пожалуйста, т.к. в интернете не смог найти ответа.
```
public class Main {
public static void main(String[] args) {
FieldPlayer1 fieldPlayer1 = new FieldPlayer1();
FieldPlayer2 fieldPlayer2 = new FieldPlayer2();
Player1 player1 = new Player1();
Player2 player2 = new Player2();
ShipPlayer1 shipPlayer1 = new ShipPlayer1();
ShipPlayer2 shipPlayer2 = new ShipPlayer2();
char[][] shootPlayer1 = new char[fieldPlayer1.SIZE][fieldPlayer1.SIZE];
char[][] shootPlayer2 = new char[fieldPlayer2.SIZE][fieldPlayer2.SIZE];
fieldPlayer1.init1();
fieldPlayer2.init2();
System.out.println("Начало игры");
player1.nameUser1();
player2.nameUser2();
fieldPlayer1.setShip(shipPlayer1);
fieldPlayer2.setShip(shipPlayer2);
//Мы сделали так, что массив shootPlayer1 перезаписывается, когда игрок делает выстрел и по адресу выстрела располагается значение Х
do {
shootPlayer1 [player1.getShootX()][player1.getShootY()] ='X';
fieldPlayer2.doShootPlayer2(shootPlayer1);
shootPlayer1 [player2.getShootX()][player2.getShootY()] ='X';
fieldPlayer1.doShootPlayer1(shootPlayer2);
//Игроки будут стрелять по Х и Y. Соответственно будут сравниваться выстрел(массив координаты выстреала) и раположение корабля(массив координаты точки корабля). Пока не реализовано.
if (fieldPlayer1.locationShip1 == shootPlayer2 && fieldPlayer2.locationShip2 == shootPlayer1) {
System.out.println("Игроки одновременно выпустив ракеты уничтожили друг друга");
break;
} else if (fieldPlayer2.locationShip2 == shootPlayer1) {
System.out.println("Победил игрок " + player1.nameUserNumber1);
break;
} else if (fieldPlayer1.locationShip1 == shootPlayer2) {
System.out.println("Победил игрок " + player2.nameUserNumber2);
break;
} else {
System.out.println("\nЗаходим на следующий круг!\n");
}
} while (true);
}
}
```
public class FieldPlayer2 {
final int SIZE = 10;
char[][] cellsPlayer2 = new char[SIZE][SIZE]; //Константы пишутся большими буквами всегда
ShipPlayer2 shipPlayer2;
int locationXShip2;
int locationYShip2;
void init2() {
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
cellsPlayer2[i][j] = '.';
}
}
}
void setShip(ShipPlayer2 shipPlayer2) {
this.shipPlayer2 = shipPlayer2;
locationXShip2 = shipPlayer2.positionXPlayer2();
locationYShip2 = shipPlayer2.positionYPlayer2();
cellsPlayer2[locationXShip2][locationYShip2] = 'X';
}
public void chekingTheHit (String[] args) {
for (char[] shootPlayer1: cellsPlayer2) {
if (shootPlayer1 == cellsPlayer2)
}
}
//TODO: Здесь нужно сравнить значения в двух массивах. Проще говоря у нас есть массив с координатой выстрела(shootPlayer1), которая в массиве обозначена Х, нам нужно посмотреть что стоит по этому адресу в массиве поля(cellsPlayer2) и если там стоит корабль(Х), выдать игроку, что он попал.
void doShootPlayer2(char [][] shootPlayer1) {
switch (cellsPlayer2 shootPlayer1) {
case '.':
System.out.println("Промах");
cellsPlayer2[shootPlayer1] = '*';
break;
case 'X':
System.out.println("Супер! Корабль потоплен!");
cellsPlayer2[shootXPlayer1][shootYPlayer1] = '-';
System.out.println(cellsPlayer2);
break;
case '*':
System.out.println("Уже стреляли!");
break;
default:
System.out.println("ERROR");
}
}
void show() {
System.out.println(cellsPlayer2);
}
boolean isNotGameOverPlayer2() {
return cellsPlayer2[shipPlayer2.positionXPlayer2()][shipPlayer2.positionYPlayer2()] == 'X';
}
}
import java.util.Scanner;
public class Player1 {
static String nameUserNumber1;
void nameUser1() {
nameUserNumber1 = getnameUser1();
}
String getnameUser1() {
System.out.println("Игрок 1, назовитесь");
Scanner scanner = new Scanner(System.in); //Отслеживает что пользователь вводит с клавиатуры
String nameUserNumber1;
nameUserNumber1 = scanner.nextLine();
System.out.printf("Приветствуем %s\n", nameUserNumber1);
return nameUserNumber1;
}
int getShootX() {
System.out.println(nameUserNumber1 + " , куда стреляем?");
Scanner scanner = new Scanner(System.in); //Отслеживает что пользователь вводит с клавиатуры
String s;
s = scanner.nextLine();
System.out.printf("Вы ввели: %s\n", s);
//Преобразовываем строчку в число
int shootXPlayer1 = Integer.parseInt(s);
return shootXPlayer1;
}
int getShootY() {
System.out.println(nameUserNumber1 + " , куда стреляем?");
Scanner scanner = new Scanner(System.in); //Отслеживает что пользователь вводит с клавиатуры
String s;
s = scanner.nextLine();
System.out.printf("Вы ввели: %s\n", s);
//Преобразовываем строчку в число
int shootYPlayer1 = Integer.parseInt(s);
return shootYPlayer1;
}
}
public int positionXPlayer1() {
Scanner in = new Scanner(System.in);
Pattern p = Pattern.compile("^\\d$");
Matcher m = null;
int locationXPlayer1;
boolean t;
do {
System.out.println(player1.nameUserNumber1 + ", цифрой от одного до 9 выберите месторасположение корабля по оси X");
axisXplayer1 = in.nextLine();
m = p.matcher(axisXplayer1);
t = m.matches();
if (t == false) {
System.out.println("Вы допустили ошибку при вводе данных. Попробуйте ещё раз! \n");
}
} while (!t);
locationXPlayer1 = Integer.parseInt(axisXplayer1);
return locationXPlayer1;
}
public int positionYPlayer1() {
Scanner in = new Scanner(System.in);
Pattern p = Pattern.compile("^\\d$");
Matcher m = null;
int locationYPlayer1;
boolean t;
do {
System.out.println(player1.nameUserNumber1 + ", цифрой от одного до 9 выберите месторасположение корабля по оси Y");
axisYplayer1 = in.nextLine();
m = p.matcher(axisYplayer1);
t = m.matches();
if (t == false) {
System.out.println("Вы допустили ошибку при вводе данных. Попробуйте ещё раз! \n");
}
} while (!t);
locationYPlayer1 = Integer.parseInt(axisYplayer1);
return locationYPlayer1;
}
}



