Авторский канал по разработке на Java.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!
Cотрудничество: @energy_c
Post #1872
1.86K
Морской бой — делаем консольную игру!
Сделаем рабочую версию: поле 5×5, корабли расставлены, игрок стреляет по координатам. Игра сообщает “попал/мимо” и заканчивается, когда все корабли уничтожены.
Создаём поле и размещаем корабли:
Функция вывода поля:
Запускаем игровой цикл:
Проверяем выстрел:
Логика попадания:
Финал игры:
Дальше можно прокачать игру добавив случайную генерацию кораблей и подсчёт ходов.
👉 Java Ready | #практика
Сделаем рабочую версию: поле 5×5, корабли расставлены, игрок стреляет по координатам. Игра сообщает “попал/мимо” и заканчивается, когда все корабли уничтожены.
Создаём поле и размещаем корабли:
int[][] field = {
{0,1,0,0,0},
{0,1,0,1,0},
{0,0,0,1,0},
{1,0,0,0,0},
{0,0,1,0,0}
};
boolean[][] shots = new boolean[5][5];
int ships = 5;Функция вывода поля:
void print() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (shots[i][j])
System.out.print(field[i][j] == 1 ? " X " : " * ");
else
System.out.print(" . ");
}
System.out.println();
}
}Запускаем игровой цикл:
var sc = new java.util.Scanner(System.in);
while (ships > 0) {
print();
System.out.print("Введите координаты (строка и столбец 1-5): ");
int r = sc.nextInt() - 1;
int c = sc.nextInt() - 1;
Проверяем выстрел:
if (r < 0 || r >= 5 || c < 0 || c >= 5 || shots[r][c]) {
System.out.println("Ошибка ввода!");
continue;
}
shots[r][c] = true;Логика попадания:
if (field[r][c] == 1) {
System.out.println("Попал!");
ships--;
} else {
System.out.println("Мимо!");
}
}Финал игры:
System.out.println("Все корабли уничтожены! Победа!");
sc.close();Дальше можно прокачать игру добавив случайную генерацию кораблей и подсчёт ходов.
👉 Java Ready | #практика
- ❤ 8
- 👍 4
- 🔥 4













