Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://kodomo.cmm.msu.su/trac/snake/browser/main.py?rev=98
Äàòà èçìåíåíèÿ: Unknown
Äàòà èíäåêñèðîâàíèÿ: Sun Apr 10 19:27:21 2016
Êîäèðîâêà: IBM-866
main.py òÀÓ Python Battle

source: main.py @ 98:4436cf8ba30c

Revision 98:4436cf8ba30c, 3.2 KB checked in by Alex Martynov, 5 years ago (diff)

merge

Lineˆà
1importˆàTkinterˆàasˆàtk
2importˆàtkFileDialogˆàasˆàtkfd
3importˆàengine
4importˆàsnake
5
6
7
8classˆàUI(object):
9ˆà ˆà defˆà__init__ˆà(self):
10ˆà ˆà ˆà ˆà self.root =ˆàtk.Tk()
11ˆà ˆà ˆà ˆà self.root.title("Python Battle")
12ˆà ˆà ˆà ˆà self.canvas =ˆàtk.Canvas(self.root,ˆàbackground =ˆà"black")
13ˆà ˆà ˆà ˆà self.canvas.pack(side ="top",ˆàfill="both",ˆàexpand="yes")
14ˆà ˆà ˆà ˆà self.buttons_pack(self.root).pack(side ="bottom",ˆàfill="both",ˆàexpand="no")
15ˆà ˆà ˆà ˆà self.step_id =ˆà0
16ˆà ˆà ˆà ˆà self.engine =ˆàengine.Engine(self.canvas)
17ˆà ˆà ˆà ˆà self.after_id =ˆàNone
18ˆà ˆà ˆà ˆà return
19ˆà ˆà defˆàbuttons_pack(self,ˆàroot):
20ˆà ˆà ˆà ˆà buttons =ˆàtk.Frame(root)
21ˆà ˆà ˆà ˆà load_1 =ˆàtk.Button(buttons,ˆàtext="Load 1",ˆàcommand=lambda:ˆàself.load(1))
22ˆà ˆà ˆà ˆà load_1.pack(side="left",ˆàfill="both",ˆàexpand =ˆà"yes")
23ˆà ˆà ˆà ˆà load_2 =ˆàtk.Button(buttons,ˆàtext="Load 2",ˆàcommand=lambda:ˆàself.load(2))
24ˆà ˆà ˆà ˆà load_2.pack(side="left",ˆàfill="both",ˆàexpand =ˆà"yes")
25ˆà ˆà ˆà ˆà run_b =ˆàtk.Button(buttons,ˆàtext="Run",ˆàcommand=lambda:ˆàself.run())
26ˆà ˆà ˆà ˆà run_b.pack(side="left",ˆàfill="both",ˆàexpand =ˆà"yes")
27ˆà ˆà ˆà ˆà load_3 =ˆàtk.Button(buttons,ˆàtext="Load 3",ˆàcommand=lambda:ˆàself.load(3))
28ˆà ˆà ˆà ˆà load_3.pack(side="right",ˆàfill="both",ˆàexpand =ˆà"yes")
29ˆà ˆà ˆà ˆà load_4 =ˆàtk.Button(buttons,ˆàtext="Load 4",ˆàcommand=lambda:ˆàself.load(4))
30ˆà ˆà ˆà ˆà load_4.pack(side="right",ˆàfill="both",ˆàexpand =ˆà"yes")
31ˆà ˆà ˆà ˆà step_b =ˆàtk.Button(buttons,ˆàtext="Step",ˆàcommand=lambda:ˆàself.step())
32ˆà ˆà ˆà ˆà step_b.pack(side="right",ˆàfill="both",ˆàexpand =ˆà"yes")
33ˆà ˆà ˆà ˆà returnˆàbuttons
34ˆà ˆà
35ˆà ˆà defˆàloadˆà(self,ˆàsnake_number):
36ˆà ˆà ˆà ˆà ifˆàself.step_id >=ˆà200:
37ˆà ˆà ˆà ˆà ˆà ˆà self.step_id =ˆà0
38ˆà ˆà ˆà ˆà ˆà ˆà pass
39ˆà ˆà ˆà ˆà elifˆàself.step_id ==ˆà0:
40ˆà ˆà ˆà ˆà ˆà ˆà file_name =ˆàtkfd.askopenfilename(title="Open file")
41ˆà ˆà ˆà ˆà ˆà ˆà snake =ˆàself.engine.create_snake(snake_number)
42ˆà ˆà ˆà ˆà ˆà ˆà snake.load(open(file_name,ˆà"r"))
43ˆà ˆà ˆà ˆà ˆà ˆà pass
44ˆà ˆà ˆà ˆà else:
45ˆà ˆà ˆà ˆà ˆà ˆà pass
46ˆà ˆà ˆà ˆà self.engine.redraw()
47ˆà ˆà ˆà ˆà return
48
49ˆà ˆà defˆàrunˆà(self):
50ˆà ˆà ˆà ˆà ifˆàself.dead_snake_check()ˆà==ˆàFalse:
51ˆà ˆà ˆà ˆà ˆà ˆà return
52ˆà ˆà ˆà ˆà self.step_id =ˆàself.step_id+1
53ˆà ˆà ˆà ˆà self.engine.step()
54ˆà ˆà ˆà ˆà self.after_id =ˆàself.canvas.after(300,ˆàself.run())
55ˆà ˆà ˆà ˆà ifˆàself.step_id ==ˆà200:
56ˆà ˆà ˆà ˆà ˆà ˆà self.end()
57ˆà ˆà ˆà ˆà ˆà ˆà pass
58ˆà ˆà ˆà ˆà return
59ˆà ˆà defˆàstepˆà(self):
60ˆà ˆà ˆà ˆà ifˆàself.dead_snake_check()ˆà==ˆàFalse:
61ˆà ˆà ˆà ˆà ˆà ˆà return
62ˆà ˆà ˆà ˆà ifˆàself.step_id <=ˆà200:
63ˆà ˆà ˆà ˆà ˆà ˆà ifˆàself.after_id !=ˆàNone:
64ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.canvas.after_cancel(self.after_id)
65ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà pass
66ˆà ˆà ˆà ˆà ˆà ˆà self.step_id =ˆàself.step_id+1
67ˆà ˆà ˆà ˆà ˆà ˆà self.engine.step()
68ˆà ˆà ˆà ˆà ˆà ˆà pass
69ˆà ˆà ˆà ˆà else:
70ˆà ˆà ˆà ˆà ˆà ˆà self.end()
71ˆà ˆà ˆà ˆà ˆà ˆà pass
72ˆà ˆà ˆà ˆà return
73ˆà ˆà
74ˆà ˆà defˆàdead_snake_check(self):
75ˆà ˆà ˆà ˆà dead_snakes =ˆà0
76ˆà ˆà ˆà ˆà forˆàsnake inˆàself.engine.snakes:
77ˆà ˆà ˆà ˆà ˆà ˆà ifˆàsnake ==ˆàNone:
78ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà dead_snakes=dead_snakes+1
79ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà pass
80ˆà ˆà ˆà ˆà ifˆàdead_snakes >=ˆà3:
81ˆà ˆà ˆà ˆà ˆà ˆà self.end()
82ˆà ˆà ˆà ˆà ˆà ˆà returnˆàFalse
83
84ˆà ˆà defˆàendˆà(self):
85ˆà ˆà ˆà ˆà ifˆàself.after_id !=ˆàNone:
86ˆà ˆà ˆà ˆà ˆà ˆà self.canvas.after_cancel(self.after_id)
87ˆà ˆà ˆà ˆà ˆà ˆà pass
88ˆà ˆà ˆà ˆà root =ˆàtk.Tk()
89ˆà ˆà ˆà ˆà end_label =ˆàtk.Label(root,ˆàtext="End")
90ˆà ˆà ˆà ˆà end_label.pack()
91ˆà ˆà ˆà ˆà root.mainloop()
92ˆà ˆà ˆà ˆà pass
93
94ifˆà__name__ ==ˆà"__main__":
95ˆà ˆà snake_batle =ˆàUI()
96ˆà ˆà snake_batle.root.mainloop()
Note: See TracBrowser for help on using the repository browser.