- •«Московский технический университет связи и информатики»
- •Курсовая работа
- •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
- •Результаты тестирования программы
Результаты тестирования программы
Процесс тестирования
Программа должна вести себя следующим образом: при запуске (без дополнительных действий пользователя) пользователь должен увидеть перед собой примерно следующее состояние (рис 44). Пользователь на данном этапе может вызвать рыбака, ускорить симуляцию и вызвать дождь.
Рисунок 44 – Вид программы при запуске
Рисунок 45 – Вид программы при срабатывании события «Дождь»
При запуске симуляции мы можем видеть часы, показывающие время. Каждую минуту симуляции ( 1 секунда реального времени) когда нет дождя имеется шанс в 1 процент на то что начнется дождь. Данное событие так же можно вызвать нажатием кнопки дождь. При срабатывании данного события рыбак уходит с пирса, а рыбы начинают плыть по дну.
Пользователь так же может выбирать наживку для ловли рыбы. В данной симуляции представлено 4 вида рыб, каждая из которых плавает на разном диапазоне глубины и клюет на разную наживку. В интерфейсе программы на рисунках 46-49 мы можем увидеть отображение выбранной наживки и рыбы которая на нее клюет. Так как разные рыбы плавают на разном диапазоне глубины то и для каждой наживки диапазон глубины разный.
Рисунок 46 – Смена наживки
Рисунок 47 – Смена наживки
Рисунок 48 – Смена наживки
Рисунок 49 – Смена наживки
Пользователь может ускорять работу программы с помощью кнопки множителя, увеличивая делитель периода таймера (рис 50).
Рисунок 50 – Вид ускоренно работающей программы
В данной программе так же реализовано событие клева рыбы. Данное событие может сработать с шансом в 80 процентов, когда рыба проплывает рядом с крючком, на котором находится наживка, необходимая для ловли именно этой рыбы. Тогда Рыбак реагирует, подсекая рыбу, причем с некоторым шансом рыба может сорваться с крючка. Если же все прошло успешно то, выловленная рыба удаляется, а счет выловленных рыбаком рыб увеличивается на 1.
Рисунок 51 – Вид программы при срабатывании события клева рыбы
Когда рыбак достигает цели по выловленным рыбам мы наблюдаем остановку симуляции, и появление кнопки пуск, которая начнет симуляцию заного, обнулив при этом счетчик выловленных рыб
Результаты тестирования
Приложение действительно ведёт себя так, как и было описано. Так как процессы довольно длительны, в программе реализована функция ускорения симуляции. Её использование не влияет на точность получаемых данных и работу событийных методов, которые получились логичными и естественными.
Выводы
В данной работе была реализована модель ловли рыбы – модель демонстрирует ход времени со сменой суток, взаимодействие рыб с окружающей средой (погодой, рыболовным крючком).
Данное приложение наглядно показывает возможности событийного, объектно-ориентированного программирования на языке C++: оно оперирует написанными графическими классами объектов, связанными наследованием, а также подпиской на события разных классов.