ЗНАЕТЕ ЛИ ВЫ?

Создание проектов с использованием таймера



 

Пример. Создать проект «Летающая тарелка», в котором по ночному небу перемещается летающая тарелка. При вылете тарелки за правую границу окна, она должна вновь появиться у его левой границы.

 

Спроектируем графический интерфейс проекта подобно рис. 122, установив следующие свойства компонентов:

- для формы TForm: Color = clBlack, Height = 735, Width = 550, AutoScroll = false.

- для изображения тарелки TImage: Stretch = true, Proportional = true.

- для таймера TTimer: Interval = 200.

 

Рис. 122 Графический интерфейс проекта «Летающая тарелка»

 

При движении тарелки меняется её позиция относительно левого края окна. Для изменения этой позиции применим следующий оператор Image1.Left:=Image1.Left+h, где h – случайная величина. Если расстояние от левой границы до тарелки станет больше, чем размеры окна, то тарелку вернем на исходную позицию. Для этого используем условный оператор:

ifImage1.Left>= Form1.Width thenImage1.left:=1.

Текст программного кода обработчика события OnTimer будет следующим:

 

procedure TForm1.Timer1Timer(Sender: TObject);
begin
randomize;
//задаем для переменной h одно из 15 возможных состояний
h:=random(15);
Image1.Left:=Image1.Left+h; //движение тарелки
ifImage1.Left>=Form1.Width thenImage1.Left:=1;
end;

 

Добавим в проект мерцающие звезды, которые появляются и исчезают случайным образом. Звезды помещаем в компоненты TImage 2 – Timage 16.

 

Рис. 123 Графический интерфейс проекта «Летающая тарелка»

 

Для создания эффекта мерцания используем генератор случайных чисел. Каждой звезде ставим в соответствие переменную, способную случайным образом принимать значения 0 или 1. Если переменная равна единице, то звезду делаем видимой с помощью свойства Visible (Image2.Visible: = true). Если в переменной окажется ноль, то звезда становится невидимой (Image2.Visible: = false).

 

procedure TForm1.Timer1Timer(Sender: TObject);
begin
randomize;
//задаем для переменных х1, х2 и т.д. одно из двух возможных состояний
x1:=random(2);
x2:=random(2);
x3:=random(2);
x4:=random(2);
x5:=random(2);
x6:=random(2);
x7:=random(2);
x8:=random(2);
x9:=random(2);
x11:=random(2);
x12:=random(2);
x13:=random(2);
x14:=random(2);
x15:=random(2);
x16:=random(2);
{Если переменная принимает значение, равное 1, то звезду видно, иначе – нет}
ifx1=1 then image2.Visible:=true else image2.Visible:=false;
ifx2=1 then image3.Visible:=true else image3.Visible:=false;
ifx3=1 then image4.Visible:=true else image4.Visible:=false;
ifx4=1thenimage5.Visible:=true else image5.Visible:=false;
ifx5=1 then image6.Visible:=true else image6.Visible:=false;
ifx6=1 then image7.Visible:=true else image7.Visible:=false;
ifx7=1 then image8.Visible:=trueelseimage8.Visible:=false;
ifx8=1 then image9.Visible:=trueelseimage9.Visible:=false;
if x9=1 then image10.Visible:=true else image10.Visible:=false;
ifx11=1 then image11.Visible:=true else image11.Visible:=false;
ifx12=1thenimage12.Visible:=trueelse image12.Visible:=false;
if x13=1thenimage13.Visible:=trueelse image13.Visible:=false;
if x14=1thenimage14.Visible:=trueelse image14.Visible:=false;
if x15=1thenimage15.Visible:=trueelse image15.Visible:=false;
ifx16=1 then image16.Visible:=trueelse image16.Visible:=false;
//задаем для переменной h одно из 15 возможных состояний
h:=random(15);
Image1.Left:=Image1.Left+h; //движение тарелки
ifImage1.Left>=Form1.Width thenImage1.Left:=1;
end;

 

Данный проект можно усложнить, задав не просто мерцание звезд, а их развитие. Звезда появляется на небе, увеличивается в размерах, затем сжимается и гаснет.

Чтобы показать жизнь звезд, необходимо для каждой звезды создать свой таймер со следующими свойствами: Enabled = false, Interval = 1500. При этом у изображений Image2-Image16 следует установить свойства Visible = false, Stretch = true.

