Esempio n. 1
0
    def __init__(self):
        pygame.display.set_icon(pygame.image.load('robot.png'))
        pygame.display.set_caption('MiniBrains')

        # --- level ---
        self.level_now = 1

        # --- screen ---
        self.screen = pygame.display.set_mode(config.size)
        self.screen_rect = self.screen.get_rect()
        self.clock = pygame.time.Clock()
        self.is_running = True
        self.ui = ui.Ui(self.screen)

        # --- objects ---
        self.all_objects = pygame.sprite.Group()
        self.platforms_group = pygame.sprite.Group()
        self.spikes = pygame.sprite.Group()

        # --- add objects ---
        self.renderer = helperspygame.RendererPygame()
        # --- text ---
        self.font_obj = pygame.font.Font(None, 25)

        self.total_x = 0
        self.total_y = 0
Esempio n. 2
0
    def __init__(self):
        pygame.init()                                                             # init pygame
        pygame.mixer.init()                                                       # init pygame module that plays sounds
        icon = pygame.image.load(os.path.join(GAME_FOLDER, 'images', 'icon.png')) # load window icon
        pygame.display.set_icon(icon)                                             # set window icon
        self.screen = display.set_mode((WIN_WIDTH, WIN_HEIGHT), pygame.RESIZABLE) # create a window
        display.set_caption(GAME_NAME)                          # set a window caption
        self.timer = pygame.time.Clock()                        # create main game timer
        self.renderer = helperspygame.RendererPygame()          # create level renderer
        self.ui = UserInput()                                   # create user input struct
        self.current_level = None

        # Set up game levels
        self.level_0 = Level( "level_0", "Vodka.mp3" )
Esempio n. 3
0
    def run(self):
        renderer = helperspygame.RendererPygame()
        self.load_level()

        while self.is_running:
            self.handler()
            self.player.move(self.platforms_group, self.spikes)
            self.move()
            self.check_player_collide()
            self.chek_lose()
            self.check_win()
            self.camera.update(self.player)
            self.draw()
            pygame.display.flip()
            self.clock.tick(60)
