Esempio n. 1
0
    def main(self, screen):
        clock = pygame.time.Clock()
        self.jump = pygame.mixer.Sound('jump.wav')
        self.shoot = pygame.mixer.Sound('shoot.wav')
        self.explosion = pygame.mixer.Sound('explosion.wav')

        self.tilemap = tmx.load('map.tmx', screen.get_size())

        self.sprites = tmx.SpriteLayer()
        start_cell = self.tilemap.layers['triggers'].find('player')[0]
        self.player = Player((start_cell.px, start_cell.py), self.sprites)
        self.tilemap.layers.append(self.sprites)

        self.enemies = tmx.SpriteLayer()
        for enemy in self.tilemap.layers['triggers'].find('enemy'):
            Enemy((enemy.px, enemy.py), self.enemies)
        self.tilemap.layers.append(self.enemies)

        while True:
            dt = clock.tick(30)
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return
                if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    return

            self.tilemap.update(dt / 1000., self)
            screen.fill((200, 200, 200))
            # screen.blit(background, (0, 0))
            self.tilemap.draw(screen)
            pygame.display.flip()

            if self.player.is_dead:
                print "YOU DIED"
                return
Esempio n. 2
0
    def main(self, screen):
        clock = pygame.time.Clock()

        self.background = pygame.sprite.Group()
        Background(self.background)

        self.sounds = {}
        for sound in ['jump', 'land', 'shoot']:
            self.sounds[sound] = pygame.mixer.Sound('sounds/' + sound + '.wav')

        self.tilemap = tmx.load('map.tmx', screen.get_size())

        start_cell = self.tilemap.layers['triggers'].find('player')[0]
        start_position = (start_cell.px, start_cell.py)

        self.sprites = tmx.SpriteLayer()
        self.player = Player(start_position, self.sprites)
        self.tilemap.layers.append(self.sprites)

        self.enemies = tmx.SpriteLayer()
        for enemy in self.tilemap.layers['triggers'].find('enemy'):
            Enemy((enemy.px, enemy.py), self.enemies)
        self.tilemap.layers.append(self.enemies)

        self.tilemap.set_focus(start_position[0], start_position[1])

        while 1:
            dt = clock.tick(30) / 1000.0

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return
                if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    return

            #screen.blit(background, (0, 0))
            self.tilemap.update(dt, self)
            self.tilemap.set_focus(
                self.tilemap.fx + (self.player.rect.x - self.tilemap.fx) / 6.0,
                self.tilemap.fy + (self.player.rect.y - self.tilemap.fy) / 6.0)
            self.background.draw(screen)
            self.tilemap.draw(screen)

            pygame.display.flip()

            if self.player.is_dead:
                print 'YOU DIED'
                return
Esempio n. 3
0
	def __init__(self, *, player_icon: pygame.Surface, **kwargs):
		super().__init__(player_icon=player_icon, **kwargs)
		
		self.sprites = tmx.SpriteLayer()
		self.tilemap.layers.append(self.sprites)
		start_cell = self.tilemap.layers['triggers'].find('player')[0]
		self.player = Player(self.sprites, image=player_icon.convert(), location=(start_cell.px, start_cell.py), tilemap=self.tilemap)
		self.tilemap.set_focus(start_cell.px, start_cell.py, force=True)
Esempio n. 4
0
def main():
    screen = init_screen()
    tilemap = load_map(screen)
    w = World(tilemap)

    clock = pygame.time.Clock()
    font = pygame.font.SysFont('Arial', 25)

    sprite_layer = tmx.SpriteLayer()
    sprite_layer.set_view(0, 0, *screen.get_size())
    tilemap.layers.append(sprite_layer)

    knight, zombie = init(w)
    sprite_layer.add(knight, zombie)

    knight.rect = knight.rect.move(300, 0)

    while 1:
        dt = clock.tick(30)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
            handle_knight_move(knight, event)
        # handle_zombie_move(zombie, knight)

        result = has_knight_won(zombie, knight)
        if result is not None:
            popup(screen, font, result)
            time.sleep(1)
            r = pygame.Rect(random.randint(0, 640), random.randint(0, 480),
                            zombie.rect.width, zombie.rect.height)
            zombie.rect = r

        # tilemap.update calls the update method on each layer in the map.
        # The update method can be customized for each layer to include logic
        # for animating sprite positions, and detecting collisions.
        tilemap.update(dt)
        # Fill the screen with an R,G,B color to erase the previous drawings.
        screen.fill((0, 0, 0))
        # Draw all layers of the tilemap to the screen.
        tilemap.draw(screen)
        # Refresh the display window.
        pygame.display.flip()
