Задание 1. Построение схемы. Идея головоломки - определить недостающую фигуру среди уже известных
Идея головоломки - определить недостающую фигуру среди уже известных.
Создайте новый проект и нарисуйте макет головоломки, он может выглядеть так:
Выделите ключевую фигуру и замаскируйте ее среди подобных:
Для удобства объедините в группу оставшиеся слева фигуры (для этого выделите их, и нажмите правую кнопку мышки):
Теперь создадим модель, обслуживающую головоломку.
Для создания отдельного окна добавьте на схему объект LGSpace (библиотека Unit). Сделаем автоматическую настройку координат окна по графическому объекту. Нарисуйте обрамляющий прямоугольник. В его свойствах укажите имя - frame. Затем в объекте LGSpace установите для переменной ObjectName значение - frame.
Теперь размер окна будет равным размерам этого прямоугольника. Для того чтобы изменить Z-порядок прямоугольника (поместить его под другими графическими объектами), щелните на нем правой кнопкой мышки и выберите команду Z-order - Downward. Или просто выберите объект и нажмите кнопки Ctrl-PgDown.
Для того чтобы пользователь мог перетаскивать объекты, добавьте объект DragObjects (библиотека Graph2d). Для того чтобы ограничить возможность перетаскивания, установите у всех стационарных графических объектов флаг Nonselectable object.
Примечание. После того как Вы установите этот флаг, объекты будут недоступны, и если вы захотите получить к ним снова доступ, используйте команду Format - Page properties - закладка Flags - Allow choosing unchoosable objects. Выполните редактирование и переключите флаг обратно.
Теперь будем определять правильность выбора пользователя. Создайте новый объект и поместите в него следующую модель:
HANDLE hcobj
if (check) // if user press the "CHECK" button
if (hcobj == #14) // checking descriptor current key object
r := MessageBox("Correct !","",0)
else
r := MessageBox("Incorrect !","",0)
endif
check := 0 // reseting the "CHECK" button
endif
Примечание. Определить дескриптор ключевого объекта можно, щелкнув на нем правой кнопкой мышки и выбрав Properties - закладка Info. Смотрите пункт HANDLE, в моем примере он получился равным 14. У вас может быть другим, исправьте значение в тексте!
Добавьте кнопку WinButton (библиотека Unit) и установите у ее переменной Text значение "Check".
Примечание. Поскольку кнопка относится к классу Windows объектов у вас могут возникнуть сложности с ее выбором. Выполните команду Format - Page properties - закладка Flags - Disable child windows. Выполните редактирование кнопки. Не забудьте отключить флаг обратно, иначе кнопка не будет работать!
Соедините связью переменные pressed (WinButton) и check (новый объект).
Добавьте объект ScanObject (библиотека Graph2d). Установите в нем значения переменных x,y равными середине ключевого поля нашей головоломки. Определить их можно в StatusLine, установив курсор мышки в нужную позицию.
В моем примере это 190,220.
Соедините связью переменные HObject (ScanObject) и hcobj (новый объект).
Пример готов, проверьте его работоспособность.
Форма отчета:Сохраните проект со своей работой и покажите преподавателю.
Выводы:Закрепление навыков построения моделей различной природы.
Вопросы к защите лабораторной работы
1.Какое назначение у объектаLGSpace?
2. ОбъектLGSpace относиться к библиотеке?
- Лабораторная работа 15
Тема:Моделирование и формализация.
Цель: Изготовление простой модели.
Общие сведения:
· По описанию СВЕТОФОРА создайте его действующую модель.
· Встройте систему управления светофором.
· Постройте систему отображения светофора.
· Постройте демонстрацию, объясняющую устройство светофора.
Описание объекта.
Светофор имеет три цветных лампочки - красная, желтая, зеленая. Светофор работает так: красная, желтая, зеленая, желтая, красная, желтая, зеленая, желтая, красная.
То есть весь цикл работы светофора - красная, желтая, зеленая, желтая.
Далее цикл повторяется. Можно считать, что t0-t1 - период горения красного цвета, t2-t1 - период желтого, t3-t2 - период зеленого, t4-t3 - период желтого.
Ясно, что потребуется имитация времени в виде счетчика t. Пусть он увеличивает время на каждом такте на 1. Цикл легко передать периодической функцией от t.
Первая часть этого цикла должна выделяться - на время от t0 до t1 надо поднять один флажок, потом опустить. На другие части цикла - следует поднимать и опускать другие флажки.
Тогда сигналы от флажков, идущие на лампочки, будут зажигать их тогда, когда положено.
Теперь, проектируем систему управления светофором.
Так как время цикла и t0,t1,t2,t3 можно назначать разными, то удобно спроектировать систему управления ими отдельно. Управляя этими параметрами, можно по ходу работы устройства изменять поведение светофора - тормозить или ускорять цикл, увеличивать или уменьшать скважность, доли горения цветов. Хорошо, если Вы добьетесь, что управление светофором появится в отдельном окне.
Проектируем систему, объясняющую работу светофора - циклическую диаграмму. Нарисуем круг, автоматически разобьем его на четыре сектора по долям красного, желтого и зеленого цвета, окрасим их в соответствующие цвета. Изменение доли любого из цветов должно вести к изменению величины сектора. В сумме сектора должны составить 360 градусов. Теперь из центра круга до окружности проведем линию и заставим ее вращаться в темпе счетчика t. Пока горит красный цвет - линия находится в красном секторе, пока зеленый - в зеленом и так далее.
Порядок выполнения лабораторной работы: