Анимация. Отскок шарика от стен
Lighting/Colors
В текущей демо-сцене требуется создать шарик который движется отскакивая от стен. Все движения происходят под 45°
Объявим переменные необходимые для данной демо-сцены.
bool IsMovingLeft = false; // шарик двигается влево?
bool IsMovingUp = false; // шарик двигается вверх?
float BallX = 100; //текущая координата шарика по Х
float BallY = 100; // текущая координата шарика по Y
float BallRadius = 30; // радиус шарика для отрисовки
float Speed = 2; // скорость шарика
Обновим позицию шарика с учетом флагов IsMoving. В случае соприкосновения с одной из стен - переключим флаг на противоположный.
BallX += IsMovingLeft ? -Speed : Speed;
BallY += IsMovingUp ? -Speed : Speed;
if (BallX >= (ClientRectangle.Width - BallRadius) || BallX <= BallRadius)
IsMovingLeft = !IsMovingLeft;
if (BallY >= (ClientRectangle.Height - BallRadius) || BallY <= BallRadius)
IsMovingUp = !IsMovingUp;
Отрисуем шарик и обводку для него.
gr.FillEllipse(Brushes.Blue, BallX - BallRadius, BallY - BallRadius, BallRadius * 2, BallRadius * 2);
gr.DrawEllipse(Pens.Black, BallX - BallRadius, BallY - BallRadius, BallRadius * 2, BallRadius * 2);
Вставив и запустив данный пример мы увидим следующую анимацию:

Исходный код данного примера вы можете найти здесь
Упражнения
- Сделать несколько летающих шариков
- Сделать несколько летающих объектов (шарик, квадратик), с разными цветами и разной скоростью