Esempio n. 5
0
def main():
    screen = pygame.display.set_mode((800, 600))

    map = tmx.load('driving-map.tmx', screen.get_size())
    sprites = tmx.SpriteLayer()
    map.layers.append(sprites)
    car = CarSprite(sprites)

    clock = pygame.time.Clock()
    while True:
        dt = clock.tick(30) / 1000.0

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return
            if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                return

        screen.fill((50,50,50))
        map.update(dt)
        map.set_focus(*car.rect.center)
        map.draw(screen)
        pygame.display.flip()
Esempio n. 6
0
    def main(self, screen):
        clock = pygame.time.Clock()

        players_name = 'mario'

        dt = clock.tick(30)

        self.tilemap = tmx.load('11.tmx', screen.get_size())
        #self.tilemap = tmx.load('11.tmx', (360,240))
        self.sprites = tmx.SpriteLayer()

        start_cell = self.tilemap.layers['triggers'].find('player')[0]
        self.player = Player((start_cell.px, start_cell.py), self.sprites)
        self.tilemap.layers.append(self.sprites)

        initial_blink_surface = self.tilemap.tilesets[4].surface.copy()
        blink_level = 0
        coin_blink = 0

        self.player_lives = 3
        self.player_coins = 0
        self.player_score = 0
        self.game_time = 400
        self.game_world = 1
        self.game_level = 1

        self.enemy_list = []
        for cell in self.tilemap.layers['enemies'].objects:
            self.enemy_list.append(
                Enemy((cell.px, cell.py), cell.properties, self.sprites))

        font_size = 8
        self.set_font_images(font_size)

        self.css = spritesheet.spritesheet('coin_tileset.png')
        coin_image_list = [
            self.css.image_at((64, 0, 8, 8), colorkey=-1),
            self.css.image_at((72, 0, 8, 8), colorkey=-1),
            self.css.image_at((80, 0, 8, 8), colorkey=-1)
        ]

        self.point_list = []
        self.point_float = 40

        self.bumpable_list = []

        n = 0
        while 1:

            clock.tick(30)
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return
                if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    return

            ################Blinking Question Blocks################
            if n % 3 == 0:

                if blink_level < 6:
                    if blink_level < 3:
                        blink_tile = 4 + blink_level
                        coin_blink = blink_level
                    elif blink_level == 3:
                        blink_tile = 5
                        coin_blink = 1
                    else:
                        blink_tile = 4
                        self.tilemap.tilesets[
                            4].surface = initial_blink_surface  ##gotta do this for some reason
                        coin_blink = 0

                    for cell in self.tilemap.layers['changeables'].find(
                            'question_block'):
                        cell.tile.surface = self.tilemap.tilesets[
                            blink_tile].surface

                    blink_level += 1
                else:
                    blink_level = 0
                    coin_blink = 0

            ########################################################
            if n % 10 == 0 and not self.player.player_dead:
                self.game_time -= 1

            self.tilemap.update(dt / 1000., self)
            screen.fill((92, 148, 252))

            name_start_x = 8
            score_start_x = name_start_x
            time_title_start_x = 184
            time_count_start_x = 192
            lives_count_start_x = 88
            world_title_start_x = 128
            world_count_start_x = 144
            for letter in players_name:
                name_start_x += font_size
                screen.blit(self.letter_image_dict[letter],
                            (name_start_x, font_size))
            for number in str(self.player_score).zfill(6):
                score_start_x += font_size
                screen.blit(self.number_image_list[int(number)],
                            (score_start_x, font_size * 2))
            for letter in 'time':
                time_title_start_x += font_size
                screen.blit(self.letter_image_dict[letter],
                            (time_title_start_x, font_size))
            for number in str(self.game_time).zfill(3):
                time_count_start_x += font_size
                screen.blit(self.number_image_list[int(number)],
                            (time_count_start_x, font_size * 2))

            screen.blit(coin_image_list[coin_blink], (80, 16))
            screen.blit(self.letter_image_dict['by'],
                        (lives_count_start_x, 16))
            for number in str(self.player_coins).zfill(2):
                lives_count_start_x += font_size
                screen.blit(self.number_image_list[int(number)],
                            (lives_count_start_x, font_size * 2))
            for letter in 'world':
                world_title_start_x += font_size
                screen.blit(self.letter_image_dict[letter],
                            (world_title_start_x, font_size))
            screen.blit(self.number_image_list[self.game_world],
                        (world_count_start_x, font_size * 2))
            screen.blit(self.letter_image_dict['dash'],
                        (world_count_start_x + font_size, font_size * 2))
            screen.blit(self.number_image_list[self.game_level],
                        (world_count_start_x + (font_size * 2), font_size * 2))

            for point in self.point_list:
                if point[2] < self.point_float:
                    n = 0
                    if point[1] == '1UP':
                        screen.blit(self.point_image_dict['1UP'],
                                    (point[0][0] +
                                     (n * 4), point[0][1] - point[2]))
                        n += 1
                    else:
                        for number in str(point[1]):
                            screen.blit(self.point_image_dict[int(number)],
                                        (point[0][0] +
                                         (n * 4), point[0][1] - point[2]))
                            n += 1
                    point[2] += 1

            self.tilemap.draw(screen)
            pygame.display.flip()

            n += 1
