Example #1
0
def six(self):

    x, y = self.get_spawn_pos()
    behaviours_list = [[behaviours.delay], [behaviours.spin]] + \
        [[behaviours.shoot_fire, ang] for ang in range(0, 360, 90)]

    enemy = EnemyShip(x=x, y=y, score=300,
                      img=res.cleaner,
                      particle_data={'rgb': res.cleaner_colors},
                      track=self.ship, batch=self.main_batch, cb_type=CONSTS.ENEMY_CB_TYPE,
                      behaviours=behaviours_list)
    self.enemies.append(enemy)

    def evader_bundle(self, x, y):
        x, y = self.get_spawn_pos(50)

        return [get_bouncer(self, x, y) for i in xrange(3)]

    choice = [
        (evader_bundle, 75, 30),
        (get_tracker, 50, 60),
        (spawn_line, 100, 50),
        (get_splitter, 50, 50),
        (get_evader,  100, 40),
        (get_blackhole, 200, 30),
        (spawn_corner, 1000, 20, [5, get_evader]),
        # old not working with append
        (self.spawn_sin, 400, 10, ['old'])
    ]
    to_spawn = get_spawn_list(points, choice)

    rate = 1.0
    play_time = 0
    while(len(to_spawn) > 0):
        if random.randint(0, 100) <= random.expovariate(1 / rate) and len(self.state.enemies) <= 30:
            x, y = self.get_spawn_pos()
            fn, params = to_spawn.pop()
            if params:
                if params[0] == 'old':  # hack, for old (spawn_sin)
                    fn()
                else:
                    fn(self, *params)
            else:

                ret = fn(self, x, y)
                if ret:  # spawn_line hack
                    # incredible hackishness (bundles/list)
                    if hasattr(ret, '__len__'):
                        self.enemies.extend(ret)
                    else:
                        self.enemies.append(ret)
        play_time += 1
        yield True
    yield five
Example #2
0
def spawn_line(self, x=None, y=None):
    x, y = self.get_spawn_pos(150)

    # spawn the first enemy of the line (the anchor)
    enemy1 = EnemyShip(behaviours=[[behaviours.link], [behaviours.delay, 0]], img=res.liner, track=self.ship,
                       x=x, y=y, batch=self.main_batch, cb_type=CONSTS.ENEMY_LINE_CB_TYPE)
    # start sensor spawn
    sensors = []
    for d in xrange(1, 4):
        sensors.append(Sensor(callbacks=[behaviours.link_sensor], img=res.liner, track=self.ship,
                              x=x + res.tracker.width * d, y=y, batch=self.main_batch, cb_type=CONSTS.SENSOR_CB_TYPE))
    for sensor in sensors:
        sensor.scale = 0.5
        self.enemies.append(sensor)

    enemy2 = EnemyShip(behaviours=[[behaviours.link, enemy1, sensors], [behaviours.delay, 0]], img=res.liner, track=self.ship,
                       x=x + 100, y=y, batch=self.main_batch, cb_type=CONSTS.ENEMY_LINE_CB_TYPE)
    # end sensor spawn
    self.enemies.append(enemy1)
    self.enemies.append(enemy2)
    return False
Example #3
0
def four(self):
    x, y = self.get_spawn_pos()
    behaviours_list = [[behaviours.delay], [behaviours.spin]] + \
        [[behaviours.shoot_fire, ang] for ang in range(0, 360, 90)]

    enemy = EnemyShip(x=x, y=y, score=300,
                      img=res.cleaner,
                      particle_data={'rgb': res.cleaner_colors},
                      track=self.ship, batch=self.main_batch, cb_type=CONSTS.ENEMY_CB_TYPE,
                      behaviours=behaviours_list)
    self.enemies.append(enemy)
    yield five
