Внастоящее время в компьютерном мире существует множество языков программирования

Вид материалаДокументы

Содержание


2.2. Создание программы «попадание точки в фигуру»
Events в Object Inspector
Name для левого нижнего квадратика – пусть его имя ShapeN
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   16

2.2. Создание программы «попадание точки в фигуру»


Задача: Дана сложная фигура, вписанная в квадрат с координатами: левый нижний угол (5,5), верхний правый угол (20,20). Требуется написать программу для определения попадания точки с введенными координатами в указанную фигуру. Примерный вид окна программы показан на рис. 2.6.

Процесс создания программы происходит по следующему алгоритму:
  1. Запустить программу Delphi;
  2. Сохранить проект как «Work2», модуль назвать «Main»;
  3. Создать образ окна:
    • Изменить заголовок на «Попадание точки в фигуру»;
  1. Создать изображение фигуры:
  • Поместить в форму элемент Shape, вкладка Additional, значок ;
  • Изменить свойства объекта:
    • Изменить размер объекта для обеспечения попадания в окно 3 элементов по вертикали и трех по горизонтали, элемент должен быть квадратом;
    • Изменить цвет квадратика (свойство Brush/Color и Pen/Color);
  • С
    копировать образ квадратика в буфер обмена (при классической раскладке клавиатуры в Delphi это комбинация );
  • Поместить на форму 7 копий квадратика из буфера обмена ();
  • Разместить квадратики в фигуру «квадратный бублик» (см. рис.2.6). Необходимо обеспечить пустое пространство внизу и слева от фигуры для размещения начала координат – в левом нижнем углу фигуры должен «поместиться» как бы еще один квадратик;
  1. Создать 2 элемента для ввода координат точки:
    • Поместить на форму 2 элемента SpinEdit, вкладка Samples, значок ;
    • Назвать один элемент SECoordX (для координаты X) и SECoordY (для координаты Y)  свойство Name (в дальнейшем изменяемое свойство будет обозначаться после стрелки);
    • Настроить минимальное возможное значение вводимого числа 0, максимальное – 25, значение по умолчанию 0 и шаг изменения величины 1  соответственно MinValue, MaxValue, Value и Increment;
  1. Добавить надписи к полям ввода:
    • Поместить 2 элемента Label, вкладка Standard, значок ;
    • Настроить надписи на «Координата X» и «Координата Y»  Caption;
  1. Добавить метку для вывода результата попадания точки:
    • Поместить элемент Label, вкладка Standard, значок ;
    • Назвать элемент LResultName;
    • Изменить заголовок на «Мимо»  Caption;
  1. Добавить кнопки для запуска вычислений и выхода из программы:
    • Добавить 2 элемента Button, вкладка Standard, значок ;
    • Назвать кнопку для выхода BQuit, а кнопку для вычисления BOkName;
    • Изменить заголовки кнопок на «Выход» и «Ok»  Caption;
  1. Образ окна создан!
  2. Запрограммировать выход – щелкнуть на кнопке BQuit и ввести команду Close;
  3. Проанализировать форму фигуры для создания алгоритма – в нашем случае проверить попадание в большой квадрат и проверить не попадает ли точка во внутренний квадрат;
  4. Вернуться на форму (клавиша ) и запрограммировать кнопку BOk:
    • Щелкнуть дважды на кнопке BOk;
    • Записать оператор проверки координат. (Координаты можно получить у элементов SECoordX и SECoordY через свойства Value – обращение к свойству объекта осуществляется через «точку» - например: SECoordX.Value дает значение свойства Value элемента SECoordX. SECoordX.Value дает значение введенной координаты X, SECoordY.Value дает значение введенной координаты Y.):

If (((SECoordX.Value >= 5) and (SECoordX.Value <= 20) and

{ попадание Х в большой квадрат}

(SECoordY.Value >=5) and (SECoordY.Value <= 20))and

{ попадание Y в большой квадрат}

Not ((SECoordX.Value >10) and (SECoordX.Value < 15) and

{не попадание Х в малый квадрат}

(SECoordY.Value > 10) and (SECoordY.Value < 15)))

{ не попадание Y в малый квадрат}

then LResult.Caption := ‘Попал’{Вывод сообщения «Попал» }

else LResult.Caption := ‘Мимо’;{Вывод сообщения «Мимо» }
  1. Запустить программу 
  2. Для улучшения программы необходимо:
    • Перерисовывать результат сразу при вводе координат;
    • Добавить «точку» для визуализации положения точки.
  1. Для реализации пункта 14а необходимо:
    • Выбрать элементы SECoordX и SECoordY (удерживая клавишу щелкнуть сначала на одном элементе, затем на другом – оба элемента будут отмечены рамочкой - это позволит настраивать общие события для выделенных элементов одновременно);
    • Настроить событие (вкладка Events в Object Inspector) onChange так, чтобы оно указывало на событие BOkClick (выбрать это событие из списка). Таким образом, для этих элементов событие onChange будет равносильно событию onClick для кнопки BOk – при смене координат сразу будет выполняться нажатие кнопки «Ok»;
    • Так как кнопка «Ok» обрабатывается автоматически можно сделать эту кнопку «невидимой» - изменить свойство Visible в значение false для объекта BOk. При запуске программы кнопка «Ok» видна не будет.
  1. Для реализации пункта 14b необходимо:
  • Добавить точку на экран – элемент Shape, вкладка Additional, значок ;
  • Изменить свойства этого элемента:
    • Name изменить на значение SPoint;
    • Shape изменить на stCircle;
    • Width изменить на 3 – ширина точки будет равна 3 пикселя;
    • Height изменить на 3 – высота точки.
  • Пересчитать начало координат «виртуальные» системы координат программы в координаты экрана (координаты экрана отсчитываются с верхнего левого угла экрана вниз и вправо):
    • Необходимо выяснить свойство Name для левого нижнего квадратика – пусть его имя ShapeN;
    • Элемент ShapeN имеет свои координаты левого верхнего угла – свойства Top и Left; также этот элемент имеет свойства ширины и высоты – Width и Height, таким образом, координаты начала координат равны: ShapeN.Left – ShapeN.Width и ShapeN.Top + 2*ShapeN.Height;
    • Рассчитать цену деления координатной сетки: для этого необходимо поделить длину и ширину квадратика на 5. ShapeN.Width div 5 даст шаг по координате X, а ShapeN.Height div 5 - по координатеY.
  • Изменить текст события BOkOnClick:
    • Щелкнуть на кнопке BOk;
    • В начале процедуры дописать текст присвоения «точке» (объект SPoint) новых координат – к началу координат добавить величину X или Y умноженную на шаг координате X или Y:
    • SPoint.Left := ShapeN.Left – ShapeN.Width + SECoordX.Value * (ShapeN.Width div5);
    • SPoint.Top := ShapeN.Top + 2*ShapeN.Height - SECoordY.Value * (ShapeN.Height div5);
  1. Запустить программу (клавиша )