В обработчике события OnTimer для первой звезды Image2 введем переменную-индикатор k, которая будет показывать состояние звезды. Если k = 1, то звезда должна появиться на небе, то есть стать видимой: Image2.Visible:=True. При k = 2 звезда увеличивает свои размеры. Ширину и длину объекта Image2 нужно увеличить на определенное значение: Image2.Width:=Image2.Width+10; Image2.Height:=Image2.Height + 10. Если k = 3, то звезда сжимается. Для этого следует уменьшить размеры звезды. При k = 4 звезда гаснет, то есть становится невидимой: Image2.Visible:=false.

Текст программы обработчика события для компонента Timer2 будет следующим:

 

procedure TForm1.Timer2Timer(Sender: TObject);
begin
k:=k+1;
if k=1 thenImage2.Visible:=true;
if k=2 then
begin
Image2.Width:=Image2.Width+10;
Image2.Height:=Image2.Height+10;
end;
if k=3 then
begin
Image2.Width:=Image2.Width-15;
Image2.Height:=Image2.Height-15;
end;
if k=4 then Image2.Visible:=false;
ifk=5 thenk:=1;
end;

 

Аналогичные обработчики событий OnTimer будут у каждой звезды. Например, у второй звезды Image3 текст программы обработчика события для Timer3 будет следующим:

 

procedure TForm1.Timer3Timer(Sender: TObject);
begin
j:=j+1;
if j=1 thenImage3.Visible:=true;
if j=2 then
begin
Image3.Width:=Image3.Width+10;
Image3.Height:=Image3.Height+10;
end;
if j=3 then
begin
Image3.Width:=Image3.Width-15;
Image3.Height:=Image3.Height-15;
end;
if j=4 then Image3.Visible:=false;
ifj=5 thenk:=1;
end;

 

Звезды развиваются независимо друг от друга. Добавим на форму еще один компонент TTimer (Timer17), который включает предыдущие таймеры независимо друг от друга. Установим у этого таймера следующие свойства: Enabled = true, Interval = 500. В обработчике события для Timer17 с помощью случайной переменной n задается работа каждого из компонентов Timer2-Timer16.

Если n=1, то включается компонент Timer2 у первой звезды Image2: Timer2.Enabled:=true. После однократного выполнения обработчика события для Timer2, необходимо подготовить его к повторному действию. Для этого изображение Image2 должно стать видимым и вернуть свои начальные размеры: Image2.Visible:=true, Image2.Wight:=12, Image2.Height:=12. Аналогично включаются остальные таймеры.

Текст программы обработчика события для Timer17 будет следующим:

 

procedure TForm1.Timer17Timer(Sender: TObject);
begin
n:=random(20);
if n=1 then
begin
Timer2.Enabled:=true;
Image2.Visible:=true;
Image2.Wight:=12;
Image2.Height:=12;
end;
if n=2 then
begin
Timer3.Enabled:=true;
Image3.Visible:=true;
Image3.Wight:=12;
Image3.Height:=12;
end;
if n=3 then
begin
Timer4.Enabled:=true;
Image4.Visible:=true;
Image4.Wight:=12;
Image4.Height:=12;
end;
// аналогично для остальных n.
end;

 

Полностью текст проекта «Летающая тарелка» с добавлением проекта «Жизнь звезд» выглядит следующим образом:

 

procedure TForm1.Timer1Timer(Sender: TObject);
begin
randomize;
h:=random(15);
Image1.Left:=Image1.Left+h;
ifImage1.Left>=Form1.Width thenImage1.Left:=1;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
k:=k+1;
if k=1 thenImage2.Visible:=true;
if k=2 then
begin
Image2.Width:=Image2.Width+10;
Image2.Height:=Image2.Height+10;
end;
if k=3 then
begin
Image2.Width:=Image2.Width-15;
Image2.Height:=Image2.Height-15;
end;
if k=4 then Image2.Visible:=false;
ifk=5 thenk:=1;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
j:=j+1;
if j=1 thenImage3.Visible:=true;
if j=2 then
begin
Image3.Width:=Image3.Width+10;
Image3.Height:=Image3.Height+10;
end;
if j=3 then
begin
Image3.Width:=Image3.Width-15;
Image3.Height:=Image3.Height-15;
end;
if j=4 then Image3.Visible:=false;
ifj=5 thenk:=1;
end;
// аналогично для компонентов Timer4-Timer16
procedure TForm1.Timer17Timer(Sender: TObject);
begin
n:=random(20);
if n=1 then
begin
Timer2.Enabled:=true;
Image2.Visible:=true;
Image2.Wight:=12;
Image2.Height:=12;
end;
if n=2 then
begin
Timer3.Enabled:=true;
Image3.Visible:=true;
Image3.Wight:=12;
Image3.Height:=12;
end;
if n=3 then
begin
Timer4.Enabled:=true;
Image4.Visible:=true;
Image4.Wight:=12;
Image4.Height:=12;
end;
// аналогично для остальных n.
end;
End.

