Суть написанного приложения — игра «Морской бой».
- Интерфейс приложения представляет из себя консольное окно с двумя полями 6х6.
- Игрок играет с компьютером. Компьютер делает ходы наугад, но не ходит по тем клеткам, в которые он уже сходил.
- Для представления корабля описан класс Ship с конструктором принимающим в себя набор точек (координат) на игровой доске.
- Описан класс доски. Доска принимает в конструкторе набор кораблей.
- Корабли должны находится на расстоянии минимум одна клетка друг от друга.
- На каждой доске (у ИИ и у игрока) находится следующее количество кораблей: 1 корабль на 3 клетки, 2 корабля на 2 клетки, 4 корабля на одну клетку.
- Игрок не может стрелять в одну и ту же клетку несколько раз. При ошибках хода игрока возникает исключение.
- В случае, если возникают непредвиденные ситуации, выбрасыватся и обрабатыватся исключения.
- Буквой X помечаются подбитые корабли, . — промахи.
- Побеждает тот, кто быстрее всех разгромит корабли противника.
В дополнение к основному заданию реализовано следующее:
- вывод двух досок рядом по горизонтали.
- в случае успешного поподания, следующими ходами ИИ "добивает" корабль противника.
- для симуляции игры с реальным противником реализована "мыслительная работа" ИИ путем задержки хода.