Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://kodomo.cmm.msu.su/trac/petri_dish/browser/tk1.py
Äàòà èçìåíåíèÿ: Unknown
Äàòà èíäåêñèðîâàíèÿ: Sun Apr 10 03:12:55 2016
Êîäèðîâêà: IBM-866
tk1.py òÀÓ Petri Dish

source: tk1.py @ 0:3ce177d96be2

Revision 0:3ce177d96be2, 3.2 KB checked in by Yashina Ksenia <ksenia_yashina@òÀæ>, 5 years ago (diff)

Moving circles,first try

Lineˆà
1importˆàTkinter
2importˆàtime
3fromˆàmathˆàimportˆà*
4importˆàrandom
5
6classˆàVector(object):
7ˆà ˆà defˆà__init__(self,x,y):
8ˆà ˆà ˆà ˆà self.x=x
9ˆà ˆà ˆà ˆà self.y=y
10ˆà ˆà defˆà__abs__(self):
11ˆà ˆà ˆà ˆà returnˆàsqrt(self.x**2+self.y**2)
12ˆà ˆà defˆà__add__(self,other):
13ˆà ˆà ˆà ˆà returnˆàVector(self.x+other.x,self.y+other.y)
14ˆà ˆà defˆà__mul__(self,digit):
15ˆà ˆà ˆà ˆà returnˆàVector(digit*self.x,digit*self.y)
16ˆà ˆà defˆàangle(self):
17ˆà ˆà ˆà ˆà ifˆàself.x==0:
18ˆà ˆà ˆà ˆà ˆà ˆà ifˆàself.y>0:
19ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà returnˆà-pi/2
20ˆà ˆà ˆà ˆà ˆà ˆà else:
21ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà returnˆàpi/2
22ˆà ˆà ˆà ˆà ifˆàself.y==0:
23ˆà ˆà ˆà ˆà ˆà ˆà ifˆàself.x>0:
24ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà returnˆà0
25ˆà ˆà ˆà ˆà ˆà ˆà else:
26ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà returnˆàpi
27ˆà ˆà ˆà ˆà m=abs(self)
28ˆà ˆà ˆà ˆà ifˆàacos(self.x/m)>pi/2ˆàorˆà(acos(self.x/m)>pi/2ˆàandˆàasin(self.y/m)<0):
29ˆà ˆà ˆà ˆà ˆà ˆà returnˆàatan(self.y/self.x)-pi
30ˆà ˆà ˆà ˆà else:
31ˆà ˆà ˆà ˆà ˆà ˆà returnˆàatan(self.y/self.x)
32ˆà ˆà defˆàangleToCoord(self,angle):
33ˆà ˆà ˆà ˆà magn=abs(self)
34ˆà ˆà ˆà ˆà self.x=magn*cos(angle)
35ˆà ˆà ˆà ˆà self.y=magn*sin(angle)
36ˆà ˆà ˆà ˆà returnˆàself
37ˆà ˆà defˆàmagnitToCoord(self,m):
38ˆà ˆà ˆà ˆà ang=self.angle()
39ˆà ˆà ˆà ˆà self.x=m*cos(ang)
40ˆà ˆà ˆà ˆà self.y=m*sin(ang)
41ˆà ˆà ˆà ˆà returnˆàself
42
43classˆàBall(object):
44ˆà ˆà defˆà__init__(self,position,velocity):
45ˆà ˆà ˆà ˆà self.position=position
46ˆà ˆà ˆà ˆà self.velocity=velocity
47ˆà ˆà defˆàbounds(self):
48ˆà ˆà ˆà ˆà ifˆàself.position.x>=595:
49ˆà ˆà ˆà ˆà ˆà ˆà self.position.x=595
50ˆà ˆà ˆà ˆà ˆà ˆà self.velocity=self.velocity.angleToCoord(pi-self.velocity.angle())
51ˆà ˆà ˆà ˆà elifˆàself.position.x<=2:
52ˆà ˆà ˆà ˆà ˆà ˆà self.position.x=2
53ˆà ˆà ˆà ˆà ˆà ˆà self.velocity=self.velocity.angleToCoord(pi-self.velocity.angle())
54ˆà ˆà ˆà ˆà ifˆàself.position.y>=595:
55ˆà ˆà ˆà ˆà ˆà ˆà self.position.y=595
56ˆà ˆà ˆà ˆà ˆà ˆà self.velocity=self.velocity.angleToCoord(-self.velocity.angle())
57ˆà ˆà ˆà ˆà elifˆàself.position.y<=2:
58ˆà ˆà ˆà ˆà ˆà ˆà self.position.y=2
59ˆà ˆà ˆà ˆà ˆà ˆà self.velocity=self.velocity.angleToCoord(-self.velocity.angle())
60ˆà ˆà defˆàcollision(self,other):
61ˆà ˆà ˆà ˆà ifˆàabs(self.position.y-other.position.y)<70ˆàandˆàabs(self.position.x-other.position.x)<70:
62ˆà ˆà ˆà ˆà ˆà ˆà self.velocity.angleToCoord(2*pi*random.random())
63ˆà ˆà ˆà ˆà ˆà ˆà other.velocity.angleToCoord(2*pi*random.random())
64root =ˆàTkinter.Tk()ˆà
65c =ˆàTkinter.Canvas(ˆàroot,ˆàwidth =ˆà670,ˆàheight =ˆà670ˆà)
66c.pack()
67
68b1=Ball(Vector(440,100),Vector(5,7))
69b2=Ball(Vector(40,90),Vector(-3,-1))
70b3=Ball(Vector(100,250),Vector(0,5))
71b4=Ball(Vector(150,250),Vector(-1,2))
72ball1 =ˆàc.create_oval(0,0,0,0)
73ball2 =ˆàc.create_oval(0,0,0,0)
74ball3 =ˆàc.create_oval(0,0,0,0)
75ball4 =ˆàc.create_oval(0,0,0,0)
76whileˆàTrue:
77ˆà ˆà time.sleep(ˆà0.02ˆà)
78ˆà ˆà c.delete(ball1)
79ˆà ˆà c.delete(ball2)
80ˆà ˆà c.delete(ball3)
81ˆà ˆà c.delete(ball4)
82ˆà ˆà ball1=c.create_oval(b1.position.x,ˆàb1.position.y,ˆàb1.position.x+75,ˆàb1.position.y+75,fill="blue"ˆà)
83ˆà ˆà ball2=c.create_oval(b2.position.x,ˆàb2.position.y,ˆàb2.position.x+75,ˆàb2.position.y+75,fill="red")
84ˆà ˆà ball3=c.create_oval(b3.position.x,ˆàb3.position.y,ˆàb3.position.x+75,ˆàb3.position.y+75,fill="yellow")
85ˆà ˆà ball4=c.create_oval(b4.position.x,ˆàb4.position.y,ˆàb4.position.x+75,ˆàb4.position.y+75,fill="green")
86ˆà ˆà b1.bounds()
87ˆà ˆà b2.bounds()
88ˆà ˆà b3.bounds()
89ˆà ˆà b4.bounds()
90ˆà ˆà b1.collision(b2)
91ˆà ˆà b2.collision(b3)
92ˆà ˆà b1.collision(b3)
93ˆà ˆà b1.collision(b4)
94ˆà ˆà b3.collision(b4)
95ˆà ˆà b2.collision(b4)
96ˆà ˆà b1.position =ˆàb1.position+b1.velocity
97ˆà ˆà b2.position =ˆàb2.position+b2.velocity
98ˆà ˆà b3.position =ˆàb3.position+b3.velocity
99ˆà ˆà b4.position =ˆàb4.position+b4.velocity
100ˆà ˆà c.update()
Note: See TracBrowser for help on using the repository browser.