Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/tanchiki/file/b34fe1178f7a/body.py
Дата изменения: Unknown
Дата индексирования: Sun Feb 3 10:39:59 2013
Кодировка:
tanchiki: b34fe1178f7a body.py

tanchiki

view body.py @ 37:b34fe1178f7a

user.User: added key handler
author Daniil Alexeyevsky <me.dendik@gmail.com>
date Mon, 20 Dec 2010 19:16:17 +0300
parents b7a85caedc7f dfdc1def5d24
children cf05c46d014c
line source
1 import vector
2 import math
3 import random
5 base_angle = math.pi/32 # deltha phi = math.pi/32
6 turret_angle = math.pi/32
7 speed_delta = 1
8 delta_t = 1
9 max_velocity = 4
10 max_base_angle = 1
11 max_turret_angle = 1
12 initial_strength = 1
13 bullet_velocity = 10
14 width = 100
15 height = 100
17 class Body(object):
18 def __init__(self, position, velocity = vector.null):
19 self.position = position
20 self.velocity = velocity
22 class Tank(Body):
23 radius = 5
24 def __init__(self, position, user, game):
25 Body.__init__(self, position)
26 self.game = game
27 self.turret = vector.i
28 self.strength = 0
29 self.base_orientation = 1 # 1 or -1
30 self.user = user
31 user.tank = self
34 def rotate_base(tank, angle):
35 if abs(angle) < max_base_angle:
36 self.velocity.phi += angle
37 else:
38 self.velocity.phi += max_base_angle
40 def rotate_turret(self, angle):
41 if abs(angle) < max_base_angle:
42 self.turret.phi += angle
43 else:
44 self.turret.phi += max_turret_angle
47 def accelerate(self, speed_delta):
48 self.velocity += self.velocity.normalize() * speed_delta * delta_t
49 print self.velocity.rho
50 if self.velocity.rho > max_velocity:
51 self.velocity.rho = max_velocity
53 def fire(self):
54 bullet_position = self.position + self.turret * (self.radius + 0.1)
55 bullet_velocity = self.turret.normalize() * self.game.bullet_speed
56 bullet = Bullet(bullet_position, bullet_velocity, self)
57 self.game.bodies.append(bullet)
59 def on_tick(self,other_tanks, bullets):
60 if self.user.base_left == True:
61 self.rotate_base(base_angle)
62 if self.user.base_right == True:
63 self.rotate_base(-1*base_angle)
64 if self.user.accelerate == True:
65 self.accelerate(speed_delta)
66 if self.user.decelerate == True:
67 self.accelerate(-1*speed_delta)
68 if self.user.turret_left == True:
69 self.rotate_turret(turret_angle)
70 if self.user.turret_right == True:
71 self.rotate_turret(-1*turret_angle)
72 if self.user.fire == True:
73 self.fire()
75 def on_spawn(self):
76 pass
78 def on_death(self) :
79 pass
81 def on_hit(self, bullet):
82 pass
84 def on_collision(self, other):
85 pass
87 def on_wall(self):
88 self.next_position = self.position
90 class Bullet(Body):
91 radius = 0.1
92 def __init__(self, position, velocity, tank):
93 Body.__init__(self, position, velocity = bullet_velocity)
94 self.tank = tank