Задания

1. Создать программу, в которой происходит запуск ракеты.

 

Рис. 124 Графический интерфейс проекта

 

2. Составить программу, в которой по дороге движется автомобиль. Если автомобиль уезжает за пределы окна, то он должна появиться снова у левой границы.

3. Создать проект, в котором один автомобиль едет за другим и обгоняет его.

4. Составить программу, в которой помещенный на форму квадрат постепенно растет. Если размеры квадрата превысят размеры окна, то квадрат должен вновь стать маленьким.

5. Создать программу, в которой навстречу друг другу летят два космических корабля. При столкновении этих кораблей происходит взрыв и от кораблей остаются только обломки.

 

 

Литература

1. Бадд Т. Объектно-ориентированное программирование в действии. – СПб.: изд-во «Питер», 2008

2. Бобровский С.И. Delphi 7. Учебный курс. – СПб.: изд-во Питер, 2008. – 736 с.

3. Боровский А.Н. Программирование в Delphi. – СПб.:«БХВ-Петербург», 2005 – 446 с.

4. Вострокнутов И.Е. Основы программирования в Турбо Паскаль. Ядро. Учебное пособие для Школы программистов СГА. – М.: Современная гуманитарная академия. 88 с.

5. Гейн А.Г. и др. Информатика, 10 – 11 кл. – СПб.: изд-во «Питер», 2005.

6. Голицына О.Л., Попова И.И. Основы алгоритмизации и программирования: учеб. пособие. – М.: Форум: ИНФРА-М, 2002.

7. Гофман В., Хомоненко А. Delphi. Быстрый старт. – СПб.:«БХВ-Петербург», 2003 – 288 с.

8. Каймин В.А. Информатика: учебник. – М.: изд-во «ИНФРА-М», 2000.

9. Лапчик М.П., Семакин И.Г., Хеннер Е.К. Методика преподавания информатики: учеб. пособие для студентов пед. вузов. – М.: Изд-й центр «Академия», 2005.

10. Макарова Н.В. Информатика, 10 кл. – СПб.: «Питер», 2005.

11. Пестриков В.М. Маслобоев А.Н. Delphi на примерах. – Спб.: .:«БХВ-Петербург», 2005 – 496 с.

12. Семакин И.Г., Хеннер Е.К. Информатика, 10 кл. – М.: изд-во «БИНОМ», 2005.

13. Семакин И.Г., Шестаков А.П. Основы программирования: Учебник. – М.: Высшая школа, 2001.

14. Угринович Н.Д. Информатика и информационные технологии: Учебник для 10-11 классов. – М.: БИНОМ. Лаборатория знаний, 2005. – 511 с.

15. Угринович Н.Д. Информатика и ИКТ: Учебник для 10 класса. Профильный уровень. – М.: БИНОМ. Лаборатория знаний, 2007. – 371 с.

16. Фаронов В.В. Delphi 4. Учебный курс. – М.: «Нолидж», 1998, - 464 с.

17. Фленов М. Е. Библия для программиста в среде Delphi. – СПб.:«БХВ-Петербург», 2008 – 799 с.

18. Фленов М. Е. Программирование в Delphi глазами хакера. - СПб.:«БХВ-Петербург», 2003 – 368 с.

19. Шауцукова Л.З. Информатика: учеб. пособие для 10–11 кл. общеобразоват. учреждений. – М.: «Просвещение», 2002.

20. Единая система программной документации. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. ГОСТ 19.701-90 (ИСО 5807-85). – М.: Издательство стандартов, 1991.

21. Иллюстрированный самоучитель по Delphi 7 для начинающих. – СПб,: «Питер», 2001 – 496 с.

22. Конспекты уроков по информатике в 9-11 классах: практикум по программированию/авт.-сост. А.А. Чернов. – Волгоград: изд-во «Учитель», 2006.

23. Сборник задач по курсу информатики/под редакцией Л.И. Белоусовой. – М.: Издательство «Экзамен», 2007. – 253 с.

