Код гри Ловець бульбашок

# Ігрова програма Ловець бульбашок 2
from tkinter import*
from random import*

tk=Tk()
W=H=400                  # розміри полотна

canvas=Canvas(tk, width=W, height=H) 
canvas.config(bg="Sky Blue");
canvas.pack()         

maxB=10;   # За такої бульбашок кількості гра зупиниться
genT=1000  # проміжок часу між появою бульбашок

class Bub:
    number=0;  # лічильник бульбашок    
    clicked=0  # лічильник зловлених бульбашок
    
    def __init__(B):    
        B.d=40;
        B.x=randint(2, W-B.d);
        B.y=randint(2, H-B.d)
        B.dx=randint(-5, 5);
        B.dy=randint(-5, 5)
        Bub.number=Bub.number+1
        # створення бульбашки
        B.id=canvas.create_oval(B.x, B.y, B.x+B.d, B.y+B.d,
                                fill='blue')
        # бульбашка має обробник клацання
        canvas.tag_bind(B.id,'<1>',B.on_click)
        # і починає рухатися після створення
        B.move()

    def move(B):
        canvas.move(B.id, B.dx, B.dy)
        tk.update()
        pos=canvas.coords(B.id)
        if len(pos)>0:         # якщо кулька не зникла
            if pos[0]<2 or pos[2]>W-2:# то відбивається від країв
                B.dx=-1*B.dx
            if pos[1]<2 or pos[3]>H-2:
                B.dy=-1*B.dy
            tk.after(100, B.move)
    def on_click(B, event):
        if Bub.number<maxB:        # якщо бульбашок мало
            canvas.delete(B.id);   # то вилучити бульбашку
            Bub.number=Bub.number-1
            Bub.clicked=Bub.clicked+1;
            tk.title(Bub.clicked)

def play():
    if Bub.number<maxB:            # якщо бульбашок мало
        Bub();                     # то створюємо бульбашку 
        tk.after(genT, play)       # продовжуємо створювати  
    else:
        tk.after_cancel(play)      # припиняємо створювати 
        tk.title('Гру закінчено. Ваш результат: '+str(Bub.clicked))

play()
tk.mainloop()


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

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