Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач Отчет.doc
Скачиваний:
8
Добавлен:
27.09.2019
Размер:
284.67 Кб
Скачать

Содержание

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)