Esempio n. 7
0
    def __init__(self, map_path, **kwargs):
        """
        
        """
        super().__init__(
            wait=False,
            bg_image=resources.load_image("old-paper.jpg").convert(),
            bg_size='cover',
            layout_width=room.LayoutParams.FILL_PARENT,
            layout_height=room.LayoutParams.FILL_PARENT,
            **kwargs)

        self.tilemap = tmx.load(map_path, self.rect.size, self.rect.topleft)

        self.zoom = self.tilemap.zoom = 2
        self.tw, self.th = (self.tilemap.tile_width, self.tilemap.tile_height)
        self.w, self.h = self.tilemap.width, self.tilemap.height

        self.terrains = {}
        self.sprites = tmx.SpriteLayer()

        yaml_units = utils.parse_yaml(resources.DATA_PATH / 'units.yml', unit)
        yaml_weapons = utils.parse_yaml(resources.DATA_PATH / 'weapons.yml',
                                        item)

        teams = {}

        for layer in self.tilemap.layers:
            if isinstance(
                    layer,
                    tmx.ObjectLayer):  # layer can be an ObjectLayer or a Layer
                c = layer.color
                layer.visible = False  # don't draw squares
                color = (int(c[1:3], base=16), int(c[3:5], base=16),
                         int(c[5:7], base=16))  # from '#RGB' to (R,G,B)
                units = {}
                for obj in layer.objects:
                    if obj.type == 'unit':
                        units[obj.name] = yaml_units[obj.name]
                        units[
                            obj.
                            name].coord = obj.px // self.tw, obj.py // self.th
                        weapon = obj.properties.get('weapon', None)
                        if weapon:
                            try:
                                units[obj.name].give_weapon(
                                    yaml_weapons[weapon])
                            except KeyError:
                                logging.warning("Weapon %s not found", weapon)
                relation = layer.properties['relation']
                boss = yaml_units[layer.properties['boss']]

                def get(key):
                    v = layer.properties.get(key, None)
                    return str(resources.MUSIC_PATH / v) if v else None

                music = {
                    'map': get('map_music'),
                    'battle': get('battle_music')
                }
                if layer.properties.get('AI', None) is None:
                    teams[color] = unit.Team(layer.name, color, relation,
                                             list(units.values()), boss, music)
                else:
                    teams[color] = ai.AI(layer.name, color, relation,
                                         list(units.values()), boss, music)

        for layer in self.tilemap.layers:
            if isinstance(layer, tmx.ObjectLayer):
                for obj in layer.objects:
                    u = yaml_units[obj.name]
                    team = teams[u.team.color]
                    UnitSprite(self.tilemap, u, team, self.sprites)

        self.units_manager = unit.UnitsManager(list(teams.values()))

        for layer in reversed(self.tilemap.layers):
            if isinstance(layer, tmx.Layer):
                for cell in layer:
                    coord = cell.x, cell.y
                    units = self.units_manager.get_units(coord=coord)
                    _unit = units[0] if units else None
                    if coord not in self.terrains and cell.tile is not None:
                        self.terrains[coord] = Terrain(cell.tile, _unit)

        cursor_layer = tmx.SpriteLayer()
        self.cursor = Cursor(self.tilemap, resources.load_image('cursor.png'),
                             cursor_layer)

        arrow_layer = tmx.SpriteLayer()
        self.arrow = Arrow(self.tilemap, resources.load_image('arrow.png'),
                           arrow_layer)

        highlight_layer = tmx.SpriteLayer()
        self.highlight = CellHighlight(self.tilemap, highlight_layer)

        self.tilemap.layers.append(highlight_layer)
        self.tilemap.layers.append(self.sprites)
        self.tilemap.layers.append(arrow_layer)
        self.tilemap.layers.append(cursor_layer)

        self.tilemap.set_focus(self.tilemap.view_w // 2,
                               self.tilemap.view_h // 2)

        self.prev_sel: Union[None, Coord] = None
        self.curr_sel: Union[None, Coord] = None
        self.move_area: List[Coord] = []
        self.attack_area: List[Coord] = []

        # Scroll speed
        self.vx, self.vy = 0, 0

        self.path = Pathfinder(self)
        self.return_path = None  # stores the path to undo a move
Esempio n. 8
0
    def main(self, screen):
        # define el reloj dentro del juego

        clock = pygame.time.Clock()
        # carga la imagen de fondo
        background = Util.imagen("fondoJungla.png")
        self.map_counter = 1
        # carga los datos del mapa
        self.tilemap = tmx.load("level" + str(self.map_counter) + ".tmx",
                                screen.get_size())

        # carga los joysticks
        self.joyst = False
        joystick_count = pygame.joystick.get_count()
        if joystick_count != 0:
            self.joyst = True
            pygame.joystick.Joystick(0).init()

# carga los datos de inicio del jugador
        self.sprites = tmx.SpriteLayer()
        start_cell = self.tilemap.layers["triggers"].find("player")[0]
        self.player = Player((start_cell.px, start_cell.py), self.sprites)
        self.tilemap.layers.append(self.sprites)

        # carga los datos de inicio de los enemigos
        self.enemies = tmx.SpriteLayer()
        for enemy in self.tilemap.layers["triggers"].find("enemy"):
            Enemy((enemy.px, enemy.py), self.enemies)

        self.tilemap.layers.append(self.enemies)

        # ciclo infinito del juego
        while 1:
            dt = clock.tick(30)
            # verifica si el juego es quitado
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return
                if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    return

# comienza a dibujar el mapa y a los personajes
            self.tilemap.update(dt / 1000., self, screen)
            screen.blit(background, (0, 0))
            self.tilemap.draw(screen)
            # muestra el numero de vidas del jugador
            text(screen, "Lives: " + str(self.player.lifes), (255, 255, 0), 50,
                 20, 25)
            # despliega la version del juego
            text(screen, "alpha petunia 0.0.11", (0, 0, 0), 700, 580, 15)
            pygame.display.flip()

            self.player.changeY -= 3

            # verifica si el jugador a llegado al final del nivel
            if self.player.finish == True:
                self.player.finish = False
                self.map_counter += 1
                self.tilemap = tmx.load(
                    "level" + str(self.map_counter) + ".tmx",
                    screen.get_size())
                # carga los datos de inicio del jugador
                self.sprites = tmx.SpriteLayer()
                start_cell = self.tilemap.layers["triggers"].find("player")[0]
                self.player = Player((start_cell.px, start_cell.py),
                                     self.sprites)
                self.tilemap.layers.append(self.sprites)

                # carga los datos de inicio de los enemigos
                self.enemies = tmx.SpriteLayer()
                for enemy in self.tilemap.layers["triggers"].find("enemy"):
                    Enemy((enemy.px, enemy.py), self.enemies)

                self.tilemap.layers.append(self.enemies)

# verifica si el jugador a perdido todas sus vidas
            if self.player.lifes == 0:
                text(screen, "YOU DIED", (0, 0, 0), (640 / 2), (180 / 2), 115)
                pygame.display.update()
                clock.tick(60)
                return