import tkinter as tk
from random import randrange as rnd, choice
import math
from math import pi, sin, cos
import time
root = tk.Tk()
canv = tk.Canvas(root,bg='white')
counterOchkov = 0
label1 = tk.Label(text=counterOchkov, fg="#eee", bg="#333")
label1 = tk.Label(text=counterOchkov, fg="black")
'''
form = Форма круг, круг, звезда
color = Цвет случайный из списка
size = Размер диаметр(2R), a, диаметр(2R)
bonus = Бонус
f = Частота появления
v = скорость движения
a = угол поворота при столкновении 180-a
sprite = спрайт(сам объект)
'''
colors = ['red','orange','yellow','green','blue']
target = dict(form="circle",color="red",size=30,bonus=1,f=2,v=7,a=30,sprite='')
target_forms = ["circle","rect","star"]
targets = []
def main():
global root, canv
root.geometry('1000x700')
canv.pack(fill=tk.BOTH,expand=1)
canv.bind('<Button-1>', click)
#draw_ball()
#draw_rect()
draw_star()
root.mainloop()
def draw_ball():
global root, canv, colors, targets
target1 = target.copy()
x = rnd(100,700)
y = rnd(100,500)
r = rnd(30,50)
target1["form"] = "circle"
target1["color"] = str(choice(colors))
target1["size"] = r*2
target1["bonus"] = 1
target1["f"] = 1
target1["v"] = 8
target1["a"] = 30
target1["sprite"] = canv.create_oval(x-r,y-r,x+r,y+r,fill = target1["color"], width=0)
time = int(1000/target1["f"])
root.after(time,draw_ball)
targets.append(target1)
def draw_rect():
global root, canv, colors
target1 = target.copy()
x = rnd(100,700)
y = rnd(100,500)
a = rnd(30,50)
target1["form"] = "rect"
target1["color"] = str(choice(colors))
target1["size"] = a
target1["bonus"] = 3
target1["f"] = 0.5
target1["v"] = 11
target1["a"] = 37
target1["sprite"] = canv.create_rectangle(x-a,y-a,x+a,y+a,fill = target1["color"], width=0)
#print("creatin rectangl")
time = int(1000/target1["f"])
root.after(time,draw_rect)
targets.append(target1)
def draw_star():
global root, canv, colors
target1 = target.copy()
x = rnd(100,700)
y = rnd(100,500)
r = rnd(30,50)
r1=1/2*r
n = 5
a=pi/180*(360/n/2)
poligonList = []
for c in range(0,n*2,2):
x1=cos(a*c)*r+x
x2=cos(a*(c+1))*r1+x
y1=sin(a*c)*r+y
y2=sin(a*(c+1))*r1+y
poligonList.append((x1,y1))
poligonList.append((x2,y2))
target1["form"] = "star"
target1["color"] = str(choice(colors))
target1["size"] = r*2
target1["bonus"] = 7
target1["f"] = 0.3
target1["v"] = 8
target1["a"] = 30
target1["sprite"] = canv.create_polygon(poligonList,fill = target1["color"], width=0)
time = int(1000/target1["f"])
#root.after(time,draw_star)
targets.append(target1)
'''
brushColor('#f9c2c2')
n = 22
a=pi/180*(360/n/2)
poligonList = []
for c in range(0,n*2,2):
x1=cos(a*c)*r0+x0
x2=cos(a*(c+1))*r1+x0
y1=sin(a*c)*r0+y0
y2=sin(a*(c+1))*r1+y0
poligonList.append((x1,y1))
poligonList.append((x2,y2))
polygon(poligonList)
'''
def click(event):
global counterOchkov , root, label1, canv
for i in range(len(targets)):
pos = canv.coords(targets[i]['sprite'])
if targets[i]["form"] == "rect":
a = abs(event.x-(pos[0]+(targets[i]['size'])))
b = abs(event.y-(pos[1]+(targets[i]['size'])))
elif targets[i]["form"] == "star":
for c in range(len(pos)):
print(str(c) + ')'+str(pos[c]))
print(len(pos))
a = abs(event.x-(pos[0]+(targets[i]['size']/2)))
b = abs(event.y-(pos[1]+(targets[i]['size']/2)))
else:
a = abs(event.x-(pos[0]+(targets[i]['size']/2)))
b = abs(event.y-(pos[1]+(targets[i]['size']/2)))
r1 = math.sqrt((a**2)+(b**2))
if r1 <= targets[i]['size']:
counterOchkov += targets[i]['bonus']
canv.delete(targets[i]['sprite'])
del targets[i]
label1['text'] = counterOchkov
label1.pack()
main()