24. Языки программирования в школе – Викиучебник.

 

 

Приложение 1

Таблица 10. Пиктографические кнопки

Кнопка Реализуемое кнопкой действие
Группа Standard
Создает новый проект. Эквивалент опции File/New.
Открывает существующий файл. Эквивалент опции File/Open File
Сохраняет текущий модуль. Эквивалент опции File/Save
Сохраняет все модули проекта. Эквивалент опции File/Save All
Открывает созданный ранее проект программы. Эквивалент опции File/Open Project
Добавляет новый файл к проекту. Эквивалент опции File/Add File.
Удаляет файл из проекта. Эквивалент опции File/Remove File.
Группа View
Выбирает модуль из списка модулей, связанных с текущем проектом. Эквивалент опции View/Units.
Выбирает форму из списка форм, связанных с текущим проектом. Эквивалент опции View/Forms.
Переключает активность между окном формы и окном кода программы. Эквивалент опции View/Toggle Form/Unit.
Создает новую форму и добавляет её к проекту. Эквивалент опции File/New Form.
Группа Debug
Компилирует и выполняет программу. Эквивалент опции Run/Run.
Реализует паузу в работе отлаживаемой программы. Эквивалент опции Run/Program Pause.
Осуществляет пошаговую трассировку программы с прослеживанием работы вызываемых подпрограмм. Эквивалент опции Run/Trace Info.
Осуществляет пошаговую трассировку программы, но не прослеживает работы вызываемых подпрограмм. Эквивалент опции Run/Step Over.
Группа Custome
Открывает доступ к встроенной справочной службе. Эквивалент опции Help/Contents.

Приложение 2

Таблица 11. Панель компонентов Standard

Компонент Внешний вид Назначение
Надпись (TLabel) Предназначен для размещения на форме различного рода текстовых надписей.
Текстовое поле (TEdit) Предназначен для ввода однострочного текста.
Кнопка (TBotton) Используется для управления программой.
Текстовая область (TMemo) Предназначен для ввода, редактирования и отображения многострочного текста
Флажок (TCheckBox) Используется для фиксации включенного или выключенного состояния (одного из двух).
Переключатель (TRadioButton) Предназначен для выбора одного значения из ряда возможных.
Группа переключателей (TRadioGroup) Специальный контейнер для размещения переключателей
Список выбора (TListBox) Позволяет выбрать одну или несколько строк в списке.
Выпадающий список (TComboBox) Вариант списка с дополнительным полем, в котором отображается выбранный элемент списка.
Панель (TPanel) Контейнер общего назначения.
Группа компонентов (TGroupBox) Контейнер для размещения управляющих элементов с одинаковыми функциями.
Полоса прокрутки (TScrollBar) Используется как вспомогательный инструмент в других элементах управления, может применяться в качестве ползунка.
Главное меню (TMainMenu) Предназначен для создания главного меню
Контекстное меню (TPopupMenu) Предназначен для создания контекстного меню

Приложение 3

Таблица 12. Некоторые компоненты панелей Additional и System

Компонент Внешний вид Назначение
Панель Additional (дополнительные компоненты)
Кнопка с картинкой (TBitBtn) Предназначен для создания кнопки с картинкой.
Быстрая кнопка (TSpeedButton) Используется для формирования панелей управления с «быстрыми» командными кнопками.
Шаблон ввода (TMaskEdit) Позволяет вводить данные в текстовое поле по заданному шаблону.
Рамка (TBevel) Используется для создания рамок и линий оформления.
Изображение (TImage) Предназначен для размещения на форме изображений.
Фигура (TShape) Предназначен для отображения на форме геометрических фигур.
Панель System (системные компоненты)
Таймер (TTimer) Используется для отсчета интервалов реального времени.
Мультимедийный проигрыватель (TMediaPlayer) Предназначен для воспроизведения музыкальных и видеоклипов.
Область рисования (TPainBox) Окно с канвой для рисования изображений.

 

 

И.Е. Вострокнутов, Н.Г. Саблукова

 

Программирование в среде Delphi.

Ч.1 Основные команды. Первые проекты.

 

Подписано в печать 27.05.10

Формат 60´90/16. Бумага офсетная.

Усл. печ. листов 5,6.

Тираж 1000. Заказ № 108

Участок офсетной печати: 607220, г. Арзамас, Нижегородской области, ул. К.Маркса, 36





Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.234.255.5 (0.012 с.)