Преврашаем shape в мяч

В этом уроке я покажу вам как с легкостью сделать летающий шарик у себя на форме. Ну что открываем 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;

На этом все, запускаем проект и наслаждаемся результатом.
Теги:
shape
Добавлено: 02 Августа 2018 07:40:11 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...