Практична робота №19. Моделювання руху об’єкта на Python

Моделювання фізичних процесів — це одна з найцікавіших сфер програмування. Воно дозволяє візуалізувати абстрактні закони фізики та побачити, як математичні формули перетворюються на рух на екрані. У цій практичній роботі ми створимо програму, яка моделює рух об’єкта (наприклад, м’яча або авто) у графічному вікні.

Підготовка: перевірка середовища розробки

Перед початком роботи переконайтеся, що на вашому комп’ютері встановлено Python.

  1. Відкрийте термінал або командний рядок.
  2. Введіть команду python --version або python3 --version.
  3. Якщо ви отримали відповідь з номером версії (наприклад, Python 3.12.x), ви готові до роботи.

Для створення графічного інтерфейсу ми використаємо стандартний модуль Tkinter. Він входить до складу Python і не потребує окремого встановлення.


Теоретична основа моделювання

Рух об’єкта в програмуванні — це послідовна зміна його координат через певні проміжки часу. Найпростіший вид руху — рівномірний прямолінійний рух.

Формула розрахунку координати:

X = X0 + v *t

Де:

  • x0— початкова позиція.
  • V — швидкість.
  • t — час.

У графічному вікні ми використовуємо метод canvas.move(object, dx, dy), де dx та dy — це зміщення об’єкта по осях X та Y за один крок анімації.


Етапи виконання практичної роботи

Проєкт складається з трьох частин: створення полотна (Canvas), малювання об’єкта та написання циклу анімації.

1. Створення графічного полотна

Для візуалізації руху нам потрібен віджет Canvas. Це цифрове полотно, на якому можна малювати геометричні фігури.

2. Опис руху через функцію

Щоб об’єкт рухався плавно, ми створимо рекурсивну функцію, яка змінює координати та викликає саму себе через короткий проміжок часу (наприклад, кожні 10–20 мілісекунд).

Повний код програми

Python

import tkinter as tk

def start_motion():
    # Рухаємо об'єкт (ball) на 5 пікселів по горизонталі та 0 по вертикалі
    canvas.move(ball, 5, 0)
    
    # Отримуємо поточні координати об'єкта
    pos = canvas.coords(ball)
    
    # Якщо об'єкт не вилетів за межі вікна (600px), продовжуємо рух
    if pos[2] < 600:
        root.after(20, start_motion) # Повтор через 20 мс

# 1. Налаштування головного вікна
root = tk.Tk()
root.title("Моделювання руху об’єкта")

# 2. Створення полотна
canvas = tk.Canvas(root, width=600, height=400, bg="white")
canvas.pack()

# 3. Створення об'єкта (червоне коло)
# Координати: x1, y1, x2, y2
ball = canvas.create_oval(10, 180, 50, 220, fill="red")

# 4. Кнопка для запуску анімації
btn_start = tk.Button(root, text="Запустити рух", command=start_motion)
btn_start.pack(pady=10)

root.mainloop()

Розбір ключових команд

  • canvas.create_oval(x1, y1, x2, y2, ...): створює коло або еліпс. Параметри — це координати верхнього лівого та нижнього правого кутів прямокутника, в який вписано овал.
  • canvas.move(item, dx, dy): переміщує графічний об’єкт на вказану відстань від його поточної позиції.
  • root.after(ms, function): головний інструмент анімації в Tkinter. Він каже програмі зачекати ms мілісекунд, а потім виконати функцію function.

Завдання для самостійного опрацювання (Level Up)

Щоб отримати вищий бал за практичну роботу, спробуйте модифікувати код:

  1. Зміна швидкості: Додайте поле введення (Entry), щоб користувач міг сам задавати швидкість руху об’єкта.
  2. Відскок: Змініть логіку так, щоб при досягненні краю вікна об’єкт починав рухатися у зворотному напрямку (ефект відскоку від стіни).
  3. Гравітація: Спробуйте додати зміщення по осі $Y$ (dy), яке збільшується з кожним кроком, щоб імітувати падіння об’єкта під дією сили тяжіння.

Висновок

Моделювання руху в Python — це не лише про картинки, що рухаються. Це спосіб навчитися керувати станом програми в часі. Розуміння роботи циклу анімації та методу after є фундаментом для створення майбутніх ігор та складних наукових моделей.

,