План програми,
що моделює злиття кругів
  1. Імпорт математичних функцій, генератора випадкових чисел і модуля tkinter:

    import math           # імпорт математичних функцій
    from random import  * # імпорт генератора випадкових чисел
    from tkinter import * # імпорт модуля tkinter
  2. Клас «Гра»:
    • надання значень розмірам прямокутної області (500×250);
    • надання значень початковій кількості кругів (20);
    • метод ініціалізації з порожнім списком кругів;
    • метод start (початок гри):
      • надання значення кількості тактів між відтвореннями зображень (33);
      • створення вікна з назвою "Злипання кругів";
      • створення полотна і розташування його у вікні;
      • створення кругів;
      • використання методу step (див. нижче);
      • запуск циклу опрацювання подій;
    • метод step:
      • для всіх кругів:
        • рух з можливим відбиванням від меж поля;
        • пошук номера круга, що «перетинає» даний з перетином;
        • при наявності «перетину» провести злиття кругів;
      • наступний виклик step через певну кількість тактів оновлення;
    • метод findball пошуку круга у списку за його номером;
    • метод mergeball злиття кругів b1 i b2:
      • вилучення зображень b1 і b2;
      • обчислення вектора швидкості і координат злиття;
      • обчислення розміру результату злиття;;
      • видалення одного з кругів;
      • випадкова зміна кольору результату злиття;
      • зображення результату злиття;
  3. Клас «Круг»:
    • надання значення початковому розміру круга;
    • список використаних кольорів;
    • метод ініціалізації:
      • випадковий вибір кольору;
      • self.canvas = canvas # визначення поля;
      • надання випадкових значень координатам і швидкості;
      • надання радіусу круга початкового значення;
      • розташування круга на полотні;
    • метод testoverlap перевірки умови зіткнення:
      • визначення поточних координат круга з допомогою методу coords;
      • пошук списку об'єктів, що мають перетин з поточним кругом;
      • знаходження у списку об'єкта, відмінного від поточного;
      • якщо об'єкт знайдено, повернути його, інакше повернути -1;
    • метод move руху кульки:
      • пружне відбиття від меж області;
      • прямолінійний рівномірний рух.
  4. Головна програма:
    • створення представника класу гри;
    • застосування до цього представника методу start (початок гри).