у сторону з довільною швидкістю.
Користувач також може перетягувати м'яч лівою кнопкою миші по його полю.
Вікно форми можна розтягнути, або розгорнути на весь екран.
Блок-схема програми
Блок-схема програми має вигляд (рис.2).
Рис.2. Блок-схема програми
Основний код програми
Наступним чином м'яч здійснює стрибки по полю.
public void timer1_Tick (object sender, EventArgs e)
{
// Створюється Bitmap, з якого буде малюватися м'яч.
bmp = new Bitmap (pictureBox1. Width, pictureBox1. Height); = Graphics. FromImage (bmp); = new Random ();
// При першому завантаженні, м'яч з'являється з випадкового місця поля.
if (l! = true) {= rand. Next (6, pictureBox1. Size. Width - 56); = rand. Next (6, pictureBox1. Size. Height - 56);
} = true; = pictureBox1. BackColor; = Color. Black; = new Pen (col1); = new Pen (col2, 6); redBrush = new SolidBrush (col1); white = new SolidBrush (col);
// Обчислення тертя за значеннями trackBar2 . Як видно, фронтальне зіткнення забирає більше енергії, ніж поперечне.
if (trackBar2. Value! = 0)
{= (trackBar2. Value - ((trackBar2. Value - 1) + (trackBar2. Value - 1)/10.0)) * 0.75; = (trackBar2. Value - ((trackBar2. Value - 1) + (trackBar2. Value - 1)/10.0)) * 0.95;
} {trenieX = 1; trenieY = 1;} + = gravity;
// Очищення поля.
g. Clear (pictureBox1. BackColor); + = moveX; + = moveY; = (float) X; = (float) Y;
// Отрісовка м'ячі.
g. DrawEllipse (black, X1, Y1, 50, 50);. FillEllipse (redBrush, X1, Y1, 50, 50);. Image = bmp;
// Перевірка зіткнення з межами поля.
if (X <= 0)
{= 0; = - moveX; * = trenieX; * = trenieY;
} (X> = pictureBox1. Size. Width - 56)
{= pictureBox1. Size. Width - 56; = - moveX; * = trenieX; * = trenieY;
} (Y <= 0)
{= 0; = - moveY; * = trenieX; * = trenieY;
} (Y> = pictureBox1. Size. Height - 56)
{= pictureBox1. Size. Height - 56; = - moveY; * = trenieX; * = trenieY;
} ((! pss) && (! tah))
{
// Змушуємо м'яч стрибнути.
if ((Math. Abs (moveX) <= 0.1 && Math. Abs (moveY) <= 0.86 && Da...