Отчет по практической работе Объектно-ориентированное программирование Модель полета жаворонка и пустельги. Отчет2. Отчет по практической работе Объектноориентированное программирование Модель полета жаворонка и пустельги
Скачать 3.85 Mb.
|
1.2 Требования в организации ввода-вывода данных в программеВвод информации осуществляется с помощью клавиатуры. Вывод значений осуществляется на экран. 1.3 Требования в реакции программы на нестандартные, в том числе критические, действия пользователя.При некорректном вводе данных пользователем textBox автоматически ограничивает возможные значения. В других случаях программа блокирует ввод неверных данных. 1.4 Прочие требования к программеДанные классов должны быть инкапсулированы. Членами класса должны быть не менее 4-х свойств, 2-х методов, 1-го конструктора и 2-х событий. Нажатие кнопки “Закрыть” должно осуществлять корректное завершение работы приложения. 2 Логическая структура программыКласс lark Данный класс содержит один конструктор lark, который задает базовые значения полей, схемы алгоритмов которых приведены ниже. Поля и свойства класса lark Поля, принадлежащие свойствам представлены в таблице 2.1 Таблица 2.1 – Поля и свойства класса lark
Методы класса lark fly() – полет птицы. Этот метод смещает картинку фона, снижает показатели сытости и выносливости, повышает скорость, используется в обработчике событий timer1_Tick, вызывает событие deap при снижении значения свойства p_fat или p_hu до нуля. slept() – сон птицы. Этот метод повышает значение выносливости, при достижении значения выносливости значения 99 или 100, прерывает сон вызовом события stup. События класса lark Для создания событий сначала был объявлен делегат. Каждому событию соответствует свой делегат. delegate void death(Timer^ t1, PictureBox^ pbb, Button^ b1); event death^ deap; delegate void stand(PictureBox^ bi, PictureBox^ fdsz); event stand^ stup; Генерации событий происходят в следующих методах и свойствах: Вызов deap происходит в методе fly(), событием является снижение значения выносливости или сытости до нуля. Вызов stup происходит в методе slept(), событием является достижение значения выносливости 99 или 100. Функции обработчики событий: Для deap функцией-обработчиком является deshi() класса lark, в результате которой происходит остановка таймера, смена изображения птицы на погибшую и вывод кнопки воскрешения. Для stup функцией-обработчиком является disapple() класса tree, в результате которой птица поднимается в воздух, задает значение 10 свойству speedOfFly, а также прячет изображение дерева от пользователя. Класс kastrel Данный класс наследует класс lark. Конструктор класса kastrel() устанавливает базовые значения полей данного класса. Поля и свойства класса kastrel Поля и свойства класса kastrel совпадают с полями и свойствами класса lark. Методы класса kastrel Переопределяет метод fly() класса lark, заменяя изображение птицы, задает иные значения полей. События класса kastrel События, вызываемые в классе kastrel совпадают с событиями класса lark. Класс flBl Данный класс содержит конструктор flBl(speedB), который задает базовые значения полей. Схема его алгоритма приведена ниже. Поля и свойства класса flBl Поля, принадлежащие свойствам представлены в таблице 2.2 Таблица 2.2 – Поля класса flBl
Методы класса flBl fly() – полет мухи. Если муха скрыта от пользователя, перемещает её со скоростью птицы, в ином случае не перемещает её, проверяет расстояние до птицы. При приближении к птице ближе чем на 1500 пикселей вызывает событие see, отправляющее птице данные о мухе. При достижении значения меньшего 256 вызывает событие eatenm, скрывающее муху и восполняющее значение сытости птицы. appear() – появление мухи. Метод генерирует случайную высоту появления мухе в диапазоне от 300 до 700, останавливает передвижение мухи и делает её видимой События класса flBl delegate void visa(PictureBox^ p, PictureBox^ pbbb); event visa^ see; delegate void eatenm(); event eatenm^ eatm; Генерации событий происходят в следующих методах и свойствах: Вызов see происходит в методе fly(), событием является уменьшение расстояния между птицей и мухой до 1500, и с этого момента птица видит муху. Вызов eatenm происходит в методе fly(), событием является приближение мухи на такое расстояние 256 и ближе, на котором птица может съесть муху. Функции обработчики событий: Для see функцией-обработчиком является seeOb() класса lark, в результате которой происходит смена высоты полета птицы и вычисление расстояния до ближайшего объекта, вывод названия объекта. Для eatenm функцией-обработчиком является feed() класса lark, в результате которой происходит восстановление сытости у птицы и исчезновение мухи. Класс mouse Данный класс содержит конструктор mouse(speedB), который задает базовые значения полей. Схема его алгоритма приведена ниже. Поля и свойства класса mouse Поля, принадлежащие свойствам представлены в таблице 2.3 Таблица 2.3 Поля класса mouse
Методы класса mouse run() –отвечает за передвижение мыши и норы. Если мышь скрыта, передвигает её и нору со скорость полета птицы. В ином случае предвигает мышь со скоростью 3 пикселя в такт, а нору не двигает. При приближении к птице ближе чем на 1500 пикселей вызывает событие see, отправляющее птице данные о мыши. Отслеживает расстояние до норы. В том случае, если мышь не успевает добежать до норы прежде, чем приблизится к пустельге, вызывает событие eatm, в результате которого срабатывает функция feedM класса kastrel, в котором скрывается мышь и нора, восстанавливается сытость птицы. В случае, если мышь добегает до норы быстрее, чем приближается к пустельге, вызывает событие los, в результате которого срабатывает функция lost() класса kastrel, прерывающее передвижение пустельги в высоту и исчезновение мыши и норы. appear() – появление мыши. Задает случайное расстояние от мыши до норы в диапазоне от 60 до 960, делает мышь и нору видимыми. eaten() – исчезновение мыши. Скрывает мышь и нору. События класса mouse delegate void visa(PictureBox^ p, PictureBox^ pb); event visa^ see; delegate void eatenm(PictureBox^ pbb); event eatenm^ eatm; delegate void mlose(PictureBox^ pbb, PictureBox^ pbm, PictureBox^ pbn); event mlose^ los; Генерации событий происходят в следующих методах и свойствах: Вызов see происходит в методе run(), событием является уменьшение расстояния между птицей и мышью до 800, и с этого момента птица видит мышь. Вызов eatenm происходит в методе run(), событием является приближение мыши на расстояние 256, на котором птица может её съесть. Вызов mlose происходит в методе run(), событием является сокращение расстояние между мышью и норой до скорости полета птицы. Функции обработчики событий: Для see функцией-обработчиком является seeOb() класса kastrel, в результате которой происходит смена высоты полета птицы и вычисление расстояния до ближайшего объекта, вывод названия объекта. Для eatenm функцией-обработчиком является feedM() класса kastrel, в результате которой происходит восстановление сытости у пустельги и исчезновение мыши. Для los функцией-обработчиком является lost() класса kastrel, в результате которой происходит удаление мыши из ближайших объектов, исчезновение мыши и норы и прерывание смены высоты птицы. Класс tree Данный класс содержит конструктор tree(speedB), который задает базовые значения полей. Схема его алгоритма приведена ниже. Поля и свойства класса tree Поля, принадлежащие свойствам представлены в таблице 2.4 Таблица 2.3 Поля класса tree
Методы класса tree go() – передвижение дерева. Если дерево скрыто, передвигает дерево со скоростью полета птицы. В ином случае не передвигает дерево. При уменьшении расстояния между деревом и птицей до 1500, вызывает событие sow, отправляющее птице дынные о дереве, при достижении расстояния 0, вызывает событие sitdown, в результате которого срабатывает функция sitt() класса lark(), происходит снижение скорости до нуля и восстановление выносливости птицы appe() – появление дерева. Делает дерево видимым для пользователя, прекращает его передвигать События класса tree delegate void seen(PictureBox^ tr, PictureBox^ pict); event seen^ sow; delegate void sitting(PictureBox^ pb, PictureBox^ pbb); event sitting^ sitdown; Генерации событий происходят в следующих методах и свойствах: Вызов sow происходит в методе go(), событием является уменьшение расстояния между птицей и деревом до 1500, и с этого момента птица видит дерево. Вызов sitdown происходит в методе go(), событием является приближение дерева на расстояние 0 , необходимое для посадки на него. Функции обработчики событий: Для sow функцией-обработчиком является seeOb() класса lark, в результате которой происходит смена высоты полета птицы и вычисление расстояния до ближайшего объекта, вывод названия объекта. Для sitdown функцией-обработчиком является sitt() класса lark, в результате которой происходит обнуление скорости птицы и смена изображения. |