Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/tanchiki/diff/d740eff76e7e/tk_ui.py
Дата изменения: Unknown
Дата индексирования: Sun Feb 3 11:18:05 2013
Кодировка:
tanchiki: tk_ui.py diff

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()