Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая ТП Францев Артем БСТ1801.docx
Скачиваний:
62
Добавлен:
12.03.2022
Размер:
1.98 Mб
Скачать

2.5 Класс дождя Rain

RainTickTime – оставшееся время дождя в тиках таймера.

События:

  • EventRainStart – событие начала дождя.

Методы:

  • OnRainStart – обработчик события начала дождя, устанавливает RainTickTime в максимальное значение;

  • RainStart – метод, вызывающий событие дождя (нужен для вызова события извне);

  • RainStop – метод, обнуляющий оставшееся время дождя.

Конструктор:

Выставляет свойства: устанавливает RainTickTime в нуль; связывает метод OnRainStart с событием EventRainStart.

2.6 Класс внешнего мира GameEnvironment

содержащий следующие данные:

Поля:

  • Weather – объект класса Rain;

  • Animals – список объектов класса Fish;

  • Fishers – список объектов класса Fisher;

  • _time_secs – protected поле, хранящее текущее время в секундах.

События:

  • EventFishCatched – событие поимки рыбы.

Методы:

  • FishSpawning – метод добавления новых рыб: добавляет рыб до суммарного количества FISHES_AT_ONE_TIME, подписывая метод FishDeleting на событие класса Fish EventDeleteObject;

  • FishDeleting – метод обработки события удаления рыбы, удаляет рыбу из списка методом Remove;

  • FisherDeleting – метод, обработки события удаления рыбака, удаляет рыбака из списка методом Remove;

  • FisherReplace – перемещает рыбака между лодкой и пирсом (фактически очищает список рыбаков, добавляет в список рыбаков объект соответствующего класса (Fisher или Fisherboat), связывает метод FisherDeleting с событием класса Fisher EventDeleteObject;

  • CheckFishcatch – проверяет условия (касание крючка, соответствие наживок, случайную вероятность) поимки конкретной рыбы, возвращает true в случае успеха;

  • OnEventFishCatched – метод обработки события ловли рыбы;

  • TimerTickAction – метод, включающий все основные программные действия, которые необходимо выполнить по тику таймера: принимает текущий шаг таймера, при повышенном множителе (т.е. уменьшенном шаге) выполняет ряд методов в цикле, в числе прочего этот метод вызывает событие EventFishCatched (при положительном возврате CheckFishcstch), вызывает методы передвижения рыб и рыбака, переключает время и дождь (начинается с вероятностью 1%, если еще не идет, продолжается 8 «минут» (тиков таймера));

  • GetStrTime – возвращает строку вида mm:ss, где mm и ss это минуты и секунды соответственно;

  • GetIntTime – возвращает число секунд как целочисленное значение;

  • GetStrTOD – возвращает название времени суток.

Конструктор:

Выставляет свойства: инициализирует списки рыб и рыбаков, а также объект класса Rain; связывает метод-обработчик OnEventFishCatched с событием EventFishCatched; устанавливает время в 450 секунд (7:30).

2.7 Главная часть приложения - класс «MyForm»

Методы:

  • Timer_Tick – метод обновления таймера, основной «цикл» всех вычислений: вызывает метод TimerTickAction класса GameEnvironment, а также все связанные с обновлением интерфейса методы;

  • Graphics – метод отрисовки графики: инициализирует объект Graphics, передает его в метод DrawScreen по ссылке, меняет изображение основного pictureBox и освобождает память;

  • DrawScreen – метод отрисовки экрана: выбирает элементы фона в соответствии со временем суток, управляет порядком наложения слоев (в том числе порядком вызова методов DrawFishes и DrawFisher);

  • DrawFishes – метод рисования всех рыб;

  • DrawFisher – метод рисования рыбака;

  • CheckWin – метод, проверяющий достижение цели по сумме пойманных рыб;

  • UpdateFishStr – метод, обновляющий label с информацией о пойманных рыбах / цели

  • UpdateDateTime – метод, обновляющий label с текущим временем;

  • btn_exit_Click – метод, вызывающий Form::Close(), то есть закрывающий приложение;

  • btn_hide_Click – метод, сворачивающий окно приложения;

  • btn_mltp_Click – метод, меняющий ускорение симуляции (доступны варианты от первой (1) до четвертой (16) степени двойки включительно);

  • btn_newFishboat_Click – обработчик нажатия кнопки «ПРИВЕСТИ РЫБАКА»;

  • btn_changePtr_Click – обработчик нажатия кнопки смены наживки (рыбак закинет удочку заново);

  • btn_changePos_Click – обработчик нажатия кнопки смены позиции (пирс/лодка) рыбака;

  • btn_rainSwitch_Click – обработчик нажатия кнопки включения/отключения дождя;

  • btn_restart_Click – обработчик нажатия кнопки перезапуска симуляции (появляется, когда цель по пойманным рыбам достигнута, то есть симуляция окончена);

  • OnEventCatchFish – обработчик события пойманной рыбы (пишет инфо о событии), подписанный на событие EventFishCatched класса GameEnvironment;

  • OnEventDeleteBoat – обработчик события ушедшего рыбака (пишет инфо о событии), подписанный на метод EventDeleteObject класса Fisher;

  • SetFishboatButtons – устанавливает поле Enabled кнопок, которые должны быть включены только когда рыбак на экране, в value (true/false), а кнопку добавления рыбака в противоположное значение (false/true);

  • SetNotRestartButtons – убирает все кнопки, кроме кнопки перезапуска (или наоборот).

  1. Схемы алгоритмов

    1. Класс Fish:

OnDownMove

Рисунок 1 - Схема алгоритма метода OnDownMove

Move

Рисунок 2 - Схема алгоритма метода Move

Catched

Рисунок 3 - Схема алгоритма метода Catched

SetPropertiesByPower

Рисунок 4 - Схема алгоритма метода SetPropertiesByPower

3.2 Класс Bird:

OnDownMove

Рисунок 5 - Схема алгоритма метода OnDownMove

SetPropertiesByPower

Рисунок 6 - Схема алгоритма метода SetPropertiesByPower

3.3 Класс Fisher:

Catch

Рисунок 7 - Схема алгоритма метода Catch

Move

Рисунок 8 - Схема алгоритма метода Move

OnWorkStop

Рисунок 9 - Схема алгоритма метода OnWorkStop

3.4 Класс Fisherboat:

Move

Рисунок 10 - Схема алгоритма метода Move

3.5 Класс Rain:

OnRainStart

Рисунок 11 - Схема алгоритма метода OnRainStart

RainStart

Рисунок 12 - Схема алгоритма метода RainStart

RainStop

Рисунок 13 - Схема алгоритма метода RainStop

3.6 Класс GameEnvironment:

FishDeleting

Рисунок 14 - Схема алгоритма метода FishDeleting

FisherReplace

Рисунок 15 - Схема алгоритма метода FisherReplace

CheckFishcatch

Рисунок 16 - Схема алгоритма метода CheckFishcatch

OnEventFishCatch

Рисунок 17 - Схема алгоритма метода OnEventFishCatch

GetStrTime

Рисунок 18 - Схема алгоритма метода GetStrTime

GetIntTime

Рисунок 19 - Схема алгоритма метода GetIntTime

GetStrTOD

Рисунок 22 - Схема алгоритма метода GetStrTOD