# Завдання: скласти ігрову програму Ловець бульбашок.
# На ігровому полотні кожні 0,2 с виникають бульбашки.
# Гравець знищує бульбашки, клацаючи їх. Якщо кількість
# бульбашок у вікні перевищує 30, гра припиняється.
# У заголовку вікна можна побачити результат.
#
from tkinter import*
from random import randint
import time #
tk=Tk()
cnv=Canvas(tk, width=800, height=600)
cnv.config(bg="Sky Blue")
cnv.pack()
num=0
class Bub:
def __init__(self, id, r, dx, dy):
self.r = r
self.dx = dx
self.dy = dy
self.id = id
my_bub=[]
def create_bubble():
r=randint(10, 20)
x=randint(20,780)
y=randint(20,480)
id1=cnv.create_oval(x-r,y-r,x+r,y+r,fill="white")
dx=randint(-2,2)
my_bub.append(Bub(id1,r,dx,dx+1))
def move_bubbles(): # зміна координат об'єктів зі списку на dx, dy
for i in my_bub:
cnv.move(i.id,i.dx,i.dy)
def get_coords(id_num): # визначаємо координати центра круга
pos=cnv.coords(id_num)
x=(pos[0]+pos[2])/2
y=(pos[1]+pos[3])/2
return x,y
def clean_up_bubs(): # перевіряємо чи не виходить елемент
списку за межі вікна
for i in my_bub:
x,y=get_coords(i.id)
if x<20 or x>780:
i.dx=-1*i.dx
if y<20 or y>480:
i.dy=-1*i.dy
def click(event):
global num
x=event.x
y=event.y
for i in range(len(my_bub)-1):
x1,y1=get_coords(my_bub[i].id)
if (abs(x-x1)+abs(y-y1))/2<my_bub[i].r:
cnv.delete(my_bub[i].id)
del my_bub[i]
num=num+1
tk.title(num)
return
cnv.bind("<1>", click)
while len(my_bub)<30:
if randint(1,20)==1:
create_bubble()
move_bubbles()
clean_up_bubs()
tk.update()
time.sleep(0.02)
tk.title("CAME OVER Ваш результат - "+str(num))
cnv.unbind("<1>") # Припинення обробки подій
Завдання
1.Виконати код програми декілька разів і добитися максимальної кількості захлопнутих бульбашок
2. Доповнити код програми коментарями
Зауваження.
Код програми взято з підручника з інформатики 7 клас Бондаренко 2019 стор 78
Підручник можна скачати з мого блогу
http://pishachok.blogspot.com/p/blog-page_27.html
У підручнику детально розписано код цієї програми у вигляді коментарів
3. Змініть періодичність виникнення кульок змінюючи параметр sleep(...)
4. Змініть колір заливки та колір контуру бульбашок
5. Текст програми з коментарями та скриншот результату роботи програми відправити у класрум
Запитання
1. З допомогою якого класу створюють об'єкти бульбашок ?
2. Чим відрізняється метод def __init__(...) від інших методів ?
3. Що є елементами списку my_bub[...] ?
4. Який метод дає можливість визначати координати бульбашки ?
5. З допомогою якого методу заповнюють список my_bub[...] ?
6. Який метод забезпечує рух бульбашок ?
7. Який метод забезпечує реакцію програми на клік мишки ?
8. Який метод вилучає бульбашку на яку клікнули ?
9. Яку дію виконує метод update() ?
10. Який метод забезпечує виведення значення num(кількості результативних кліків) у заголовок вікна ?
# На ігровому полотні кожні 0,2 с виникають бульбашки.
# Гравець знищує бульбашки, клацаючи їх. Якщо кількість
# бульбашок у вікні перевищує 30, гра припиняється.
# У заголовку вікна можна побачити результат.
#
from tkinter import*
from random import randint
import time #
tk=Tk()
cnv=Canvas(tk, width=800, height=600)
cnv.config(bg="Sky Blue")
cnv.pack()
num=0
class Bub:
def __init__(self, id, r, dx, dy):
self.r = r
self.dx = dx
self.dy = dy
self.id = id
my_bub=[]
def create_bubble():
r=randint(10, 20)
x=randint(20,780)
y=randint(20,480)
id1=cnv.create_oval(x-r,y-r,x+r,y+r,fill="white")
dx=randint(-2,2)
my_bub.append(Bub(id1,r,dx,dx+1))
def move_bubbles(): # зміна координат об'єктів зі списку на dx, dy
for i in my_bub:
cnv.move(i.id,i.dx,i.dy)
def get_coords(id_num): # визначаємо координати центра круга
pos=cnv.coords(id_num)
x=(pos[0]+pos[2])/2
y=(pos[1]+pos[3])/2
return x,y
def clean_up_bubs(): # перевіряємо чи не виходить елемент
списку за межі вікна
for i in my_bub:
x,y=get_coords(i.id)
if x<20 or x>780:
i.dx=-1*i.dx
if y<20 or y>480:
i.dy=-1*i.dy
def click(event):
global num
x=event.x
y=event.y
for i in range(len(my_bub)-1):
x1,y1=get_coords(my_bub[i].id)
if (abs(x-x1)+abs(y-y1))/2<my_bub[i].r:
cnv.delete(my_bub[i].id)
del my_bub[i]
num=num+1
tk.title(num)
return
cnv.bind("<1>", click)
while len(my_bub)<30:
if randint(1,20)==1:
create_bubble()
move_bubbles()
clean_up_bubs()
tk.update()
time.sleep(0.02)
tk.title("CAME OVER Ваш результат - "+str(num))
cnv.unbind("<1>") # Припинення обробки подій
Завдання
1.Виконати код програми декілька разів і добитися максимальної кількості захлопнутих бульбашок
2. Доповнити код програми коментарями
Зауваження.
Код програми взято з підручника з інформатики 7 клас Бондаренко 2019 стор 78
Підручник можна скачати з мого блогу
http://pishachok.blogspot.com/p/blog-page_27.html
У підручнику детально розписано код цієї програми у вигляді коментарів
3. Змініть періодичність виникнення кульок змінюючи параметр sleep(...)
4. Змініть колір заливки та колір контуру бульбашок
5. Текст програми з коментарями та скриншот результату роботи програми відправити у класрум
Запитання
1. З допомогою якого класу створюють об'єкти бульбашок ?
2. Чим відрізняється метод def __init__(...) від інших методів ?
3. Що є елементами списку my_bub[...] ?
4. Який метод дає можливість визначати координати бульбашки ?
5. З допомогою якого методу заповнюють список my_bub[...] ?
6. Який метод забезпечує рух бульбашок ?
7. Який метод забезпечує реакцію програми на клік мишки ?
8. Який метод вилучає бульбашку на яку клікнули ?
9. Яку дію виконує метод update() ?
10. Який метод забезпечує виведення значення num(кількості результативних кліків) у заголовок вікна ?
Комментариев нет:
Отправить комментарий