28. Продолжаем работать со списками

Продолжим работать со списками.
На этот раз вернемся к рисованию «шариков» и работе с списком объектов.
Задания выполнять в функции task, вызывать ее нажатием правой кнопки мыши на экране.
Левая — очищает и создает новый список.

from random import randrange as rnd, choice
from tkinter import *
 
root = Tk()
root.geometry('800x400')
 
canv = Canvas(root, bg = 'white')
canv.pack(fill = BOTH, expand = 10)

 
colors = ['red','brown','green','lightgreen','yellow','black','blue']

class ball():
    def __init__(self):
        x = self.x = rnd(100,300)
        y = self.y = rnd(100,300)
        r = self.r = rnd(10,30)
        self.width = rnd(0,5)
        self.color = choice(colors)
        self.pen_color = choice(colors)
        self.id = canv.create_oval(x-r,y-r,x+r,y+r, width = self.width, fill = self.color, outline = self.pen_color )
        self.paint()
         
    def paint(self):
        x = self.x
        y = self.y
        r = self.r
        canv.coords(self.id,x-r,y-r,x+r,y+r)
        canv.itemconfig (self.id, width = self.width, fill = self.color, outline = self.pen_color)
 
 
def fill_random(event):
    global balls
    canv.delete(ALL)
    balls = [] 
    x = 60
    for z in range(12):
        b = ball()
        b.y = 200
        b.x = x
        x += 60
        b.paint()
        balls += [b]        
     
 
def task(event):
    # писать код здесь! Вызывать правой кнопкой мыши
    pass

canv.bind('<Button-1>', fill_random)
canv.bind('<Button-3>',task)
 
mainloop()
1. Посчитать количество синих
2. Найти общую площадь зеленых
3. Удалить красные
4. Удалить красные, если их граница синяя
5. Удалить красные, если их граница не синяя
6. Удалить первый красный
7. Удалить каждый второй красный
8. После каждого красного добавить такой же по размеру синий
9. Каждый второй красный сделать серым
10. Удалить синие, если они стоят сразу после красных
11. Удалить зеленые, которые стоят правее синих (не обязательно вплотную). За один синий — один зеленый
12. Все шарики перекрасить в тот цвет, который встречается чаще
13. Все шарики перекрасить в тот цвет, шарики которого занимают бОльшую площадь
14. Удалить самый большой, а шарики слева и справа перекрасить в цвет удаленного большого
15. Удалить самый большой, а размер шариков слева и справа увеличить на 10. Нажамить на эту кнопку несколько раз
16.* Определить, по какому шарику щелкнули мышкой (двумя способами: с помощью координат и с помощью find_overlapping)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *