Завдання. Створити програму-гру, в якій у випадковому місці з'являється
бульбашка
1. Імпортуй графічну бібліотеку tkinter.
from tkinter import *
2. Створи головне вікно root та розмісти команду для відображення вікна після
запуску програми.
root = Tk() # створення головного вікна (завжди називай головне вікно root!)
# команди
root.mainloop() # команда відображення вікна при запуску
3. Задай заголовок вікна «Спіймай бульбашку».
root.title('Спіймай бульбашку')
4. Створи два порожніх фрейми f1 та f2: перший використаємо для інформації
про кількість очків, а другий – для полотна з бульбашками.
f1 = Frame(root)
f1.pack(fill=BOTH)
f2 = Frame(root)
f2.pack(fill=BOTH)
5. У першому фреймі розмісти мітку points_label з текстом «Спіймано», задай
шрифр “Arial 15”.
points_label = Label(f1, text=___, font='Arial 15')
points_label.pack(side=LEFT)
6. Також у першому фреймі поклади мітку points, у якій буде відображатись
кількість очків (за замовчуванням поставимо значення 0).
points = Label(___, text='0', font='Arial 15')
points.pack(side=LEFT)
7. Створи у другому фреймі полотно для малювання шириною та висотою 500
(ширину та висоту визначимо наперед як змінну size).
size = 500
c = Canvas(___, width=size, height=size)
c.pack()
8. Бульбашки повинні бути різного розміру, який буде обиратися програмою
довільним чином з визначених меж. Для цього спершу підключимо модуль
random для генерації випадкових чисел.
from random import *
9. Створи функцію для появи бульбашок.
def balls():
global x, y, r, new_ball
colors = choice(['aqua', 'blue', 'fuchsia', 'green', 'maroon', 'orange', 'pink',
'purple', 'red', 'yellow', 'violet', 'indigo', 'chartreuse', 'lime'])
x = randint(0, size)
y = randint(0, size)
r = randint(10, size/5)
new_ball = c.create_oval(x - r, y - r, x + r, y + r, fill=colors)
root.after(1000, balls)
global означає, що змінні будуть вважатися глобальними (а не локальними),
тобто їх значення збережеться і після завершення роботи функції, і не буде
знищено, як це стається з усіма локальними змінними.
10. Здійсни виклик функції balls. Запусти програму і переконайся, що все
працює коректно.
balls()
Answers & Comments
Ответ: Ваш код містить правильні кроки для створення програми-гри "Спіймай бульбашку". Однак, він не містить функції для спіймання бульбашки, що є головною метою гри. Я запропоную вам додати декілька кроків для реалізації цієї функції:
Додай функцію для перевірки, чи координати курсора миші знаходяться всередині бульбашки. Якщо так, то бульбашка зникає, а на лічильнику очок додається одиниця.
def catch(event):
global points, new_ball
x1 = c.coords(new_ball)[0]
y1 = c.coords(new_ball)[1]
x2 = c.coords(new_ball)[2]
y2 = c.coords(new_ball)[3]
if x1 <= event.x <= x2 and y1 <= event.y <= y2:
c.delete(new_ball)
points['text'] = str(int(points['text']) + 1)
Додай прив'язку функції catch до події "натиснення миші на полотні".
c.bind('<Button-1>', catch)
Після додавання цих кроків ваша програма-гра повинна працювати наступним чином: випадкова бульбашка з'являється на полотні, і гравець має спробувати спіймати її, натиснувши на неї мишкою. Якщо гравець спіймав бульбашку, на лічильнику очок з'являється одиниця, і бульбашка зникає. Якщо гравець не спіймав бульбашку, вона залишається на полотні до наступного спробування. Крім того, програма безперервно генерує нові бульбашки з випадковими координатами та розмірами.
Объяснение: