示例#1
0
    def setUp(self):
        Projectile.setup_class_attrs(image_id='shot1.png', damage=100)

        self.projectile = Projectile(
            pos=(100, 500),
            func=linear(angle=0, speed=200),
            groups=[]
        )
示例#2
0
class ProjectileTest(unittest.TestCase):
    def setUp(self):
        Projectile.setup_class_attrs(image_id='shot1.png', damage=100)

        self.projectile = Projectile(
            pos=(100, 500),
            func=linear(angle=0, speed=200),
            groups=[]
        )

    def test_pos(self):
        self.assertEqual(self.projectile.pos, (100, 500), 'start')

    def test_linear(self):
        self.projectile.update(500)
        self.assertEqual(self.projectile.pos, (200, 500), 'right')
示例#3
0
    def fire(self):

        projectiles = []

        if self.firing and self.current_cool_down == 0 and self.parent.reactor.current_power >= self.power_use\
                and not self.parent.reactor.overheating:
            self.current_cool_down = self.cool_down
            self.parent.reactor.current_power -= self.power_use
            self.firing = False
            for projectile in range(self.projectiles):
                projectile = Projectile(
                    size=self.projectile_size,
                    pos=self.pos + pygame.Vector2(
                        uniform(-self.projectile_grouping,
                                self.projectile_grouping),
                        uniform(-self.projectile_grouping,
                                self.projectile_grouping)),
                    health=0,
                    speed=self.speed,
                    damage=self.damage,
                    color=self.projectile_color,
                    parent=self.parent,
                    direction=pygame.Vector2(
                        1, 0).rotate(-self.parent.angle +
                                     uniform(-self.spread, self.spread)),
                    effects=copy(self.effects))
                projectiles.append(projectile)

        return projectiles
示例#4
0
    def __init__(self, id):
        self.id = id
        self.sprite = SpriteSheet(res.weapon)
        self.sprite.init(12, 12, 0.06)
        self.sprite.set_frame_loop(5, 5, False)

        self.slot = None  # WeaponSlot this weapon is in
        self.position = sf.Vector2(0, 0)

        self.firing = False  # Whether or not it's firing this turn
        self.powered = False  # Is the weapon powered or unpowered
        self.was_powered = False  # Was the weapon powered last turn? (Used for weapon slide out/in animation)
        self.target = None  # Target room

        self.charge = 0

        self.required_charge = 1
        self.required_power = 1  # Power consumption
        self.projectile_type = None
        self.num_shots = 2

        self.projectiles = [Projectile(), Projectile()]
示例#5
0
 def get_projectile_trajectory(self):
     projectile = Projectile(self.projectile, self.angle, self.initial_speed)
     return projectile.get_coordinates()