2
Clase que define una unidad de ataque
13
def create_units(group, num, player, destino, allsprites):
14
units = [Unit(i, player, destino, allsprites) for i in range(num)]
20
def circle(t, (x,y), r):
24
x1 = r1 * math.cos(t) + x
25
y1 = r1 * math.sin(t) + y
28
def create_units(group, num, player, destino, allsprites, planeta_orig=None):
29
u = Unit(num, player, destino, allsprites, porig=planeta_orig)
35
class Unit(pygame.sprite.Sprite):
36
def __init__(self, size, player, destino, allsprites, porig):
38
pygame.sprite.Sprite.__init__(self) #call Sprite intializer
40
self.size2 = self.size+10
41
self.image = pygame.Surface((self.size2+1, int(self.size2 * 0.70)+1))
42
self.image.fill((0,0,0))
43
self.image.set_colorkey((0,0,0))
46
x1 = int(self.size2 * 0.70)
47
x2 = int(self.size2 * 0.35)
48
triangulo = [(0,0), (0, x1), (self.size2, x2)]
49
self.rect = pygame.draw.polygon(self.image, self.player.get_color(), triangulo, 2)
51
self.ruta = Path.Path()
54
porig = self.player.get_selected()
56
orig = porig.get_pos()
57
radio = porig.get_radio()
58
orig = circle(random.randint(0,10), orig, radio)
59
self.ruta.calcular_ruta(orig, destino.get_pos())
60
self.destino = destino
63
z, t = self.destino.get_pos()
66
self.dist = math.sqrt(zx * zx + ty * ty)
68
self.angle = self.ruta.get_angle()
70
self.image = pygame.transform.rotate(self.image, self.angle)
71
self.rect = self.image.get_rect()
72
self.allsprites = allsprites
75
# La velocidad depende de la distancia, esto hay que arreglarlo,
76
# para que sea continua, hay que tener en cuenta la distancia para
77
# poder aumentar la velocidad en distancias cortas
79
if self.t < 1 and self.gsize > 0:
80
self.t += 0.1 / (self.gsize * self.dist/300.0 * 1.0)
81
self.rect.center = self.ruta.posicion(self.t)
83
if self.destino.llegada_unidades(self):
84
self.allsprites.add(Explosion.Explosion(self.destino.get_pos(), (255,255,0), self.get_size()*5))
93
#self.allsprites.add(Explosion.Explosion(self.destino.get_pos(), (255,255,0), self.get_size()*5))
97
return self.rect.center
100
return self.player.get_color()