예제 #1
0
    def __init__(self, mode, input_sources):
        super(GatherChallenge, self).__init__(mode, input_sources)

        startpos = py2d.Math.Vector(*crowd.constants.SCREEN_SIZE) / 2

        self.players = [ChallengePlayer(self, isrc) for isrc in input_sources]

        self.player_entities = [
            ec.Entity(self, [
                ec.Position(startpos.clone()),
                ec.Movement(speed=crowd.constants.GATHER_PLAYER_SPEED),
                ec.Physics(
                    decay_factor=crowd.constants.GATHER_PLAYER_SPEED_DECAY),
                ec.Owner(player),
                ec.Sprite(crowd.resource.image.cursor)
            ]) for player in self.players
        ]

        self.coin_entities = [
            ec.Entity(self, [
                ec.Position(
                    py2d.Math.Vector(
                        x * crowd.constants.SCREEN_SIZE[0] /
                        (crowd.constants.GATHER_COINS_X),
                        y * crowd.constants.SCREEN_SIZE[1] /
                        (crowd.constants.GATHER_COINS_Y))),
                CoinComponent(),
                ec.Sprite(crowd.resource.image.coin)
            ]) for x in range(1, crowd.constants.GATHER_COINS_X)
            for y in range(1, crowd.constants.GATHER_COINS_Y)
        ]

        self.entities = self.coin_entities + self.player_entities
예제 #2
0
    def __init__(self, mode, input_sources):
        super(JumpChallenge, self).__init__(mode, input_sources)

        startpos = py2d.Math.Vector(0, 0)

        self.camera = py2d.Math.Vector(*crowd.constants.SCREEN_SIZE) / -2

        self.players = [
            ChallengePlayer(self, isrc)
            for isrc in input_sources
        ]


        self.platform_positions = [
            (
                py2d.Math.Vector(
                    math.sin( float(i) / crowd.constants.JUMP_PLATFORMS_PER_PHASE * math.pi) * crowd.constants.JUMP_PLATFORM_AMPLITUDE,
                    (i+1) * -crowd.constants.JUMP_PLATFORM_STEP
                ),
                crowd.constants.JUMP_PLATFORM_WIDTH
            )
            for i in range(100)
        ]


        self.player_entities = [
            ec.Entity( self, [
                ec.Position(startpos.clone()),
                ec.Movement(vertical=False, speed=crowd.constants.JUMP_PLAYER_SPEED),
                GravityJump(self.platform_positions),
                ec.Physics(decay_factor=crowd.constants.JUMP_PLAYER_SPEED_DECAY),
                ec.Owner(player),
                ec.Sprite(crowd.resource.image.cursor)
            ])

            for player in self.players
        ]

        self.platform_entities = [
            ec.Entity(self, [
                ec.Position(pos),
                Platform(width)
            ])
            for pos, width in self.platform_positions
        ]

        self.coin_entities = [
            ec.Entity(self, [
                ec.Position(pos + crowd.constants.JUMP_COIN_OFFSET),
                CoinComponent(gather_distance = crowd.constants.JUMP_GATHER_DISTANCE),
                ec.Sprite(crowd.resource.image.coin)
            ])

            for pos, width in self.platform_positions
        ]

        self.entities = self.coin_entities + self.platform_entities + self.player_entities
예제 #3
0
    def __init__(self, mode, input_sources):

        mode.game.player_color = (255, 255, 255)

        super(RainbowChallenge, self).__init__(mode, input_sources)

        startpos = py2d.Math.Vector(*crowd.constants.SCREEN_SIZE) / 2


        self.rainbow = crowd.resource.image.rainbow
        self.rainbow_size = py2d.Math.Vector(*self.rainbow.get_size())

        self.screen_size = py2d.Math.Vector(*crowd.constants.SCREEN_SIZE)

        self.players = [
            ChallengePlayer(self, isrc)
            for isrc in input_sources
        ]

        self.player_entities = [
            ec.Entity( self, [
                ec.Position(startpos.clone()),
                ec.Movement(speed=crowd.constants.GATHER_PLAYER_SPEED),
                ec.Physics(decay_factor=crowd.constants.GATHER_PLAYER_SPEED_DECAY),
                ec.Owner(player),
                ec.Sprite(crowd.resource.image.cursor),
                TakeColor()
            ])

            for player in self.players
        ]

        self.entities = self.player_entities