Esempio n. 4
0
def demo_pygame(file_name):
    """
    Example showing how to use the paralax scrolling feature.
    """

    # parser the map (it is done here to initialize the
    # window the same size as the map if it is small enough)
    world_map = tmxreader.TileMapParser().parse_decode(file_name)

    # init pygame and set up a screen
    pygame.init()
    pygame.display.set_caption("tiledtmxloader - " + file_name +
                               " - keys: arrows, 0-9")
    screen_width = min(1024, world_map.pixel_width)
    screen_height = min(768, world_map.pixel_height)
    screen = pygame.display.set_mode((screen_width, screen_height))

    # load the images using pygame
    resources = helperspygame.ResourceLoaderPygame()
    resources.load(world_map)

    # prepare map rendering
    assert world_map.orientation == "orthogonal"

    # renderer
    renderer = helperspygame.RendererPygame()

    # create hero sprite
    # use floats for hero position
    hero_pos_x = screen_width
    hero_pos_y = screen_height
    hero = create_hero(hero_pos_x, hero_pos_y)

    # cam_offset is for scrolling
    cam_world_pos_x = hero.rect.centerx
    cam_world_pos_y = hero.rect.centery

    # set initial cam position and size
    renderer.set_camera_position_and_size(cam_world_pos_x, cam_world_pos_y,
                                          screen_width, screen_height)

    # retrieve the layers
    sprite_layers = helperspygame.get_layers_from_map(resources)

    # filter layers
    sprite_layers = [
        layer for layer in sprite_layers if not layer.is_object_group
    ]

    # add the hero the the right layer, it can be changed using 0-9 keys
    layer = get_sprite_layer(1, sprite_layers, world_map.layers)
    if layer is not None:
        layer.add_sprite(hero)

    # layer add/remove hero keys
    num_keys = [pygame.K_0, pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, \
                    pygame.K_5, pygame.K_6, pygame.K_7, pygame.K_8, pygame.K_9]

    # variables for the main loop
    clock = pygame.time.Clock()
    running = True
    speed = 0.075 * 10
    # set up timer for fps printing
    pygame.time.set_timer(pygame.USEREVENT, 1000)

    # mainloop
    while running:
        dt = clock.tick()

        # event handling
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            elif event.type == pygame.USEREVENT:
                print("fps: ", clock.get_fps())
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    running = False
                elif event.key in num_keys:
                    # find out which layer to manipulate
                    idx = num_keys.index(event.key)
                    # make sure this layer exists
                    if idx < len(world_map.layers):
                        layer = get_sprite_layer(idx, sprite_layers,
                                                 world_map.layers)
                        if layer is not None:
                            if layer.contains_sprite(hero):
                                layer.remove_sprite(hero)
                                print("removed hero sprite from layer", idx)
                            else:
                                layer.add_sprite(hero)
                                print("added hero sprite to layer", idx)
                    else:
                        print("no such layer or more than 10 layers: " +
                              str(idx))

        # find directions
        pressed = pygame.key.get_pressed()
        direction_x = pressed[pygame.K_RIGHT] - \
                                        pressed[pygame.K_LEFT]
        direction_y = pressed[pygame.K_DOWN] - \
                                        pressed[pygame.K_UP]

        # make sure the hero moves with same speed in all directions (diagonal!)
        dir_len = math.hypot(direction_x, direction_y)
        dir_len = dir_len if dir_len else 1.0
        # update position
        hero_pos_x += speed * dt * direction_x / dir_len
        hero_pos_y += speed * dt * direction_y / dir_len
        hero.rect.midbottom = (hero_pos_x, hero_pos_y)

        # adjust camera according to the hero's position, follow him
        renderer.set_camera_position(hero.rect.centerx, hero.rect.centery)

        # clear screen, might be left out if every pixel is redrawn anyway
        screen.fill((255, 0, 255))

        # render the map
        for sprite_layer in sprite_layers:
            if sprite_layer.is_object_group:
                # we dont draw the object group layers
                # you should filter them out if not needed
                continue
            else:
                renderer.render_layer(screen, sprite_layer)

        pygame.display.flip()
