В этой статье на примерах описывается метод использования Delphi для достижения эффекта удара мяча, аналогичного эффекту пинбола. Нажмите кнопку «Старт», и зеленый шарик в форме продолжит ударять и перемещаться влево и вправо, а его размер будет постоянно меняться. Нажмите кнопку «Стоп», чтобы остановить мяч. Используйте мышь, чтобы перетащить регулятор регулировки в правом нижнем углу, чтобы отрегулировать скорость мяча.
Здесь мы в основном используем элементы управления «Таймер», «Панель», «TrackBar», «SpinEdit», «Форма» и «Кнопка». Основное внимание уделяется управлению таймером в Delphi. Во время работы программы элемент управления не виден и им нельзя манипулировать напрямую. Элемент управления Timer автоматически запускает событие OnTimer() через определенные промежутки времени. В этом примере он используется для запуска события движения мяча.
Идея дизайна: Основная проблема, которую решает данная программа, это как управлять движением мяча, а также скоростью и размером мяча во время движения. Используйте событие OnTimer() элемента управления Timer для управления движением мяча, используйте элемент управления TrackBar и элемент управления SpinEdit для регулировки скорости движения мяча; Мяч создается с помощью элемента управления Shape.
один. Новое строительство:
(1) Запустите программу Delphi 6.0. Выберите команду «Новый» в меню «Файл», выберите параметр «Приложение» во всплывающем подменю, и появится окно Form1 нового проекта.
(2) Выберите команду «Сохранить проект как» в меню «Файл», чтобы открыть диалоговое окно «Сохранить блок 1 как». В списке «Сохранить в» выберите имя каталога, в котором необходимо сохранить файл окна; введите имя файла в поле «Имя файла», введите здесь «Unit1» и нажмите кнопку «Сохранить». чтобы сохранить вышеуказанные параметры.
(3) После выполнения предыдущего шага появится диалоговое окно «Сохранить проект как». В списке «Сохранить в» выберите имя каталога, в котором необходимо сохранить проект. Лучше всего выбрать тот же каталог, что и на шаге (2), и введите имя файла; чтобы сохранить исходный код проекта. Введите здесь «Проект1» и нажмите кнопку «Сохранить», чтобы сохранить указанные выше параметры.
два. Некоторые настройки параметров:
(1) Активируйте окно Unit1, установите для свойства Caption формы значение «движущаяся сфера», а для свойства Color — значение «clMoneyGreen» на панели «Свойства».
(2) Выберите параметр «Панель» на странице «Стандарт», добавьте элемент управления «Панель» в форму, настройте его соответствующий размер и положение и установите для свойства «Имя» элемента управления на панели «Свойства» значение «Panel1», а для свойства BevelInner — «Panel1». значение «bvLowered», BevelOuter — «blNone», BorderStyle — «bsSingle», а свойство Color — «clSkyBlue».
(3) Выберите параметр «Таймер» на странице «Система», добавьте в форму элемент управления «Таймер» и установите для его свойства «Интервал» значение 1, а для свойства «Имя» — «Таймер1» на панели «Инспектор объектов».
(4) Выберите параметр «Форма» на странице «Дополнительно», добавьте элемент управления «Форма» на Panel1 в форме, установите для его свойства «Показать подсказку» значение «True», а для свойства «Подсказка» — значение «Спортивная сфера» на панели «Свойства». Свойство Brush.Color имеет значение ClLime, а его свойство Shape имеет значение «slCircle».
(5) Выберите параметр «Кнопка» на странице «Стандарт», добавьте в форму три элемента управления «Кнопка» и настройте их соответствующий размер и положение. Установите для свойства «Заголовок» на панели «Свойства» значения «Пуск», «Стоп» и «Выход» соответственно.
(6) Выберите параметр TrackBar на странице Win 32, добавьте элемент управления TrackBar в форму и настройте его соответствующий размер и положение. Установите соответствующие свойства на панели «Свойства».
(7) Выберите параметр SpinEdit в разделе «Образцы», добавьте элемент управления SpinEdit в форму и настройте его соответствующий размер и положение. Установите соответствующие свойства на панели «Свойства».
3. Анализ кода:
(1) Чтобы реализовать функцию перемещения мяча вперед и назад, необходимо установить глобальную переменную, то есть целое число I. Начальное значение I равно 1. При I=1 шар движется влево, а при ударе о левую стенку панели значение I становится равным 2. В это время шар движется вправо и при ударе о правую стенку панели , значение I снова становится 1. Таким образом, за счет изменения величины I реализуется возвратно-поступательное движение мяча. Эта часть кода находится в событии OnTimer:
процедура TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position //Устанавливаем временной интервал срабатывания элемента управления Timer if i=1 then //Мяч движется влево Beginif shape1.left>0 thenbeginshape1; .left: =shape1.left-10; //Изменяем положение шара shape1.Width:=(shape1.Width+1)mod 70; //Изменяем ширину прямоугольника, в котором находится мяч shape1.Height:=(shape1.Height+1)mod 70 //Изменяем высоту прямоугольника, в котором находится мяч endelsei:=2; //Перемещаем; мяч вправо; если i=2, тоbeginif shape1.left<(panel1.Width-shape1.Width-5) thenbeginshape1.left:=shape1.left+10; //Изменяем положение шара shape1.Width:=(shape1.Width+1)mod 70;//Изменяем ширину прямоугольника, в котором находится шар shape1.Height:=(shape1.Height+1)mod 70 ;/ /Изменить высоту прямоугольника, в котором находится шарикendelsei:=1;end;end;
(2) Кнопки «Старт» и «Стоп» контролируют движение мяча. Фактически они контролируют работу таймера:
процедура TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Устанавливаем интервал срабатывания элемента управления таймером Timer1.Enabled:=true; //Шар начинает двигатьсяend;procedure TForm1.Button2Click(Sender) : TObject);beginTimer1.Enabled:=False //Мяч перестает двигатьсяend;
(3) Два элемента управления TrackBar и SpinEdit управляют скоростью движения мяча. Соответствующие коды следующие:
процедура TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //Изменяем скорость движенияend;procedure TForm1.TrackBar1Change(Sender: TObject);beginspinEdit1.value:=trackbar1.Position; //Изменяем полосу трека; value Уведомить элемент управления SpinEdit об отправке изменений;
4. Полный код пинбола Delphi выглядит следующим образом:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, StdCtrls, Spin;typeTForm1 = class(TForm)Panel1: TPanel;Button1: TButton;Button2: TButton;TrackBar1: TTrackBar;Timer1 : ТТаймер;Форма1: TShape;SpinEdit1: TSpinEdit;Button3: TButton;процедура Timer1Timer(Sender: TObject);процедура Button1Click(Sender: TObject);процедура Button2Click(Sender: TObject);процедура SpinEdit1Change(Sender: TObject);процедура TrackBar1Change(Sender: TObject); процедура Button3Click(Отправитель: TObject);private{ Частные объявления }public{ Публичные объявления }end;varForm1: TForm1;i:integer;реализация{$R *.DFM}процедура TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Устанавливаем временной интервал срабатывания элемента управления «Таймер», если i=1, то //Мяч движется влево, Beginif shape1.left>0 thenbeginshape1.left:=shape1.left-10; //Изменяем положение шара shape1.Width:=(shape1.Width+1)mod 70;//Изменяем ширину прямоугольника, в котором находится шар shape1.Height := (shape1.Height+1)mod 70;//Изменяем высоту прямоугольника, в котором находится мячendelsei:=2; //Мяч перемещается к правому концу;if i=2 thenbeginif shape1.left<(panel1.Width-shape1.Width-5) thenbeginshape1.left:=shape1.left+10; //Изменяем положение шара shape1.Width:=(shape1.Width+1)mod 70 / /Изменить ширину прямоугольника, в котором находится шар shape1.Height:=(shape1.Height+1)mod 70;//Изменяем высоту прямоугольника, в котором находится шарикendelsei:=1;end;end;procedure TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Устанавливаем временной интервал срабатывания элемент управления «Таймер» Timer1 .Enabled:=true; //Мяч начинает двигатьсяend;procedure TForm1.Button2Click(Sender: TObject);beginTimer1.Enabled:=False; //Мяч перестает двигатьсяend;procedure TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //Изменяем скорость движенияend;procedure TForm1.TrackBar1Change(Sender : TObject);beginspinEdit1.value:=trackbar1.Position; //Уведомляем элемент управления SpinEdit об изменениях значения Trackbarend;procedure TForm1.Button3Click(Sender: TObject);beginclose; //Exitend;initializationi:=1;end.