| rev |
line source |
|
martiran@18
|
1 import Tkinter as tk |
|
Alex@23
|
2 import tkFileDialog as tkfd |
|
martiran@20
|
3 import engine |
|
martiran@32
|
4 import snake |
|
martiran@18
|
5 |
|
martiran@18
|
6 |
|
martiran@18
|
7 |
|
martiran@18
|
8 class UI(object): |
|
martiran@19
|
9 def __init__ (self): |
|
martiran@29
|
10 self.root = tk.Tk() |
|
martiran@29
|
11 self.root.title("Python Battle") |
|
martiran@29
|
12 self.canvas = tk.Canvas(self.root, background = "black") |
|
martiran@19
|
13 self.canvas.pack(side ="top", fill="both", expand="yes") |
|
me@96
|
14 self.buttons_pack(self.root).pack(side ="bottom", fill="both", expand="no") |
|
martiran@28
|
15 self.step_id = 0 |
|
martiran@19
|
16 self.engine = engine.Engine(self.canvas) |
|
martiran@32
|
17 self.after_id = None |
|
martiran@18
|
18 return |
|
me@96
|
19 def buttons_pack(self, root): |
|
me@96
|
20 buttons = tk.Frame(root) |
|
me@96
|
21 load_1 = tk.Button(buttons, text="Load 1", command=lambda: self.load(1)) |
|
martiran@132
|
22 load_1.grid(row=1, column=2, stick="news") |
|
me@96
|
23 load_2 = tk.Button(buttons, text="Load 2", command=lambda: self.load(2)) |
|
martiran@132
|
24 load_2.grid(row=2, column=3, stick="news") |
|
me@96
|
25 run_b = tk.Button(buttons, text="Run", command=lambda: self.run()) |
|
martiran@132
|
26 run_b.grid(row=1, column=5, stick="news") |
|
me@96
|
27 load_3 = tk.Button(buttons, text="Load 3", command=lambda: self.load(3)) |
|
martiran@132
|
28 load_3.grid(row=3, column=2, stick="news") |
|
me@96
|
29 load_4 = tk.Button(buttons, text="Load 4", command=lambda: self.load(4)) |
|
martiran@132
|
30 load_4.grid(row=2, column=1, stick="news") |
|
me@96
|
31 step_b = tk.Button(buttons, text="Step", command=lambda: self.step()) |
|
martiran@132
|
32 step_b.grid(row=3, column=5, stick="news") |
|
me@133
|
33 for column in range(1, 6): |
|
me@133
|
34 buttons.grid_columnconfigure(column, weight=1) |
|
me@96
|
35 return buttons |
|
martiran@29
|
36 |
|
Alex@23
|
37 def load (self, snake_number): |
|
martiran@29
|
38 if self.step_id >= 200: |
|
martiran@29
|
39 self.step_id = 0 |
|
martiran@130
|
40 self.engine.snakes = [None, None, None, None] |
|
martiran@29
|
41 pass |
|
martiran@107
|
42 if self.step_id == 0: |
|
martiran@29
|
43 file_name = tkfd.askopenfilename(title="Open file") |
|
martiran@29
|
44 snake = self.engine.create_snake(snake_number) |
|
Alex@78
|
45 snake.load(open(file_name, "r")) |
|
martiran@29
|
46 pass |
|
Alex@103
|
47 self.engine.refill() |
|
Alex@86
|
48 self.engine.redraw() |
|
Alex@27
|
49 return |
|
Alex@23
|
50 |
|
martiran@18
|
51 def run (self): |
|
Alex@97
|
52 if self.dead_snake_check() == False: |
|
Alex@97
|
53 return |
|
martiran@122
|
54 if self.step_id >= 200: |
|
martiran@122
|
55 self.end() |
|
martiran@122
|
56 return |
|
martiran@32
|
57 self.step_id = self.step_id+1 |
|
martiran@28
|
58 self.engine.step() |
|
martiran@111
|
59 self.after_id = self.canvas.after(300, self.run) |
|
martiran@28
|
60 return |
|