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