Esempio n. 5
0
def main():
    pygame.font.init()
    dis = Display()  # you have to call this at the start,
    # if you want to use this module.
    myfont = pygame.font.SysFont('Broadway', 20)
    with open("levels/names.txt", "r") as file:
        first_line = file.readline()
    name = myfont.render(first_line, False, (255, 255, 255))
    game = Game()
    pygame.init()  # Инициация PyGame, обязательная строчка
    screen = pygame.display.set_mode(DISPLAY)  # Создаем око
    bg = Surface((WIN_WIDTH, WIN_HEIGHT))  # шко
    pygame.display.set_caption("Super p_move Boy")
    renderer = helperspygame.RendererPygame()
    for lvl in range(1, 4):
        loadLevel("levels/map_1", game)
        bg.fill(
            Color(BACKGROUND_COLOR))  # Заливаем поверхность сплошным цветом
        left = right = False
        up = down = False
        space = False
        try:
            hero = Player(playerX, playerY,
                          game)  # создаем героя по (x,y) координатам
            game.entities.add(hero)
        except:
            print(
                u"Не удалось на карте найти героя, взяты координаты по-умолчанию"
            )
            hero = Player(65, 65, game)
        game.entities.add(hero)
        timer = pygame.time.Clock()
        camera = Camera(camera_configure, total_level_width,
                        total_level_height)
        bg = Entity()  # Пишем в шапку
        bg.image = pygame.image.load("blocks/gif.gif")
        bg.rect = Rect(0, 0, total_level_width, total_level_height)
        bg.image = pygame.transform.scale(
            bg.image, (total_level_width, total_level_height))
        game.backentity.add(bg)
        mixer.music.load('AREKE.ogg')
        pygame.mixer.music.set_volume(0.05)
        mixer.music.play(-1)
        while 1:  # Основной цикл программы
            timer.tick(70)
            if game.screenfocus == "Game Over":
                for e in game.titlegroup:
                    screen.blit(e.image, (0, 0))
                for e in game.menugroup:
                    screen.blit(e.image, (e.rect.x, e.rect.y))
                game.gameover.update()
            if game.screenfocus == "Title":
                for e in game.titlegroup:
                    screen.blit(e.image, (0, 0))
                for e in game.menugroup:
                    screen.blit(e.image, (e.rect.x, e.rect.y))
                game.title.update()
            if game.screenfocus == "Pause Menu":
                for e in game.titlegroup:
                    screen.blit(e.image, (0, 0))
                for e in game.menugroup:
                    screen.blit(e.image, (e.rect.x, e.rect.y))
                game.pausemenu.update()
            if game.screenfocus == 'Game':
                for e in pygame.event.get():  # Обрабатываем события
                    if e.type == QUIT:
                        raise SystemExit
                    if e.type == KEYDOWN and e.key == K_LEFT:
                        left = True
                    if e.type == KEYDOWN and e.key == K_RIGHT:
                        right = True

                    if e.type == KEYUP and e.key == K_RIGHT:
                        right = False
                    if e.type == KEYUP and e.key == K_LEFT:
                        left = False

                    if e.type == KEYDOWN and e.key == K_UP:
                        up = True
                    if e.type == KEYUP and e.key == K_UP:
                        up = False

                    if e.type == KEYDOWN and e.key == K_DOWN:
                        down = True
                    if e.type == KEYUP and e.key == K_DOWN:
                        down = False

                    if e.type == KEYDOWN and e.key == K_SPACE:
                        space = True
                    if e.type == KEYUP and e.key == K_SPACE:
                        space = False

                    if e.type == KEYDOWN and e.key == K_ESCAPE:
                        game.pausemenu.createpausemenu()
                        game.screenfocus = "Pause Menu"
                for sprite_layer in sprite_layers:  # перебираем все слои
                    if not sprite_layer.is_object_group:  # и если это не слой объектов
                        renderer.render_layer(screen,
                                              sprite_layer)  # отображаем его

                for e in game.backentity:
                    screen.blit(e.image, camera.apply(e))
                #Каждую итерацию необходимо всё перерисовывать
                hero.update(left, right, up, down, space, game.platforms)
                # передвижение
                camera.update(hero)

                for e in game.monsters:
                    e.update(game.platforms, game.projectilegroup)
                    screen.blit(e.image, camera.apply(e))
                for e in game.dieskeletgroup:
                    e.update(game.projectilegroup)
                    screen.blit(e.image, camera.apply(e))
                for e in game.teleport:
                    e.update()
                    screen.blit(e.image, camera.apply(e))
                # центризируем камеру относительно персонажа
                for e in game.entities:
                    screen.blit(e.image, camera.apply(e))
                for e in game.projectilegroup:
                    e.update(game.platforms)
                    screen.blit(e.image, camera.apply(e))
                for e in game.cupgroup:
                    screen.blit(e.image, camera.apply(e))
                screen.blit(name, (110, 0))
                dis.update(hero.lifetotal[hero.currentlifetotal])
                screen.blit(dis.image, (0, 0))
            if game.screenfocus == "Level Complete":
                for e in game.titlegroup:
                    screen.blit(e.image, (0, 0))
                for e in game.menugroup:
                    screen.blit(e.image, (e.rect.x, e.rect.y))
                game.levelcomplete.update()

            pygame.display.update()  # ж
