Повні розв’язки, як у зошиті. Хочеш розібратися самостійно — під кожним завданням є «Пояснення з репетитором».
Сторінка 179
Завдання 21
Аналіз коду програми Ball
Завантажити файл Ball, запустити його та обговорити призначення позначених фрагментів коду (налаштування вікна, задавання положення м'яча, створення рамки ігрового поля).
Розв’язання
Ознайомтеся з кодом: перші рядки зазвичай містять імпорти бібліотек (`tkinter`, `math`) та створення екземпляра вікна (`root = tkinter.Tk()`).
Знайдіть команду створення Canvas, де вказано розміри вікна (`width`, `height`). Це налаштування вікна полотна.
Шукайте команди малювання кола (`create_oval` або `create_circle`) та присвоювання змінних координатам центру м'яча (`x`, `y`). Це задавання положення.
Знайдіть команду `canv.create_rectangle` (або подібну), яка малює прямокутник навколо Canvas або рамки. Це створення рамки ігрового поля.
Відповідь:
Фрагменти коду відповідають таким функціям: налаштування вікна полотна — команди створення вікна та Canvas; задавання положення м'яча — команди малювання кола з координатами центру; створення рамки ігрового поля — команда малювання прямокутника, що обмежує поле.
Завдання 22
Розбір фізики руху м'яча
Перевірити логіку коду програми Ball щодо зміни координат (x, y), відскоків від меж, збільшення швидкості падіння (гравітація) та втрати енергії при ударі об підлогу.
Розв’язання
Знайдіть присвоєння нових значень координатам: x=x+vx та y=y+vy. Це основний крок руху.
Перевірте умови `if`: якщо x або y виходять за межі вікна, то швидкість (vx або vy) змінює знак на протилежний (відскок).
Знайдіть рядок, де до вертикальної швидкості додається константа (наприклад, vy+=0,5). Це імітує гравітацію.
Знайдіть умову для удару об підлогу: якщо м'яч торкається низу (y≥висота), то vy стає від'ємною (напрям вгору) і зменшується за модулем, щоб симулювати амортизацію.
Відповідь:
Фізика руху реалізована через зміну координат на швидкість, інверсію знаку швидкості при виході за межі (відскок), постійне збільшення вертикальної швидкості (гравітація) та прискорення вгору зі зменшенням модуля при ударі об підлогу.
Завдання 23
Механізм анімації в коді
Визначити, які саме команди у коді програми Ball відповідають за видалення старого зображення, створення нового та забезпечення циклу анімації.
Розв’язання
Знайдіть рядок із командою видалення старого м'яча: `canv.delete('ball')` (або подібний тег). Це очищає екран перед оновленням.
Знайдіть команду малювання нового м'яча на нових координатах: `canv.create_oval(...)`.
Знайдіть виклик функції, що запускає наступну ітерацію циклу (наприклад, `root.after(30, update)`). Це забезпечує повторення процесу.
Відповідь:
Видалення старого зображення здійснюється командою видалення за тегом; створення нового — командою малювання фігури на нових координатах; анімація забезпечується циклічним викликом функції оновлення через `window.after()`.
Завдання 24
Призначення неочікуваних команд
Пояснити призначення команд у коді програми Ball, про які не йдеться прямо в тексті підручника (наприклад, налаштування кольору, товщини лінії або обробка подій).
Розв’язання
Перевірте аргументи команд малювання на наявність `fill` (заповнення) та `outline` (контур), що визначають кольори м'яча.
Знайдіть параметр `width`, який задає товщину лінії контуру фігури.
Шукайте команди `bind`, які прив'язують натискання клавіш або клік миші до функцій зміни швидкості м'яча.
Відповідь:
Команди, про які не йдеться в тексті, відповідають за налаштування кольору фігур (заповнення та контуру), товщини ліній та прив'язку подій (клік миші або клавіш) до змін стану об'єкта.