В этом уроке я покажу вам как с легкостью сделать летающий шарик у себя на
форме. Ну что открываем Delphi, создаем новый проект. Нам понадобиться компонент
Shape с закладки Additional и компонент Timer с закладки System. Кидаем их на
форму, щелкаем по компоненту shape и меняем свойство shape на ctCircle теперь
вместо квадрата компонент примет форму круга. Все на этом предварительные
приготовления завершены начинаем кодить.
После ключевого слова var обьявлем 4 глобальные переменные типа single
PosX, Posy, VelX, Vely: single;
Создаем обработчик событий на форме (OnCreate) прост щелкнув по
ней 2 раза мышкой. Между begin end; пишем:
Posx:=3;
PosY:=5;
VelX:=2;
VelY:=2;
На данном этапе мы присваиваем ранее объявленным переменным
нужные значения.
Далее нам понадобиться создать одну не большую процедуру. После
ключевого слова private пишем
procedure shar();
Нажимаем сочетание клавиш Ctrl+Shift+C и Delphi автоматически
сгенерирует заготовку для нашей будущей процедуры. Забегая вперед открою вам не
большой секрет, именно эта процедура и будет отвечать за полет шарика. Ладно
немного отвлеклись, вставляем ниже приведенный код между словами begin end в
нашей процедуре.
// Текущая координата шарика + скорость
PosX:= PosX+VelX;
PosY:= PosY+VelY;
// Что бы шарик не вылетал за границы поля по ширине
// Если X координата шарика больше ширины формы - ширины самого //шарика то
if PosX > ClientWidth - Shape1.Width then
begin
//X координата шарика присвоит значение ширина формы - ширина //шарика
PosX:= ClientWidth - Shape1.Width;
// Включаем заднюю скорость) или меняем значение скорости на минус
VelX:= - VelX;
end
else if PosX < 0 then
begin
POsX:= 0;
VelX:= - VelX;
end;
// Здесь по аналогии только работаем с Y координатой
if PosY > ClientHeight - Shape1.Width then
begin
POsY:= ClientHeight - Shape1.Width;
VelY:= - VelY;
end
else if PosY < 0 then
begin
POsY:= 0;
VelY:= - VelY;
end;
// Перемещаем шарик в пространстве
Shape1.Left:= Round(PosX);
Shape1.Top:= Round(PosY);
Сейчас не стоит пугаться процедура не такая уж сложная как
кажется на первый взгляд. Если кто не понял что в ней происходит читайте
комментарии в коде. Кратко поясню что-же за переменные использованы в процедуре
Переменные PosX и PosY хранят координаты положение шарика в
пространстве, VelX и VelY отвечают за скорость его перемещения. ClientWidth,
ClientHeight - ширина и высота формы. Shape1.Width ширина шарика.
Ну что справились с процедурой ?! Ладно едим дальше свойство
Interval у таймера ставим 10, а свойство Enabled = true. Кликаем по компоненту
timer два раза и в обработчике событий пишем имя нашей процедуры
shar;
На этом все, запускаем проект и наслаждаемся результатом. А вот
что получилось у меня:
|