Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/tanchiki/diff/1a0bddee3c54/body.py
Дата изменения: Unknown
Дата индексирования: Sun Feb 3 10:47:31 2013
Кодировка: UTF-8
tanchiki: body.py diff

tanchiki

diff body.py @ 36:1a0bddee3c54

Automated merge with ssh://kodomo.fbb.msu.ru/tanchiki
author Olga Zolotareva <olya_zol@inbox.ru>
date Mon, 20 Dec 2010 18:43:18 +0300
parents b7a85caedc7f dfdc1def5d24
children cf05c46d014c
line diff
     1.1 --- a/body.py	Mon Dec 20 16:12:55 2010 +0300
     1.2 +++ b/body.py	Mon Dec 20 18:43:18 2010 +0300
     1.3 @@ -1,64 +1,94 @@
     1.4 -import vector
     1.5 -import math
     1.6 -delta_phi = math.pi   # deltha phi = math.pi
     1.7 -speed_delta = 1
     1.8 -delta_t = 1
     1.9 -max_velocity = 2
    1.10 -initial_strength = 1
    1.11 -
    1.12 -class Body(object):
    1.13 -	def __init__(self, position, velocity = vector.null):
    1.14 -		self.position = position
    1.15 -		self.velocity = velocity
    1.16 -		self.radius = radius
    1.17 -
    1.18 -class Tank(Body):
    1.19 -	radius = 1
    1.20 -	def __init__(self, position, user):
    1.21 -		Body.__init__(self, position)
    1.22 -		self.strength = 0
    1.23 -		self.turret = vector.i
    1.24 -		self.base_orientation = 1	# 1 or -1
    1.25 -		self.user = user
    1.26 -		user.tank = self # добавляет себя в User
    1.27 -
    1.28 -	def rotate_base(tank, angle): 
    1.29 -		self.velocity.phi += angle
    1.30 -
    1.31 -	def rotate_turret(self, angle):
    1.32 -		self.turret.phi += angle
    1.33 -
    1.34 -	def accelerate(self, speed_delta):
    1.35 -		self.velocity.rho += speed_delta * delta_t
    1.36 -		if self.velocity.rho > max_velocity :
    1.37 -			self.velocity.rho = max_velocity
    1.38 -
    1.39 -	def fire(self):
    1.40 -		pass
    1.41 -
    1.42 -	def on_tick(self,other_tanks, bullets):
    1.43 -		if self.user.base_left == True :
    1.44 -			self.rotate_base(delta_phi)
    1.45 -		if self.user.base_right == True :
    1.46 -			self.rotate_base(-1*delta_phi)
    1.47 -		if self.user.accelerate == True :
    1.48 -			self.accelerate(speed_delta)
    1.49 -
    1.50 -	def on_spawn(self):
    1.51 -		pass
    1.52 -
    1.53 -	def on_death(self):
    1.54 -		pass
    1.55 -
    1.56 -	def on_hit(self,bullet):
    1.57 -		pass
    1.58 -
    1.59 -	def on_collision(self):
    1.60 -		pass
    1.61 -
    1.62 -	def on_wall(self):
    1.63 -		pass
    1.64 -
    1.65 -class Bullet(Body):
    1.66 -	radius = 0.1
    1.67 -	pass
    1.68 +import vector
    1.69 +import math
    1.70 +import random
    1.71 +
    1.72 +base_angle = math.pi/32   # deltha phi = math.pi/32
    1.73 +turret_angle = math.pi/32
    1.74 +speed_delta = 1
    1.75 +delta_t = 1
    1.76 +max_velocity = 4
    1.77 +max_base_angle = 1
    1.78 +max_turret_angle = 1
    1.79 +initial_strength = 1
    1.80 +bullet_velocity = 10
    1.81 +width = 100
    1.82 +height = 100
    1.83 +
    1.84 +class Body(object):
    1.85 +	def __init__(self, position, velocity = vector.null):
    1.86 +		self.position = position
    1.87 +		self.velocity = velocity
    1.88 +
    1.89 +class Tank(Body):
    1.90 +	radius = 5
    1.91 +	def __init__(self, position, user, game):
    1.92 +		Body.__init__(self, position)
    1.93 +		self.game = game
    1.94 +		self.turret = vector.i
    1.95 +		self.strength = 0
    1.96 +		self.base_orientation = 1	# 1 or -1
    1.97 +		self.user = user
    1.98 +		user.tank = self 
    1.99 +
   1.100 +
   1.101 +	def rotate_base(tank, angle):
   1.102 +		if abs(angle) < max_base_angle:  
   1.103 +			self.velocity.phi += angle
   1.104 +		else:
   1.105 +			self.velocity.phi += max_base_angle
   1.106 +
   1.107 +	def rotate_turret(self, angle):
   1.108 +		if abs(angle) < max_base_angle:  
   1.109 +			self.turret.phi += angle
   1.110 +		else:
   1.111 +			self.turret.phi += max_turret_angle
   1.112 +
   1.113 +
   1.114 +	def accelerate(self, speed_delta):
   1.115 +		self.velocity += self.velocity.normalize() * speed_delta * delta_t
   1.116 +		print self.velocity.rho
   1.117 +		if self.velocity.rho > max_velocity:
   1.118 +			self.velocity.rho = max_velocity
   1.119 +
   1.120 +	def fire(self):
   1.121 +                bullet_position = self.position + self.turret * (self.radius + 0.1)
   1.122 +		bullet_velocity = self.turret.normalize() * self.game.bullet_speed
   1.123 +		bullet = Bullet(bullet_position, bullet_velocity, self)
   1.124 +		self.game.bodies.append(bullet)
   1.125 +
   1.126 +	def on_tick(self,other_tanks, bullets):
   1.127 +		if self.user.base_left == True:
   1.128 +			self.rotate_base(base_angle)
   1.129 +		if self.user.base_right == True:
   1.130 +			self.rotate_base(-1*base_angle)
   1.131 +		if self.user.accelerate == True:
   1.132 +			self.accelerate(speed_delta)
   1.133 +		if self.user.decelerate == True:
   1.134 +			self.accelerate(-1*speed_delta)
   1.135 +		if self.user.turret_left == True:
   1.136 +			self.rotate_turret(turret_angle)
   1.137 +		if self.user.turret_right == True:
   1.138 +			self.rotate_turret(-1*turret_angle)
   1.139 +		if self.user.fire == True:
   1.140 +			self.fire()
   1.141 +
   1.142 +	def on_spawn(self):
   1.143 +		pass
   1.144 +
   1.145 +	def on_death(self) :
   1.146 +		pass
   1.147 +	
   1.148 +	def on_hit(self, bullet):
   1.149 +		pass
   1.150 +
   1.151 +	def on_collision(self, other):
   1.152 +		pass
   1.153 +
   1.154 +	def on_wall(self):
   1.155 +		self.next_position = self.position
   1.156 +
   1.157 +class Bullet(Body):
   1.158 +	radius = 0.1
   1.159 +	def __init__(self, position, velocity, tank):
   1.160 +		Body.__init__(self, position, velocity = bullet_velocity)
   1.161 +		self.tank = tank
   1.162 \ No newline at end of file