Проект. Гра Ловець бульбашок

# Завдання: скласти ігрову програму Ловець бульбашок.
# На ігровому полотні кожні 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(кількості результативних кліків) у заголовок вікна ?



Комментариев нет:

Отправить комментарий