Esempio n. 6
0
def main():
    print("Enter position: ")
    x = int(input())
    print("Enter boost: ")
    boost = int(input())

    screen = pygame.display.set_mode((DISPLAY))
    pygame.display.set_caption("GAME")
    bg = Surface((WIN_WIDTH, WIN_HEIGHT))
    renderer = helperspygame.RendererPygame()

    sprite_layers, items_for_show, colliders = loadLevel("level.tmx")

    control = {'right': False, 'up': False, 'down': False}

    hero = Player(x, 80, boost)
    items_for_show.add(hero)

    timer = pygame.time.Clock()

    camera = Camera(camera_configure, 3500, 320)
    white = pygame.Color('white')
    while not hero.win:
        timer.tick(60)

        for e in pygame.event.get():
            if e.type == QUIT:
                raise (SystemExit, "QUIT")
            if e.type == KEYDOWN and e.key == K_RIGHT:
                control['right'] = True
            if e.type == KEYDOWN and e.key == K_UP:
                control['up'] = True
            if e.type == KEYDOWN and e.key == K_DOWN:
                control['down'] = True

            if e.type == KEYUP and e.key == K_RIGHT:
                control['right'] = False
            if e.type == KEYUP and e.key == K_UP:
                control['up'] = False
            if e.type == KEYUP and e.key == K_DOWN:
                control['down'] = False

        for sprite_layer in sprite_layers:
            if not sprite_layer.is_object_group:
                renderer.render_layer(screen, sprite_layer)

        for e in items_for_show:
            screen.blit(e.image, camera.apply(e))

        camera.update(hero)
        center_offset = camera.reverse(CENTER_OF_SCREEN)
        renderer.set_camera_position_and_size(center_offset[0],
                                              center_offset[1], WIN_WIDTH,
                                              WIN_HEIGHT, "center")
        hero.update(control, colliders)

        score_text = FONT.render("Score = " + str(hero.SCORE), 1, white)
        screen.blit(score_text, (5, 30))

        pygame.display.update()
        screen.blit(bg, (0, 0))

    final_text = FONT.render("FINISH! Your score is " + str(hero.SCORE), 1,
                             white)
    screen.blit(final_text, (175, 30))
    pygame.display.update()
    time.wait(5000)
Esempio n. 7
0
def main():
    pygame.init()
    screen = pygame.display.set_mode(DISPLAY)
    pygame.display.set_caption("Super Mario Boy")
    bg = Surface((WIN_WIDTH, WIN_HEIGHT))
    renderer = helperspygame.RendererPygame()  # визуализатор

    playerX, playerY, total_level_height, total_level_width, sprite_layers = loadLevel(
        "levels/map_1")
    bg.fill(Color("#000000"))  # Заливаем поверхность сплошным цветом

    left = right = up = running = False
    hero = Player(playerX, playerY)  # создаем героя по (x,y) координатам
    entities.add(hero)

    timer = pygame.time.Clock()
    camera = Camera(camera_configure, total_level_width, total_level_height)

    while not hero.winner:
        timer.tick(60)
        for e in pygame.event.get():
            if e.type == QUIT:
                return
            elif e.type == KEYDOWN:
                if e.key == K_UP:
                    up = True
                if e.key == K_LEFT:
                    left = True
                if e.key == K_RIGHT:
                    right = True
                if e.key == K_LSHIFT:
                    running = True
            elif e.type == KEYUP:
                if e.key == K_UP:
                    up = False
                if e.key == K_LEFT:
                    left = False
                if e.key == K_RIGHT:
                    right = False
                if e.key == K_LSHIFT:
                    running = False

        for sprite_layer in sprite_layers:  # перебираем все слои
            if not sprite_layer.is_object_group:  # и если это не слой объектов
                renderer.render_layer(screen, sprite_layer)  # отображаем его

        for e in entities:
            screen.blit(e.image, camera.apply(e))

        animatedEntities.update()  # показываеaм анимацию
        monsters.update(platforms)  # передвигаем всех монстров
        camera.update(hero)  # центризируем камеру относительно персонаж
        center_offset = camera.reverse(
            CENTER_OF_SCREEN)  # получаем координаты внутри длинного уровня
        renderer.set_camera_position_and_size(center_offset[0],
                                              center_offset[1], WIN_WIDTH,
                                              WIN_HEIGHT, "center")
        hero.update(left, right, up, running, platforms)  # передвижение
        pygame.display.update()  # обновление и вывод всех изменений на экран
        screen.blit(bg,
                    (0, 0))  # Каждую итерацию необходимо всё перерисовывать

    for sprite_layer in sprite_layers:
        if not sprite_layer.is_object_group:
            renderer.render_layer(screen, sprite_layer)

    for e in entities:
        screen.blit(e.image, camera.apply(e))

    font = pygame.font.Font(None, 38)
    text = font.render(
        ("Thank you MarioBoy! but our princess is in another level!"), 1,
        (255, 255, 255))  # выводим надпись
    screen.blit(text, (10, 100))

    pygame.display.update()
