- •«Московский технический университет связи и информатики»
- •Курсовая работа
- •1. Постановка задачи 2
- •Постановка задачи
- •Логическая структура программы
- •2.1 Класс рыбы Fish
- •2.3 Класс птицы Bird
- •2.2 Класс рыбака на пирсе Fisher
- •2.4 Класс рыбака на лодке Fisherboat
- •2.5 Класс дождя Rain
- •2.6 Класс внешнего мира GameEnvironment
- •2.7 Главная часть приложения - класс «MyForm»
- •3.7 Класс MyForm
- •Текст программы
- •4.1 Класс Fisher
- •4.2 Класс Fisherboat
- •4.3 Класс Fish
- •4.4 Класс Bird
- •4.5 Класс Rain
- •4.6 Класс GameEnvironment
- •4.7 Класс MyForm
- •Результаты тестирования программы
Логическая структура программы
2.1 Класс рыбы Fish
содержащий следующие данные:
Свойства:
xPos – позиция по оси абсцисс;
yPos – позиция по оси ординат;
state – номер фрейма для анимации;
power – «сила» рыбы, обратно пропорциональна вероятности вытянуть рыбу;
level – «уровень» рыбы, принадлежность к соответствующей наживке;
weight – вес рыбы;
speed – горизонтальная скорость передвижения.
События:
EventDeleteObject – удаление рыбы.
Методы:
OnDownMove – метод, реализующий движение на дно;
Move – обработка перемещения рыбы;
Catched – метод, вызываемый если рыба поймана;
SetPropertiesByPower – метод, устанавливающий основные свойства по свойству power.
Конструктор:
В конструкторе инициализируются все свойства: сила, уровень, вес, скорость, фрейм анимации и позиция рыбы. Также выполняется подписка на событие начала дождя (объект дождя передается в конструктор по ссылке).
2.3 Класс птицы Bird
Свойства идентичны родительскому классу.
Методы (новые или перегруженные):
OnDownMove – перегруженный метод, реализующий движение к водной глади при дожде, в данном случае переключает горизонтальную скорость на максимальную;
SetPropertiesByPower – перегруженный метод, устанавливающий основные свойства по свойству power.
Конструктор:
Аналогичен родительскому классу, за исключением стартовой высоты; также скорость и уровень теперь гарантированно установлены в 2 и 5 соответственно. Также выполняется подписка на событие начала дождя (объект дождя передается в конструктор по ссылке).
2.2 Класс рыбака на пирсе Fisher
catching – флаг: рыбак «тянет» рыбу;
state – номер фрейма для анимации;
lvl – текущий уровень наживки;
ptrLen – длина лески (после поплавка, т.е. глубина ловли);
xPosPtr – позиция поплавка по оси абсцисс;
yPosPtr – позиция поплавка по оси ординат;
xPos – позиция рыбака по оси абсцисс;
yPos – позиция поплавка по оси ординат;
worktime – время работы рыбака;
fishCount – количество пойманной рыбы.
События:
EventStopWork – событие прекращение работы рыбака;
EventDeleteObject – событие удаления рыбака.
Методы:
Catch – метод, переключающий анимацию на вытягивание и добавляющий рыбу к счетчику пойманных рыб;
Move – метод передвижения поплавка (имитирует покачивание поплавка на воде);
OnWorkStop – обработчик события окончания работы, вызывает событие удаления рыбака.
Конструктор:
Выставляет свойства: рабочее время в 4 часа; фрейм анимации в 4 (рыбак начинает закидывать удочку); уровень наживки в 1; положение рыбака на пирсе; связывает событие прекращения работы с соответствующим методом-обработчиком; а также подписывает метод прекращения работы на начало дождя.
2.4 Класс рыбака на лодке Fisherboat
Свойства: аналогичны родительскому классу.
События: аналогичны родительскому классу.
Методы (перегруженные):
Move – метод передвижения поплавка (имитирует покачивание поплавка на воде), в перегруженной версии добавляется покачивание рыбака на лодке.
Конструктор:
Выставляет свойства: аналогичен родительскому, но положение рыбака – в воде.