예제 #4
0
    def __init__(self, mode, input_sources):
        super(RaceChallenge, self).__init__(mode, input_sources)

        transform = py2d.Math.Transform.scale(
            crowd.constants.RACE_TRACK_SCALING,
            crowd.constants.RACE_TRACK_SCALING)
        self.racetrack_coords = py2d.SVG.convert_svg(
            'data/images/racetrack.svg', transform, bezier_max_divisions=3)

        self.racetrack_outer = self.racetrack_coords['track-outer']
        self.racetrack_inner = self.racetrack_coords['track-inner']
        self.racetrack_mid = self.racetrack_coords['track-mid']

        startpos = self.racetrack_mid[0].points[52]

        self.camera = py2d.Math.Vector(
            *crowd.constants.SCREEN_SIZE) / -2 + startpos

        self.players = [ChallengePlayer(self, isrc) for isrc in input_sources]

        self.player_entities = [
            ec.Entity(
                self,
                [
                    ec.Position(startpos.clone()),
                    ec.Angle(math.pi / 2),
                    Racer(self.racetrack_inner[0], self.racetrack_outer[0]),
                    #ec.Physics(decay_factor=crowd.constants.JUMP_PLAYER_SPEED_DECAY),
                    ec.Owner(player),
                    ec.Sprite(crowd.resource.image.pointer)
                ]) for player in self.players
        ]

        self.racetrack_entity = ec.Entity(
            self, [Racetrack(self.racetrack_inner, self.racetrack_outer)])

        self.coin_entities = [
            ec.Entity(self, [
                ec.Position(pos),
                CoinComponent(
                    gather_distance=crowd.constants.JUMP_GATHER_DISTANCE),
                ec.Sprite(crowd.resource.image.coin)
            ]) for pos in self.racetrack_mid[0].points
        ]

        self.entities = [self.racetrack_entity
                         ] + self.coin_entities + self.player_entities
예제 #5
0
    def __init__(self, mode, input_sources):
        super(ShooterChallenge, self).__init__(mode, input_sources)

        startpos = py2d.Math.Vector(crowd.constants.SCREEN_SIZE[0] / 2, crowd.constants.SCREEN_SIZE[1] - 100)

        self.players = [
            ChallengePlayer(self, isrc)
            for isrc in input_sources
        ]

        self.player_entities = [
            ec.Entity( self, [
                ec.Position(startpos.clone()),
                ec.Angle(math.pi / 2),
                ec.Movement(speed=crowd.constants.SHOOTER_PLAYER_SPEED, vertical=False),
                ec.Physics(decay_factor=crowd.constants.SHOOTER_PLAYER_SPEED_DECAY),
                ec.Owner(player),
                Fighter(),
                ec.Sprite(crowd.resource.image.pointer)
            ])

            for player in self.players
        ]

        screen_size = py2d.Math.Vector(*crowd.constants.SCREEN_SIZE)

        target_positions = [
            py2d.Math.Vector(
                (x -  ( -0.25 + 0.5 * ( y % 2 ))) * (screen_size.x / (crowd.constants.SHOOTER_TARGETS_X )),
                y * (300 / crowd.constants.SHOOTER_TARGETS_Y)
            )
            for x in range(1, crowd.constants.SHOOTER_TARGETS_X)
            for y in range(1, crowd.constants.SHOOTER_TARGETS_Y)
        ]

        print(target_positions)

        self.target_entities = [
            ec.Entity( self, [
                ec.Position(pos),
                ec.Sprite(crowd.resource.image.alien)
            ])
            for pos in target_positions
        ]

        self.entities = self.target_entities + self.player_entities
예제 #6
0
    def __init__(self, mode, input_sources):
        super(CaveChallenge, self).__init__(mode, input_sources)

        transform = py2d.Math.Transform.scale(crowd.constants.CAVE_SCALING,
                                              crowd.constants.CAVE_SCALING)
        self.cave = py2d.SVG.convert_svg('data/images/cave.svg',
                                         transform,
                                         bezier_max_divisions=2)

        startpos = self.cave['start'][0].points[0]
        coinspos = self.cave['coins'][0].points

        del self.cave['start']
        del self.cave['coins']

        self.camera = py2d.Math.Vector(
            *crowd.constants.SCREEN_SIZE) / -2 + startpos

        self.players = [ChallengePlayer(self, isrc) for isrc in input_sources]

        self.player_entities = [
            ec.Entity(self, [
                ec.Position(startpos.clone()),
                Flyer(list(itertools.chain(self.cave.values()))),
                ec.Physics(
                    decay_factor=crowd.constants.JUMP_PLAYER_SPEED_DECAY),
                ec.Owner(player),
                ec.Sprite(crowd.resource.image.cursor)
            ]) for player in self.players
        ]

        self.cave_entity = ec.Entity(
            self, [Cave(list(itertools.chain(self.cave.values())))])

        self.coin_entities = [
            ec.Entity(self, [
                ec.Position(pos),
                CoinComponent(
                    gather_distance=crowd.constants.JUMP_GATHER_DISTANCE),
                ec.Sprite(crowd.resource.image.coin)
            ]) for pos in coinspos
        ]

        self.entities = [self.cave_entity
                         ] + self.coin_entities + self.player_entities
예제 #7
0
    def update(self, component, entity, event, time_elapsed):
        self.total_time += time_elapsed

        self.fire_cooldown = max(0, self.fire_cooldown - time_elapsed)

        owner = entity.handle('get_owner')
        position = entity.handle('get_position')
        if (owner.input.up or owner.input.a) and self.fire_cooldown == 0:
            self.fire_cooldown += self.fire_rate
            crowd.resource.sound.shoot.play()

            entity.challenge.entities.append(ec.Entity(entity.challenge, [
                ec.Position(position + py2d.Math.VECTOR_Y * -20 + py2d.Math.VECTOR_X * math.sin(self.total_time / 10.0) * crowd.constants.SHOOTER_PLAYER_BULLET_DISTANCE),
                Projectile(),
                ec.Owner(owner),
                ec.Sprite(crowd.resource.image.projectile, hide_owner = True)
            ]))