def main():
    pygame.init()  # Инициация PyGame, обязательная строчка
    screen = pygame.display.set_mode(DISPLAY)  # Создаем окошко
    pygame.display.set_caption("Super Mario Boy")  # Пишем в шапку
    bg = Surface((WIN_WIDTH, WIN_HEIGHT))  # Создание видимой поверхности
    # будем использовать как фон

    renderer = helperspygame.RendererPygame()  # визуализатор
    for lvl in range(1, 4):
        loadLevel("levels/map_%s" % lvl)
        bg.fill(
            Color(BACKGROUND_COLOR))  # Заливаем поверхность сплошным цветом

        left = right = False  # по умолчанию - стоим
        up = False
        running = False
        try:
            hero = Player(playerX,
                          playerY)  # создаем героя по (x,y) координатам
            entities.add(hero)
        except:
            print(
                u"Не удалось на карте найти героя, взяты координаты по-умолчанию"
            )
            hero = Player(65, 65)
        entities.add(hero)

        timer = pygame.time.Clock()

        camera = Camera(camera_configure, total_level_width,
                        total_level_height)

        while not hero.winner:  # Основной цикл программы
            timer.tick(60)
            for e in pygame.event.get():  # Обрабатываем события
                if e.type == QUIT:
                    raise SystemExit, "QUIT"
                if e.type == KEYDOWN and e.key == K_UP:
                    up = True
                if e.type == KEYDOWN and e.key == K_LEFT:
                    left = True
                if e.type == KEYDOWN and e.key == K_RIGHT:
                    right = True
                if e.type == KEYDOWN and e.key == K_LSHIFT:
                    running = True

                if e.type == KEYUP and e.key == K_UP:
                    up = False
                if e.type == KEYUP and e.key == K_RIGHT:
                    right = False
                if e.type == KEYUP and e.key == K_LEFT:
                    left = False
                if e.type == KEYUP and e.key == K_LSHIFT:
                    running = False
            for sprite_layer in sprite_layers:  # перебираем все слои
                if not sprite_layer.is_object_group:  # и если это не слой объектов
                    renderer.render_layer(screen,
                                          sprite_layer)  # отображаем его

            for e in entities:
                screen.blit(e.image, camera.apply(e))
            animatedEntities.update()  # показываеaм анимацию
            monsters.update(platforms)  # передвигаем всех монстров
            camera.update(hero)  # центризируем камеру относительно персонаж
            center_offset = camera.reverse(
                CENTER_OF_SCREEN)  # получаем координаты внутри длинного уровня
            renderer.set_camera_position_and_size(center_offset[0], center_offset[1], \
                                                  WIN_WIDTH, WIN_HEIGHT, "center")
            hero.update(left, right, up, running, platforms)  # передвижение
            pygame.display.update(
            )  # обновление и вывод всех изменений на экран
            screen.blit(
                bg, (0, 0))  # Каждую итерацию необходимо всё перерисовывать
        for sprite_layer in sprite_layers:
            if not sprite_layer.is_object_group:
                renderer.render_layer(screen, sprite_layer)
        # когда заканчиваем уровень
        for e in entities:
            screen.blit(e.image, camera.apply(e))  # еще раз все перерисовываем
        font = pygame.font.Font(None, 38)
        text = font.render(
            ("Thank you MarioBoy! but our princess is in another level!"), 1,
            (255, 255, 255))  # выводим надпись
        screen.blit(text, (10, 100))
        pygame.display.update()
        time.wait(
            10000)  # ждем 10 секунд и после - переходим на следующий уровень