
Содержание
1. Постановка задачи _____________________________________________4
2. Метод решения ________________________________________________5
3. Интерфейс программы __________________________________________7
4. Список литературы_____________________________________________8
Приложение А. UML-диаграмма классов___________________________9
Приложение Б. Описания классов_________________________________11
Приложение В. Фрагменты кода__________________________________13
1.Постановка задачи
Реализовать компьютерную игру «Морской бой» со стандартными правилами, с использованием основ технологии ООП.
При разработке игры должны учитываться следующие пункты:
• использование ТОЛЬКО языков ООП: C++, DELPHI (Object Pascal), Java.
• программирование хотя бы 2х классов.
• пользовательский интерфейс может быть реализован как в консоли, так и с
использованием GUI.
• разрешено написание программ как для Windows, так и для Linux –систем.
2. Метод решения
При написании игры «Морской бой» нужно учитывать ряд ограничений, предписанных правилами:
Для игры используется стандартное поле 10*10 клеток
В игре участвуют 10 кораблей ( 1 четырехпалубник, 2 трехпалубника, 3 двухпалубника, 4 однопалубника)
При расстановке кораблей между ними должна остаться минимум одна клетка игрового поля
Игрок и Ai ходят поочередно (по умолчанию игрок всегда ходит первым)
В случае попадания игрока или Ai, за последним остается право на повторных ход. до тех пор, пока он не промажет
В случае уничтожения корабля зона вокруг него (в радиусе одной клетки) автоматически становиться пустой (т.е. в ней кораблей уже быть не может)
Победителем считается тот кто первым уничтожил все корабли соперника
Для реализации всех вышеуказанных правил было разработано 3 класса, которые связаны между собой агрегацией.
Класс GameBoard отвечает за
Создание и отображение карты (двух типов – открытая для игрока и закрытая для Ai)
Добавление и удаление корабля с игрового поля
Случайное заполнение поля кораблями
Очистку поля
Класс GameCell отвечает за
4 Состояния ячейки:
а) пусто – обычная пустая клетка
б) корабль – клетка занятая кораблем
в) пустая зона – клетка не занятая кораблем, но прилегающая к нему
г) раненый корабль – клетка занятая кораблем, в которую было попадание
Класс Player отвечает за
а) за стрельбу по выбранной клетке
Соответственно класс Player содержит поле GameBoard, в котором соответственно имеется массив GameCell`ов. Исходя из этого мы получаем полноценную агрегацию. Ее мы опишем графически в разделе UML диаграмма классов (см. «Приложение А. UML-диаграмма классов», стр.9)