Example #4
0
def get_bouncer(self, x=False, y=False, spawn=False, delay=0):
    if not x:
        x, y = self.get_spawn_pos()
    behaviours_list = [[behaviours.bounce], [behaviours.delay, delay]]
    enemy = EnemyShip(x=x, y=y, score=25,
                      img=res.bouncer,
                      particle_data={'rgb': res.bouncer_colors},
                      track=self.ship, batch=self.main_batch, cb_type=CONSTS.ENEMY_CB_TYPE,
                      behaviours=behaviours_list)
    if spawn:
        self.enemies.append(enemy)

    return enemy
Example #5
0
    def spawn_circle(self, dt=0):
        angles = [a * math.pi / 180 for a in range(1, 360, 20)]
        angles_ln = len(angles) / 100.0

        for a in angles:
            # x2 + y2 = r2
            x = math.cos(a) * 200 + self.ship.x
            y = math.sin(a) * 200 + self.ship.y

            behaviours_list = [
                [behaviours.follow_player, 1 + float(a) / 1000], [behaviours.delay, a * 10], [behaviours.split]]
            enemy = EnemyShip(behaviours=behaviours_list, img=res.splitter, particle_data={'rgb': res.splitter_colors}, track=self.ship,
                              x=x, y=y, batch=self.main_batch, cb_type=CONSTS.ENEMY_CB_TYPE)
            self.enemies.append(enemy)
Example #6
0
def get_flanker(self, x=False, y=False, spawn=False, delay=0, horizontal=True):
    if not x:
        x, y = self.get_spawn_pos()
    behaviours_list = [
        [behaviours.flank, horizontal], [behaviours.delay, delay]]

    enemy = EnemyShip(x=x, y=y, score=50,
                      img=res.squeezer,
                      particle_data={'rgb': res.squeezer_colors},
                      track=self.ship, batch=self.main_batch, cb_type=CONSTS.ENEMY_CB_TYPE,
                      behaviours=behaviours_list,)
    if spawn:
        self.enemies.append(enemy)

    return enemy
Example #7
0
def get_blackhole(self, x=False, y=False, spawn=False, delay=0):
    if not x:
        x, y = self.get_spawn_pos()
    behaviours_list = [
        [behaviours.pulse], [behaviours.attract], [behaviours.black_hole], [behaviours.delay, delay]]

    enemy = EnemyShip(x=x, y=y, score=500,
                      img=res.black_hole,
                      particle_data={'rgb': res.black_hole_colors},
                      track=self.ship, batch=self.main_batch, cb_type=CONSTS.ENEMY_BLACK_HOLE,
                      behaviours=behaviours_list,
                      callbacks=[behaviours.black_hole_cb])

    if spawn:
        self.enemies.append(enemy)

    return enemy
Example #8
0
    def spawn_sin(self, c_x=False, c_y=False):
        angles = [a * math.pi / 180 for a in range(1, 320, 20)]
        angles_ln = len(angles) / 100.0

        sin_dir = 0

        if c_x:
            sin_dir = 180 if c_x >= CONSTS.game_width else 0
        if c_y:
            sin_dir = 90 if c_y >= CONSTS.game_height else 270

        for i in xrange(len(angles)):
            a = angles[i]
            x = i * 50 + c_x if c_x else self.ship.x
            y = i * 50 + c_y if c_y else self.ship.y

            behaviours_list = [
                [behaviours.by_sin, sin_dir], [behaviours.exits]]
            enemy = EnemyShip(behaviours=behaviours_list, img=res.evader, particle_data={'rgb': res.evader_colors}, track=self.ship,
                              x=x, y=y, batch=self.main_batch, cb_type=CONSTS.ENEMY_CB_TYPE)
            self.enemies.append(enemy)
Example #9
0
 def spawn_enemy(self, x, y, e_type, delay=0, alpha=50):
     behaviours_list = [[behaviours.evade],
                        [behaviours.follow_player, 3],
                        [behaviours.delay, delay, alpha]]
     enemy = EnemyShip(x=x, y=y, behaviours=behaviours_list, **e_type)
     self.enemies.append(enemy)