tanchiki
diff tk_ui.py @ 52:d740eff76e7e
some bugs corrected
author | Olga Zolotareva <olya_zol@inbox.ru> |
---|---|
date | Fri, 24 Dec 2010 22:10:08 +0300 |
parents | f6d3c0539e8c |
children | 5cb3fef573f6 |
line diff
1.1 --- a/tk_ui.py Mon Dec 20 21:27:23 2010 +0300 1.2 +++ b/tk_ui.py Fri Dec 24 22:10:08 2010 +0300 1.3 @@ -9,13 +9,13 @@ 1.4 1.5 game_size = 500, 500 1.6 keys = { 1.7 - 'a': 'base_left', 1.8 - 'd': 'base_right', 1.9 - 'q': 'turret_left', 1.10 - 'e': 'turret_right', 1.11 - 'w': 'accelerate', 1.12 - 's': 'decelerate', 1.13 - 'x': 'fire', 1.14 + 'ocircumflex': 'base_left', 1.15 + 'acircumflex': 'base_right', 1.16 + 'eacute': 'turret_left', 1.17 + 'oacute': 'turret_right', 1.18 + 'odiaeresis': 'accelerate', 1.19 + 'ucircumflex': 'decelerate', 1.20 + 'division': 'fire', 1.21 } 1.22 1.23 welcome = """Press F5 to start 1.24 @@ -30,17 +30,17 @@ 1.25 1.26 def on_tick(self, tanks, bullets): 1.27 if self.user.base_left: 1.28 - self.rotate_base(-body.base_angle) 1.29 + self.rotate_base(-1 * body.base_angle) 1.30 if self.user.base_right: 1.31 self.rotate_base(body.base_angle) 1.32 if self.user.turret_left: 1.33 - self.rotate_turret(-body.turret_angle) 1.34 + self.rotate_turret(-1 * body.turret_angle) 1.35 if self.user.turret_right: 1.36 self.rotate_turret(body.turret_angle) 1.37 if self.user.accelerate: 1.38 self.accelerate(body.speed_delta) 1.39 if self.user.decelerate: 1.40 - self.accelerate(-body.speed_delta) 1.41 + self.accelerate(-1 * body.speed_delta) 1.42 if self.user.fire: 1.43 self.fire() 1.44 1.45 @@ -53,7 +53,7 @@ 1.46 1.47 def init_game(self): 1.48 self.user = User(keys) 1.49 - w, h = game_size 1.50 + w, h = game_size 1.51 game = self.game = Game([], [self.user], w, h) 1.52 tank = Tank(Vector(*game_size) * 0.5, self.user, self.game) 1.53 game.bodies.append(tank) 1.54 @@ -90,25 +90,28 @@ 1.55 1.56 def redraw(self): 1.57 self.canvas.delete("all") 1.58 - for body in self.game.bodies: 1.59 - p = body.position 1.60 - lt = p + Vector(-1,-1) * body.radius 1.61 - rb = p + Vector(1,1) * body.radius 1.62 + for i in self.game.bodies: 1.63 + p = i.position 1.64 + lt = p + Vector(-1,-1) * i.radius 1.65 + rb = p + Vector(1,1) * i.radius 1.66 1.67 - v1 = Vector(body.radius, 0) 1.68 - v1.phi = body.velocity.phi 1.69 + v1 = Vector(i.radius, 0) 1.70 + if isinstance(i, body.Tank): 1.71 + v1.phi = i.base_orientation.phi 1.72 + else : 1.73 + v1.phi = i.velocity.phi 1.74 vb = p - v1 1.75 ve = p + v1 * 2 1.76 - self.canvas.create_line(vb.x, vb.y, ve.x, ve.y, fill="darkgray", width=body.radius*2) 1.77 + self.canvas.create_line(vb.x, vb.y, ve.x, ve.y, fill="darkgray", width=i.radius*2) 1.78 1.79 - if isinstance(body, BaseTank): 1.80 - t = body.turret * body.radius * 1.5 + p 1.81 + if isinstance(i, BaseTank): 1.82 + t = i.turret * i.radius * 1.5 + p 1.83 self.canvas.create_oval(lt.x, lt.y, rb.x, rb.y, fill="darkgreen") 1.84 self.canvas.create_line(p.x, p.y, t.x, t.y, fill="orange", width=2) 1.85 - elif isinstance(body, Bullet): 1.86 + elif isinstance(i, Bullet): 1.87 self.canvas.create_oval(lt.x, lt.y, rb.x, rb.y, outline="red") 1.88 else: 1.89 - raise AssertionError("Unknown object type: %s" % body.__class__.__name__) 1.90 + raise AssertionError("Unknown object type: %s" % i.__class__.__name__) 1.91 1.92 if __name__ == "__main__": 1.93 UI().root.mainloop()