Постановка завдання
У прямокутній рамці, рівній поверхні екрану, рухаються N м'ячів, радіусами r1, ..., rn. Вони соударяются між собою, вдаряються об краї рамки. Початкове положення і вектор швидкості для кожного кулі випадкові. Написати програму, що моделює і відображає на екрані їх рух. Удари вважати абсолютно пружними, силу тертя не враховувати. br/>
Специфікація
Вхідні дані:
Інформація, що вводиться в спеціальному вікні: для кожного графічного об'єкта задається радіус, складові.
Вихідні дані:
Графічний інтерфейс у вигляді діалогового вікна дозволяє додавати м'ячі, під засобом виклику спеціального діалогового вікна, змінювати дані прямо в процесі роботи програми без її зупинки, переривати програму.
Програма повинна: ​​
Реалізувати переміщення n-ого кількості м'ячів які відштовхуються від кордонів заданій області і один від одного згідно з правилами пружного удару.
Методика рішення
Написання програми вироблялося в три основних етапи: розробка ієрархії класів, опис власне алгоритму програми, розробка графічного інтерфейсу та об'єднання двох перших пунктів в єдине ціле.
Завдання можна розбити на 3 блоки:
Завдання початкових параметрів (який відбувається в режимі діалогу).
Безпосередньо роботи програми, тобто реалізація пружного зіткнення м'ячів.
Можливість додавання об'єктів і зміни даних під час роботи програми.
Завдання початкових параметрів припускає, перш за все, ініціалізацію масиву об'єктів класу, визначення деяких характеристик кожного об'єкта відповідно до полями які приписані йому в описі класу.
Безпосередньо робота програми передбачає графічне відображення на екрані монітора зіткнення м'ячів з кордоном певній галузі і один з одним. Алгоритм реалізації даної частини програми буде описаний нижче. p align="justify"> Також у програмі реалізована можливість додавати, змінювати і видаляти м'ячі прямо в процесі виконання програми. Створення та видалення об'єктів відбувається під засобом виклику певних методів, а зміна властивостей кожного об'єкта за допомогою візуальних компонентів. br/>
Організація даних
У програмі описано два класи TBall і TBalls. p align="justify"> Клас TBall містить поля, методи і властивості. p align="justify"> Поля:
_x, _y: integer; - координати центру м'яча по x і y.
_rad: integer; - радіус м'ячі.
_color: integer; - колір м'яча.
_dx: integer; - вектор ...