def run(self):
        """Execute the game loop
        """
        pygame.init()
        screen = Screen(self.window_size)
        clock = pygame.time.Clock()

        world = World()
        scheduler = Scheduler()

        graphics_system = GraphicsSystem(world, screen)
        load_assets(graphics_system)

        tile_system = TileSystem(world, 5)

        mouse_system = MouseSystem(world)
        animation_system = AnimationSystem(world)

        light_system = LightSystem(world)
        
        fear_system = FearSystem(world)

        clock.tick(self.fps)
        playing = [True]

        def end_game():
            playing[0] = False

        create_title_screen(world, scheduler, end_game)

        while playing[0]:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    playing[0] = False
                elif event.type == pygame.MOUSEBUTTONDOWN:
                    mouse_system.on_mouse_down(
                        event.pos,
                        to_mouse_button(event.button)
                    )
                elif event.type == pygame.MOUSEMOTION:
                    mouse_system.on_mouse_motion(event.pos)

            clock.tick(self.fps)
            time_elapsed = float(clock.get_time()) / 1000.0

            scheduler.update(time_elapsed)
            animation_system.update(time_elapsed)
            tile_system.update_tile_positions()
            light_system.update()
            fear_system.update()
            graphics_system.draw_entities()

            pygame.display.set_caption(
                "The Family's Treasure Tale --- " + str(clock.get_fps()))

        pygame.quit()
    def run(self):
        """Execute the game loop
        """
        pygame.init()
        screen = Screen(self.window_size)
        clock = pygame.time.Clock()

        world = World()
        scheduler = Scheduler()

        graphics_system = GraphicsSystem(world, screen)
        load_assets(graphics_system)

        tile_system = TileSystem(world, 5)

        mouse_system = MouseSystem(world)
        animation_system = AnimationSystem(world)

        light_system = LightSystem(world)

        fear_system = FearSystem(world)

        clock.tick(self.fps)
        playing = [True]

        def end_game():
            playing[0] = False

        create_title_screen(world, scheduler, end_game)

        while playing[0]:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    playing[0] = False
                elif event.type == pygame.MOUSEBUTTONDOWN:
                    mouse_system.on_mouse_down(event.pos,
                                               to_mouse_button(event.button))
                elif event.type == pygame.MOUSEMOTION:
                    mouse_system.on_mouse_motion(event.pos)

            clock.tick(self.fps)
            time_elapsed = float(clock.get_time()) / 1000.0

            scheduler.update(time_elapsed)
            animation_system.update(time_elapsed)
            tile_system.update_tile_positions()
            light_system.update()
            fear_system.update()
            graphics_system.draw_entities()

            pygame.display.set_caption("The Family's Treasure Tale --- " +
                                       str(clock.get_fps()))

        pygame.quit()
Exemple #3
0
def main():
    """
  Prepare our environment, create a display, and start the program.
  """
    os.environ['SDL_VIDEO_CENTERED'] = '1'
    pg.init()
    pg.display.set_caption(assets.CAPTION)
    assets.load_assets()

    App().main_loop()
    pg.quit()
    sys.exit()
def tela_1(window):
    '''definição da tela -1, que é a primeira do jogo com instruções, bem-vindo e música'''
    pygame.mixer.music.load('Dungeons/musicatela_1.mp3')
    pygame.mixer.music.set_volume(0.1)
    pygame.mixer.music.play()


    clock = pygame.time.Clock()
    assets = load_assets()
    FPS = 15

    all_sprites = pygame.sprite.Group()
    DONE = 0
    PLAYING = 3
    state = PLAYING
    keys_down = {}
    pygame.mixer.music.play(loops=-1)
    
    while state != DONE:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                state = DONE
                return SAIR    
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    return TELA0
    
        window.fill((0, 0, 0))  # Preenche com a cor preta
        window.blit(assets['Tela_introducao'], (0, 0))
        all_sprites.draw(window)   
        pygame.display.update()
def tela_gameover(window):
    ''' definição da tela gameover com musica'''
    clock = pygame.time.Clock()
    assets = load_assets()
    FPS = 15

    pygame.mixer.music.stop()
    pygame.mixer.music.load('Dungeons/musicagameover.mp3')
    pygame.mixer.music.set_volume(0.1)
    pygame.mixer.music.play()

    all_sprites = pygame.sprite.Group()
    DONE = 0
    PLAYING = 3
    state = PLAYING
    keys_down = {}
    pygame.mixer.music.play(loops=-1)
    
    while state != DONE:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                state = DONE
                return SAIR    

        window.fill((0, 0, 0))  # Preenche com a cor preta
        window.blit(assets['gameover'], (0, 0))
        all_sprites.draw(window)   
        pygame.display.update()
def tela_pre_boss(window):
    ''' tela antes do boss que avisa o jogador para o último nível'''
    clock = pygame.time.Clock()
    assets = load_assets()
    FPS = 15

    all_sprites = pygame.sprite.Group()
    DONE = 0
    PLAYING = 3
    state = PLAYING
    keys_down = {}

    
    while state != DONE:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                state = DONE
                return SAIR   
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    return TELA4
    
        window.fill((0, 0, 0))  # Preenche com a cor preta
        window.blit(assets['tela_pre_boss'], (0, 0))
        all_sprites.draw(window)   
        pygame.display.update()
def tela_pre_2(window):
    ''' definição da tela antes da 2 que prepara o jogador para enfrentar o mob do machado'''
    
    clock = pygame.time.Clock()
    assets = load_assets()
    FPS = 15

    all_sprites = pygame.sprite.Group()
    DONE = 0
    PLAYING = 3
    state = PLAYING
    keys_down = {}

    
    while state != DONE:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                state = DONE
                return SAIR   
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    return TELA2
    
        window.fill((0, 0, 0))  # Preenche com a cor preta
        window.blit(assets['tela_pre_2'], (0, 0))
        all_sprites.draw(window)   
        pygame.display.update()
Exemple #8
0
def main(width=800, height=800):
    global window, history, background_batch, pieces_batch
    window = pyglet.window.Window(width=width, height=height)
    pieces_batch = pyglet.graphics.Batch()
    background_batch = pyglet.graphics.Batch()

    asset_map = assets.load_assets(pyglet)

    board_sprite = pyglet.sprite.Sprite(asset_map.board,
                                        batch=background_batch)
    for piece, image in asset_map.pieces.items():
        piece_sprite = pyglet.sprite.Sprite(image, batch=pieces_batch)
        piece_sprites[piece] = piece_sprite

    starting_board = board.create_board()

    for coords, piece in starting_board.items():
        image = asset_map.pieces[piece]
        x, y = coords
        cell_size = 480 / 8
        pyglet.sprite.Sprite(image, batch=pieces_batch)

    @window.event
    def on_draw(self):
        self.clear()
        self.background_batch.draw()
        self.pieces_batch.draw()

    pyglet.app.run()
Exemple #9
0
def game_over(bank):
    keys_down = {}
    assets = load_assets()
    over = True
    i = 1
    while over:
        screen = pygame.display.set_mode([HEIGHT, WIDTH])
        screen.fill(BLACK)

        OVER = pygame.image.load(path.join(img_dir,
                                           'over.png')).convert_alpha()
        OVER = pygame.transform.scale(OVER, (HEIGHT, WIDTH))

        screen.blit(OVER, [0, 0])

        font = assets[SCORE_FONT]
        score = font.render("Score:{}".format(bank[1]), True, [255, 0, 0])
        screen.blit(score, (20, 20))

        pygame.display.update()

        if i == 1:
            assets[GAME_OVER].play()
            i = 0

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                over = False
                return QUIT
            if event.type == pygame.KEYDOWN:
                keys_down[event.key] = True
                if event.key == pygame.K_TAB:
                    return GAME
def tela_ante1(window):
    ''' tela antes da 1, com suspense'''
    clock = pygame.time.Clock()
    assets = load_assets()
    FPS = 15

    all_sprites = pygame.sprite.Group()
    DONE = 0
    PLAYING = 3
    state = PLAYING
    keys_down = {}
    pygame.mixer.music.play(loops=-1)
    
    while state != DONE:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                state = DONE
                return SAIR    
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    return TELA1
    
        window.fill((0, 0, 0))  # Preenche com a cor preta
        window.blit(assets['antes_fase_1'], (0, 0))
        all_sprites.draw(window)   
        pygame.display.update()
Exemple #11
0
def init_screen(window):
    # Variável para o ajuste de velocidade
    clock = pygame.time.Clock()

    # Carrega os asssets
    assets = load_assets()
    # ===== Loop principal =====
    inicio = True
    while inicio:
        clock.tick(FPS)
        # ----- Trata eventos
        for event in pygame.event.get():
            # ----- Verifica consequências
            if event.type == pygame.QUIT:
                state = DONE
                inicio = False

            if event.type == pygame.KEYUP:
                state = PLAYING
                inicio = False

        #atualiza a tela
        window.fill(BLACK)
        window.blit(assets['inicio'], assets['inicio_rect'])
        pygame.display.flip()
    return state
def tela_final(TELA, vitoria):
    clock = pygame.time.Clock()

    assets = assets_file.load_assets()

    estado = TELA_FINAL
    last_flick = 0  # Press Any Key piscando

    while estado != QUIT and estado != GAME:
        clock.tick(FPS)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                estado = QUIT
            elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
                estado = GAME

        if estado == TELA_FINAL and vitoria == 1:
            TELA.fill(BLACK)

            TELA.blit(assets['background'], ORIGEM)

            TELA.blit(assets['TelaFinal'], ORIGEM)

            TELA.blit(assets['Player1Win'], ORIGEM)

            if last_flick < FPS:
                TELA.blit(assets['PressSpace'], ORIGEM)
                last_flick += 1
            elif last_flick == FPS * 2 - 1:
                last_flick = 0
            else:
                last_flick += 1

        if estado == TELA_FINAL and vitoria == 2:

            TELA.fill(BLACK)

            TELA.blit(assets['background'], ORIGEM)

            TELA.blit(assets['TelaFinal'], ORIGEM)

            TELA.blit(assets['Player2Win'], ORIGEM)

            if last_flick < FPS:
                TELA.blit(assets['PressSpace'], ORIGEM)
                last_flick += 1
            elif last_flick == FPS * 2 - 1:
                last_flick = 0
            else:
                last_flick += 1

        pygame.display.update()

    return estado
def death_screen(janela, score):

    #Carregando fontes
    assets = load_assets()
    gameover_fnt = assets[GAMEOVER_FNT]
    result_fnt = assets[RESULT_FNT]
    enter_fnt = assets[ENTER_FNT]

    #Preenche a janela de preto
    janela.fill(BLACK)

    #Colocando 'GAMEOVER'
    gameover_surface = gameover_fnt.render("GAME OVER", True, RED)
    gameover_rect = gameover_surface.get_rect()
    gameover_rect.midtop = (WIDTH / 2, HEIGHT / 2 - 50)

    #Colocando 'SCORE'
    result_surface = result_fnt.render("SCORE: {}".format(score), True, WHITE)
    result_rect = result_surface.get_rect()
    result_rect.midtop = (WIDTH / 2, HEIGHT / 1.5)

    #Colocando indicar
    enter_surface = enter_fnt.render("PRESS ENTER TO GO BACK", True, WHITE)
    enter_rect = enter_surface.get_rect()
    enter_rect.midtop = (WIDTH / 2, HEIGHT - 110)
    janela.blit(enter_surface, enter_rect)

    #Atualizando janela
    janela.blit(gameover_surface, gameover_rect)
    janela.blit(result_surface, result_rect)

    running = True
    while running:

        # Processa os eventos (mouse, teclado, botão, etc).
        for event in pygame.event.get():
            # Verifica se foi fechado.
            if event.type == pygame.QUIT:
                state = QUIT
                running = False

            # Verifica se alguma tecla foi apertada:
            if event.type == pygame.KEYUP:
                key = pygame.key.get_pressed()
                # Verifica se return foi apertado
                if event.key == pygame.K_RETURN:
                    state = INIT
                    running = False

        pygame.display.flip()

    return state
Exemple #14
0
def load_assets_from_cpp(GPS_coords):
    """ returns a 3n x 1 array of asset coordinates in the world. The dimensions
	are for simplicity with integration with c++. The list MUST be a numpy array."""
    asset_types = ['SNSF', 'MKRF']
    asset_list = []
    for asset_type in asset_types:
        assets = load_assets("A27",
                             asset_type,
                             XCOORD=GPS_coords[0],
                             YCOORD=GPS_coords[1],
                             max_dist=50)

        for (ind, asset) in assets.iterrows():
            asset_list.append(
                [asset['XCOORD'], asset['HEIGHT'], asset['YCOORD']])
    # must return assets a numpy array
    return [np.array(asset_list), assets]
def select_size():
    RUNNING = 1
    QUIT    = 0

    X_CLICK = False
    state   = RUNNING

    assets  = load_assets()
    
    while state != QUIT:
        x, y = pygame.mouse.get_pos()
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                state = QUIT

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    return False

            if event.type == pygame.MOUSEBUTTONDOWN:
                if x_btn.collidepoint(x, y):
                    X_CLICK = True

            if event.type == pygame.MOUSEBUTTONUP:
                if x_btn.collidepoint(x, y):
                    return False
                else:
                    X_CLICK = False

        x_btn = pygame.draw.rect(window, INSPER_RED, (20, 20, main_menu_btn_h, main_menu_btn_h))
        window.blit(assets['background_day'], (0, 0))

        if X_CLICK == False:
            window.blit(assets['x_img_0'], (20, 20))
        else:
            window.blit(assets['x_img_1'], (20, 20))

        pygame.display.update()
        clock.tick(FPS)

    pygame.quit()
    pygame.mixer.quit()
Exemple #16
0
def main():

    asset_types = ['SNSF', 'MKRF']
    asset_df = pd.DataFrame(columns=['Easting', 'Northing'])

    for asset_type in asset_types:
        assets = load_assets("A27", asset_type)

        assets['Easting'] = assets['XCOORD']
        assets['Northing'] = assets['YCOORD']

        # adding lat Lon
        bar = Bar("Scraping elevation data for {}...".format(asset_type),
                  max=len(assets))
        assets = add_lat_lon(assets)
        elevations = []
        for (ind, asset) in assets.iterrows():
            # get elevation and add to to height.

            elevation = elevation_gmaps(float(asset['lat']),
                                        float(asset['lon']))
            asset_df = asset_df.append(
                {
                    'Easting': asset['Easting'],
                    'Northing': asset['Northing'],
                    'Elevation': elevation,
                    'Height': asset['HEIGHT'],
                    'Type': asset_type
                },
                ignore_index=True)

            bar.next()
        bar.finish()

    # save
    data_dir = "/media/tom/HD#39/Year2/A27/Sequences/2368_0/"
    asset_df.to_csv(os.path.join(data_dir, "assets_elevation.txt"),
                    sep=' ',
                    header=True,
                    index=False)
def init_screen(screen):
    assets = load_assets()
    # Variável para o ajuste de velocidade
    clock = pygame.time.Clock()

    # Carrega o fundo da tela inicial
    background = pygame.image.load(path.join(
        IMG_DIR, 'menu-background.jpeg')).convert()
    background = pygame.transform.scale(assets['menu_background'],
                                        (WIDTH, HEIGHT))
    background_rect = background.get_rect()

    running = True
    while running:

        # Ajusta a velocidade do jogo.
        clock.tick(FPS)

        # Processa os eventos (mouse, teclado, botão, etc).
        for event in pygame.event.get():
            # Verifica se foi fechado.
            if event.type == pygame.QUIT:
                state = QUIT
                running = False

            if event.type == pygame.KEYUP:
                state = GAME
                running = False

        # A cada loop, redesenha o fundo e os sprites
        screen.fill(BLACK)
        screen.blit(background, background_rect)

        # Depois de desenhar tudo, inverte o display.
        pygame.display.flip()

    return state
Exemple #18
0
pygame.init()

# Resolução da Tela
TELA = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('Space Battle')
lastFlick = 0

QUIT = 0
TELA_INICIAL = 1
INSTRUCOES = 2
GAME = 3
TELA_FINAL = 4

WIN = 1

assets = assets_file.load_assets()

clock = pygame.time.Clock()
game = TELA_FINAL
last_flick = 0  # Press Any Key piscando

while game != QUIT and game != GAME:
    clock.tick(FPS)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game = QUIT
        elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
            game = GAME

    if game == TELA_FINAL and WIN == 1:
def tela3(window):
    ''' tela em que o jogador enfrentará o arqueiro que atira flechas que descontam 2 vidas do jogador'''
    pygame.mixer.music.stop()
    pygame.mixer.music.load('Dungeons/musicatela3.mp3')
    pygame.mixer.music.set_volume(0.1)
    pygame.mixer.music.play()

    clock = pygame.time.Clock()
    assets = load_assets()
    FPS = 15

    all_sprites = pygame.sprite.Group()
    all_arqueiros = pygame.sprite.Group()
    all_flechas = pygame.sprite.Group()
    groups = {}
    groups['all_sprites'] = all_sprites
    groups['all_arqueiros'] = all_arqueiros
    groups['all_flechas'] = all_flechas
    player = Character(groups, assets)
    all_sprites.add(player)

    global score
    global lives
    DONE = 0
    PLAYING = 3
    state = PLAYING
    keys_down = {}
    
    pygame.mixer.music.play(loops=-1)

    available_arqueiros = 8
    last_arqueiro = pygame.time.get_ticks()
    
    while state != DONE:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return SAIR
            if state == PLAYING:    
                if event.type == pygame.KEYDOWN:
                    keys_down[event.key] = True
                    if event.key == pygame.K_LEFT:
                        player.speedx -= 2
                    if event.key == pygame.K_RIGHT:
                        player.speedx += 2
                    if event.key == pygame.K_SPACE or event.key == pygame.K_UP:
                        player.jump()
                    if event.key == pygame.K_k:
                        player.attack()
                if event.type == pygame.KEYUP:
                    if event.key in keys_down and keys_down[event.key]:
                        if event.key == pygame.K_LEFT:
                            player.speedx += 2
                        if event.key == pygame.K_RIGHT:
                            player.speedx -= 2
                        if event.key == pygame.K_k:
                            player.attack()
                    keys_down[event.key] = False
        #Atualiza Jogo
        
        now = pygame.time.get_ticks()
        if available_arqueiros > 0 and now - last_arqueiro > 3000:
            arqueiro = Arqueiro(assets, groups) 

            all_sprites.add(arqueiro)
            all_arqueiros.add(arqueiro)
            available_arqueiros -= 1
            last_arqueiro = now

        all_sprites.update()

        if state == PLAYING:
            hits = pygame.sprite.spritecollide(player, all_arqueiros, False, pygame.sprite.collide_mask)
            for arqueiro in hits:
                if player.attacking:
                    arqueiro.kill()
                    score+=100
                else:
                    lives -= 1
                    if lives <= 0:
                        return TELA_GAMEOVER

            hits = pygame.sprite.spritecollide(player, all_flechas, True, pygame.sprite.collide_mask)
            for flechas in hits:
                lives -= 2
                if lives <= 0:
                    return TELA_GAMEOVER
     
    
            if len(all_arqueiros) == 0 and available_arqueiros == 0:
                return TELA_PRE_BOSS
        
        window.fill((0, 0, 0))  # Preenche com a cor branca
        window.blit(assets['fundotela3'], (0, 0))
        all_sprites.draw(window)
        
        text_surface = assets['score_font'].render("{:08d}".format(score), True, (255, 255, 0))
        text_rect = text_surface.get_rect()
        text_rect.midtop = (WIDTH / 2,  10)
        window.blit(text_surface, text_rect)

        text_surface = assets['score_font2'].render(chr(9829) * lives, True, (255, 0, 0))
        text_rect = text_surface.get_rect()
        text_rect.bottomleft = (10, HEIGHT - 10)
        window.blit(text_surface, text_rect)

        pygame.display.update()
def tela4(window):
    ''' tela do chefão, que contempla todos os outros inimigos e com a maior dificuldade do jogo'''
    pygame.mixer.music.stop()
    pygame.mixer.music.load('Dungeons/musicatelaboss_certo.mp3')
    pygame.mixer.music.set_volume(0.1)
    pygame.mixer.music.play()

    clock = pygame.time.Clock()
    assets = load_assets()
    FPS = 15
    
    all_sprites = pygame.sprite.Group()
    all_mobs = pygame.sprite.Group()
    all_bosses = pygame.sprite.Group()
    all_flechas = pygame.sprite.Group()
    all_bullets = pygame.sprite.Group()
    groups = {}
    groups['all_sprites'] = all_sprites
    groups['all_mobs'] = all_mobs
    groups['all_bosses'] = all_bosses
    groups['all_flechas'] = all_flechas
    groups['all_bullets'] = all_bullets
    player = Character(groups, assets)
    all_sprites.add(player)

    for i in range(1):
        boss = Boss(assets, groups) 
        all_sprites.add(boss)
        all_bosses.add(boss)
    
    global score
    global lives
    
    lives_boss = 5  
    DONE = 0
    PLAYING = 3
    state = PLAYING
    keys_down = {}
    
    pygame.mixer.music.play(loops=-1)
    last_mob = pygame.time.get_ticks()

    while state != DONE:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return SAIR
            if state == PLAYING:    
                if event.type == pygame.KEYDOWN:
                    keys_down[event.key] = True
                    if event.key == pygame.K_LEFT:
                        player.speedx -= 2
                    if event.key == pygame.K_RIGHT:
                        player.speedx += 2
                    if event.key == pygame.K_SPACE or event.key == pygame.K_UP:
                        player.jump()
                    if event.key == pygame.K_k:
                        player.attack()
                if event.type == pygame.KEYUP:
                    if event.key in keys_down and keys_down[event.key]:
                        if event.key == pygame.K_LEFT:
                            player.speedx += 2
                        if event.key == pygame.K_RIGHT:
                            player.speedx -= 2
                        if event.key == pygame.K_k:
                            player.attack()
                    keys_down[event.key] = False
        
        #Atualiza Jogo
        now = pygame.time.get_ticks()
        if boss.alive() and now - last_mob > 500:
            classe_mob = random.choice([Mob, Mob2, Arqueiro])
            mob = classe_mob(assets, groups)
            all_sprites.add(mob)
            all_mobs.add(mob)
            last_mob = now

        all_sprites.update()

        if state == PLAYING:
            hits = pygame.sprite.spritecollide(player, all_bosses, False, pygame.sprite.collide_mask)
            for boss in hits:
                if player.attacking:
                    lives_boss-=1
                    if lives_boss == 0:
                        boss.kill()
                else:
                    lives -= 1
                    if lives == 0:
                        return TELA_GAMEOVER

            hits = pygame.sprite.spritecollide(player, all_bullets, False, pygame.sprite.collide_mask)
            for bullet in hits:
                lives -= 3
                if lives <= 0:
                    return TELA_GAMEOVER

            hits = pygame.sprite.spritecollide(player, all_flechas, False, pygame.sprite.collide_mask)
            for flechas in hits:
                lives -= 2
                if lives <= 0:
                    return TELA_GAMEOVER
            
            hits = pygame.sprite.spritecollide(player, all_mobs, False, pygame.sprite.collide_mask)
            for mob in hits:
                if player.attacking:
                    mob.lives -= 1
                    if mob.lives <= 0:
                        mob.kill()
                        score+=100
                    if score % 1000 == 0 :
                        lives += 1
                else:
                    lives -= 1
                    if lives == 0:
                        return TELA_GAMEOVER

            if len(all_bosses) == 0 and len(all_mobs) == 0:
                return TELA_WIN
        
        window.fill((0, 0, 0))  # Preenche com a cor branca
        window.blit(assets['fundo_boss'], (0, 0))
        all_sprites.draw(window)
        
        text_surface = assets['score_font'].render("{:08d}".format(score), True, (255, 255, 0))
        text_rect = text_surface.get_rect()
        text_rect.midtop = (WIDTH / 2,  10)
        window.blit(text_surface, text_rect)

        text_surface = assets['score_font2'].render(chr(9829) * lives, True, (255, 0, 0))
        text_rect = text_surface.get_rect()
        text_rect.bottomleft = (10, HEIGHT - 10)
        window.blit(text_surface, text_rect)

        pygame.display.update()
def tela0(window):
    ''' tela de tutorial para o jogador aprender na prática como será o jogo'''
    pygame.mixer.music.stop()
    pygame.mixer.music.load('Dungeons/florestacerto.mp3')
    pygame.mixer.music.set_volume(0.1)
    pygame.mixer.music.play()

    clock = pygame.time.Clock()
    assets = load_assets()
    FPS = 15

    all_sprites = pygame.sprite.Group()
    all_mobs = pygame.sprite.Group()
    groups = {}
    groups['all_sprites'] = all_sprites
    groups['all_mobs'] = all_mobs
    player = Character(groups, assets)
    all_sprites.add(player)

    for i in range(3):
        mob = Mob(assets, groups)
        all_sprites.add(mob)
        all_mobs.add(mob)
    
    global lives
    global score
    DONE = 0
    PLAYING = 3
    state = PLAYING
    keys_down = {}
    pygame.mixer.music.play(loops=-1)
    while state != DONE:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                state = DONE
                return SAIR
            if event.type == pygame.KEYDOWN:
                keys_down[event.key] = True
                if event.key == pygame.K_LEFT:
                    player.speedx -= 2
                if event.key == pygame.K_RIGHT:
                    player.speedx += 2
                if event.key == pygame.K_k:
                    player.attack()
                if event.key == pygame.K_SPACE or event.key == pygame.K_UP:
                    player.jump()
            if event.type == pygame.KEYUP:
                if event.key in keys_down and keys_down[event.key]:
                    if event.key == pygame.K_LEFT:
                        player.speedx += 2
                    if event.key == pygame.K_RIGHT:
                        player.speedx -= 2
                    
                keys_down[event.key] = False
        #Atualiza Jogo

        all_sprites.update()
       
        if state == PLAYING:
            hits = pygame.sprite.spritecollide(player, all_mobs, False, pygame.sprite.collide_mask)
            for mob in hits:
                if player.attacking:
                    mob.kill()
                    score += 100
                    print(score)
                    if score % 1000 == 0:
                        lives += 1
                else:
                    lives -= 1
                    if lives == 0:
                        return TELA_GAMEOVER
                        
            if len(all_mobs) == 0 : 
                return TELA_ANTE1
        
        window.fill((0, 0, 0))  # Preenche com a cor preta
        window.blit(assets['telainicio1'], (0, 0))
        all_sprites.draw(window)

        text_surface = assets['score_font'].render("{:08d}".format(score), True, (255, 255, 0))
        text_rect = text_surface.get_rect()
        text_rect.midtop = (WIDTH / 2,  10)
        window.blit(text_surface, text_rect)
        
        text_surface = assets['score_font2'].render(chr(9829) * lives, True, (255, 0, 0))
        text_rect = text_surface.get_rect()
        text_rect.bottomleft = (10, HEIGHT - 10)
        window.blit(text_surface, text_rect)
    
        pygame.display.update()    
def tela2(window):
    ''' tela que contempla o segundo mob que tem duas vidas e um machado'''
    pygame.mixer.music.stop()
    pygame.mixer.music.load('Dungeons/tela2.mp3')
    pygame.mixer.music.set_volume(0.1)
    pygame.mixer.music.play()


    clock = pygame.time.Clock()
    assets = load_assets()
    FPS = 15

    all_sprites = pygame.sprite.Group()
    all_mobs2 = pygame.sprite.Group()
    groups = {}
    groups['all_sprites'] = all_sprites
    groups['all_mobs2'] = all_mobs2
    player = Character(groups, assets)
    all_sprites.add(player)
      
    global score
    global lives
    DONE = 0
    PLAYING = 3
    state = PLAYING
    keys_down = {}
    
    pygame.mixer.music.play(loops=-1)

    available_mobs2 = 12
    last_mob2 = pygame.time.get_ticks()
    
    while state != DONE:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return SAIR
            if state == PLAYING:    
                if event.type == pygame.KEYDOWN:
                    keys_down[event.key] = True
                    if event.key == pygame.K_LEFT:
                        player.speedx -= 2
                    if event.key == pygame.K_RIGHT:
                        player.speedx += 2
                    if event.key == pygame.K_SPACE or event.key == pygame.K_UP:
                        player.jump()
                    if event.key == pygame.K_k:
                        player.attack()
                if event.type == pygame.KEYUP:
                    if event.key in keys_down and keys_down[event.key]:
                        if event.key == pygame.K_LEFT:
                            player.speedx += 2
                        if event.key == pygame.K_RIGHT:
                            player.speedx -= 2
                        if event.key == pygame.K_k:
                            player.attack()
                    keys_down[event.key] = False
        #Atualiza Jogo
        now = pygame.time.get_ticks()
        if available_mobs2 > 0 and now - last_mob2 > 500:
            mob2 = Mob2(assets, groups) 
            all_sprites.add(mob2)
            all_mobs2.add(mob2)
            available_mobs2 -= 1
            last_mob2 = now

        all_sprites.update()
        

        if state == PLAYING:
            hits = pygame.sprite.spritecollide(player, all_mobs2, False, pygame.sprite.collide_mask)
            for mob2 in hits:
                if player.attacking:
                    mob2.lives -=1
                    if mob2.lives == 0:
                        mob2.kill()
                        score += 100
                        print(score)
                        if score % 1000 == 0 :
                            lives += 1
                else:
                    lives -= 1
                    if lives == 0:
                        return TELA_GAMEOVER

            if len(all_mobs2) == 0 and available_mobs2 == 0:
                return TELA_PRE_3
        
        window.fill((0, 0, 0))  # Preenche com a cor branca
        window.blit(assets['fundo2'], (0, 0))
        all_sprites.draw(window)

        text_surface = assets['score_font'].render("{:08d}".format(score), True, (255, 255, 0))
        text_rect = text_surface.get_rect()
        text_rect.midtop = (WIDTH / 2,  10)
        window.blit(text_surface, text_rect)

        text_surface = assets['score_font2'].render(chr(9829) * lives, True, (255, 0, 0))
        text_rect = text_surface.get_rect()
        text_rect.bottomleft = (10, HEIGHT - 10)
        window.blit(text_surface, text_rect)

        pygame.display.update()  # Mostra o novo frame para o jogador
def game_screen(screen):

    # Música do jogo
    pygame.mixer.music.set_endevent(pygame.USEREVENT)
    pygame.mixer.music.load(path.join('audio', 'fill.wav'))
    pygame.mixer.music.set_volume(1)
    pygame.mixer.music.play()

    # Variável para o ajuste do FPS
    clock = pygame.time.Clock()

    # Carrega assets
    assets = load_assets(img_dir)

    # Carrega o fundo do jogo
    background = assets[BACKGROUND_IMG]
    # Redimensiona o fundo
    background = pygame.transform.scale(background, (WIDTH, HEIGHT))
    background_rect = background.get_rect()

    # Carrega spritesheet
    player_sheet = pygame.image.load(path.join(img_dir,
                                               'hero.png')).convert_alpha()
    # Cria sprite do jogador
    player = Player(player_sheet)
    # Cria um grupo de todos os sprites e adiciona o jogador
    all_sprites = pygame.sprite.Group()
    all_sprites.add(player)

    # Cria um grupo para guardar somente os sprites do mundo
    world_sprites = pygame.sprite.Group()

    font = pygame.font.Font(path.join(font_dir, 'fonte.TTF'), 40)

    pygame.time.set_timer(
        pygame.USEREVENT + 1,
        10)  # Timer de 100 milisegundos para aumentar a velocidade do jogo

    pygame.time.set_timer(pygame.USEREVENT + 2, random.randint(
        1000,
        2000))  # Timer aleatório de 1 a 2 segundos para criar novos blocos

    # Define o score inicial
    score = 0

    # Define a variável world_speed inicial e a define como como global
    global world_speed
    world_speed = -13

    # Define a variável highscore como global
    global highscore

    # Game Loop
    state = PLAYING
    while state == PLAYING:

        # Ajusta o FPS
        clock.tick(FPS)

        # Processa os eventos
        for event in pygame.event.get():

            if event.type == pygame.USEREVENT + 1:
                # Aumenta a velocidade do jogo
                world_speed -= 1e-3

                # Conta os pontos da partida
                score += 1e-1

            # Cria novos blocos em função do timer
            if event.type == pygame.USEREVENT + 2:
                block_x = random.randint(int(WIDTH), int(WIDTH * 1.5))
                block_y = (GROUND - 130)
                block = Spike(assets[SPIKE_IMG], assets[SNAKE_IMG], block_x,
                              block_y, world_speed)
                world_sprites.add(block)
                all_sprites.add(block)

            if event.type == pygame.USEREVENT:
                pygame.mixer.music.load(path.join('audio', 'song.wav'))
                pygame.mixer.music.set_volume(1)
                pygame.mixer.music.play(-1)

            # Verifica se soltou alguma tecla
            if event.type == pygame.KEYDOWN:
                # Faz o jogador pular
                if event.key == pygame.K_SPACE or event.key == pygame.K_UP:
                    player.JUMPING()

            # Verifica se o jogo foi fechado
            if event.type == pygame.QUIT:
                state = DONE

        hits = pygame.sprite.spritecollide(player, world_sprites, True,
                                           pygame.sprite.collide_mask)

        if len(hits) > 0:
            state = PLAYAGAIN
            death = pygame.mixer.Sound(path.join('audio', 'death.wav'))
            death.set_volume(0.4)
            death.play()
            if score > highscore:
                highscore = score

        all_sprites.update()

        # A cada loop redesenha o fundo e os sprites
        screen.fill(BLACK)
        all_sprites.draw(screen)

        # Atualiza a posição do fundo
        background_rect.x += world_speed

        # Se o fundo saiu da janela, desenha outro pra direita
        if background_rect.right < 0:
            background_rect.x += background_rect.width
        screen.blit(background, background_rect)

        # Desenha a imagem deslocada
        background_rect2 = background_rect.copy()
        background_rect2.x += background_rect2.width
        screen.blit(background, background_rect2)

        # Mostra o score da partida atual
        score_texto = font.render('score: {0}'.format(int(score)), True,
                                  (WHITE))
        screen.blit(score_texto, (30, 70))

        # Mostra o highscore
        highscore_texto = font.render('highscore: {0}'.format(int(highscore)),
                                      True, (WHITE))
        screen.blit(highscore_texto, (30, 25))

        # Desenha os sprites
        all_sprites.draw(screen)

        # Após desenhar inverte o display
        pygame.display.flip()

    return state, highscore, world_speed
def choose_screen(janela):

    # Variável para o ajuste de velocidade
    clock = pygame.time.Clock()

    #Importanto assets
    assets = load_assets()
    escolha_fnt = assets[CHOOSE_FNT]
    title_choose_fnt = assets[TITLE_CHOOSE_FNT]

    #Imagem dos santas para escolher
    santa_light = load_spritesheet(assets[SANTALIGHT], 4, 3)
    santa_light[7] = pygame.transform.scale(santa_light[7], SANTA_SCREEN)

    santa_black = load_spritesheet(assets[SANTABLACK], 4, 3)
    santa_black[7] = pygame.transform.scale(santa_black[7], SANTA_SCREEN)

    #Colocando tela de fundo
    background = pygame.image.load(
        os.path.join('Assets', 'Images', 'BG_01.png')).convert()
    background = pygame.transform.scale(background, (WIDTH, HEIGHT))
    background_rect = background.get_rect()

    #Colocando Título
    title_choose_surface = title_choose_fnt.render("CHOOSE YOUR CHARACTER",
                                                   True, RED)
    title_choose_rect = title_choose_surface.get_rect()
    title_choose_rect.midtop = (WIDTH / 2, 50)
    background.blit(title_choose_surface, title_choose_rect)

    #Atualizando santa e gorro
    background.blit(santa_light[7], (WIDTH * 1 / 4 - 90, HEIGHT / 2))
    background.blit(santa_black[7], (WIDTH * 3 / 4, HEIGHT / 2))

    #Colocando texto da escolha
    escolha_surface = escolha_fnt.render("PRESS < OR >", True, BLACK)
    escolha_rect = escolha_surface.get_rect()
    escolha_rect.midtop = (WIDTH / 2, HEIGHT / 2 + 45)
    background.blit(escolha_surface, escolha_rect)

    running = True
    while running:

        # Ajusta a velocidade do jogo.
        clock.tick(FPS)

        # Processa os eventos (mouse, teclado, botão, etc).
        for event in pygame.event.get():
            # Verifica se foi fechado.
            if event.type == pygame.QUIT:
                state = QUIT
                running = False

            # Verifica se alguma tecla foi apertada
            if event.type == pygame.KEYUP:
                key = pygame.key.get_pressed()

                # Verifica se < ou > foi apertado
                if event.key == pygame.K_LEFT:
                    #Para a musica de entrada, define o estado como GAME e chama a sprite do santa light
                    pygame.mixer.music.stop()
                    state = GAME
                    sprite_jogo = SANTALIGHT
                    running = False

                if event.key == pygame.K_RIGHT:
                    #Para a musica de entrada, define o estado como GAME e chama a sprite do santa black
                    pygame.mixer.music.stop()
                    state = GAME
                    sprite_jogo = SANTABLACK
                    running = False

        # A cada loop, redesenha o fundo e os sprites
        janela.blit(background, background_rect)

        # Depois de desenhar tudo, inverte o display.
        pygame.display.flip()

    retornos = [state, sprite_jogo]
    return retornos
Exemple #25
0
def tela_jogo(TELA):

    assets = assets_file.load_assets()

    pygame.mixer.music.load('resources/music/background_music.wav')
    pygame.mixer.music.set_volume(1.0)

    pygame.mixer.music.play(loops=-1)

    if CORONA:
        assets['corona_on_sound'].play()

    all_sprites = pygame.sprite.Group()
    all_asteroids = pygame.sprite.Group()
    all_lasers_1 = pygame.sprite.Group()
    all_lasers_2 = pygame.sprite.Group()
    all_star = pygame.sprite.Group()
    all_speed = pygame.sprite.Group()
    all_size = pygame.sprite.Group()
    all_powerups = pygame.sprite.Group()

    groups = {}
    groups['all_sprites'] = all_sprites
    groups['all_asteroids'] = all_asteroids
    groups['all_lasers_1'] = all_lasers_1
    groups['all_lasers_2'] = all_lasers_2
    groups['all_star'] = all_star
    groups['all_speed'] = all_speed
    groups['all_size'] = all_size
    groups['all_powerups'] = all_powerups

    player_1 = Ship(groups, assets, 'ship1', 0)
    player_2 = Ship(groups, assets, 'ship2', WIDTH - SHIP_SIZE)

    all_sprites.add(player_1)
    all_sprites.add(player_2)

    for i in range(NUMERO_ASTEROIDES):
        asteroid = Asteroides(assets)
        all_sprites.add(asteroid)
        all_asteroids.add(asteroid)

    lista_Sprites = [all_sprites, all_asteroids, all_lasers_1, all_lasers_2]
    estado = GAME
    delta_tempo = 0

    score_player_1 = 0
    score_player_2 = 0

    player_1_lives = NUMERO_VIDAS
    player_2_lives = NUMERO_VIDAS

    star_player_1 = False
    star_player_2 = False

    player_1_dead = False
    player_2_dead = False

    clock = pygame.time.Clock()
    keys_down = {}
    while estado != TELA_FINAL and estado != QUIT:
        clock.tick(FPS)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                estado = QUIT

            # Pressiona a tecla
            if event.type == pygame.KEYDOWN:
                keys_down[event.key] = True
                #Player 1
                if event.key == pygame.K_w:
                    player_1.speedy -= SHIP_SPEED
                if event.key == pygame.K_s:
                    player_1.speedy += SHIP_SPEED
                if event.key == pygame.K_a:
                    player_1.speedx -= SHIP_SPEED
                if event.key == pygame.K_d:
                    player_1.speedx += SHIP_SPEED
                if event.key == pygame.K_SPACE:
                    player_1.shoot()

                #Player 2
                if event.key == pygame.K_UP:
                    player_2.speedy -= SHIP_SPEED
                if event.key == pygame.K_DOWN:
                    player_2.speedy += SHIP_SPEED
                if event.key == pygame.K_LEFT:
                    player_2.speedx -= SHIP_SPEED
                if event.key == pygame.K_RIGHT:
                    player_2.speedx += SHIP_SPEED
                if event.key == pygame.K_RETURN:
                    player_2.shoot()

            # Solta a tecla
            if event.type == pygame.KEYUP:
                if event.key in keys_down and keys_down[event.key]:
                    #Player 1
                    if event.key == pygame.K_w:
                        player_1.speedy += SHIP_SPEED
                    if event.key == pygame.K_s:
                        player_1.speedy -= SHIP_SPEED
                    if event.key == pygame.K_a:
                        player_1.speedx += SHIP_SPEED
                    if event.key == pygame.K_d:
                        player_1.speedx -= SHIP_SPEED

                    #Player 2
                    if event.key == pygame.K_UP:
                        player_2.speedy += SHIP_SPEED
                    if event.key == pygame.K_DOWN:
                        player_2.speedy -= SHIP_SPEED
                    if event.key == pygame.K_LEFT:
                        player_2.speedx += SHIP_SPEED
                    if event.key == pygame.K_RIGHT:
                        player_2.speedx -= SHIP_SPEED

        all_sprites.update()

        if estado == GAME:
            hits_laser_1_laser_2 = pygame.sprite.groupcollide(
                all_lasers_1, all_lasers_2, True, True,
                pygame.sprite.collide_mask)

            # ======= player 1 ========
            # ------ Power Ups ----------
            hits_player_1_estrelinha = pygame.sprite.spritecollide(
                player_1, all_star, True, pygame.sprite.collide_mask)
            if hits_player_1_estrelinha:
                assets['powerup_sound'].play()
                star_player_1 = True
                player_1.star_ship(True)
                tick_star_player_1 = pygame.time.get_ticks()

            agora = pygame.time.get_ticks()
            if star_player_1 and (agora - tick_star_player_1 > STAR_TIME):
                star_player_1 = False
                player_1.star_ship(False)

            hits_player_1_speed = pygame.sprite.spritecollide(
                player_1, all_speed, True, pygame.sprite.collide_mask)
            if hits_player_1_speed:
                assets['powerup_sound'].play()
                player_1.speed_multiplier()

            hits_player_1_size = pygame.sprite.spritecollide(
                player_1, all_size, True, pygame.sprite.collide_mask)
            if hits_player_1_size:
                assets['powerup_sound'].play()
                player_1.size_multiplier()

            hits_laser_1_powerups = pygame.sprite.groupcollide(
                all_lasers_1, all_powerups, True, True,
                pygame.sprite.collide_mask)

            #--------- Closisões ----------
            hits_asteroid_laser_1 = pygame.sprite.groupcollide(
                all_asteroids, all_lasers_1, True, True,
                pygame.sprite.collide_mask)
            for asteroid in hits_asteroid_laser_1:  # colisão entre asteroids e lasers 1
                assets['explosion_sound'].play()
                novo_asteroid = Asteroides(assets)
                all_sprites.add(novo_asteroid)
                all_asteroids.add(novo_asteroid)

                explode_asteroid = Explode(assets, asteroid.rect.center)
                all_sprites.add(explode_asteroid)

                score_player_1 += 100

                if score_player_1 % 1000 == 0:
                    POWER_UP = random.randint(1, 3)
                    if POWER_UP == 1:
                        estrela = Star(assets, PLAYER_1)
                        all_sprites.add(estrela)
                        all_powerups.add(estrela)
                        all_star.add(estrela)
                    if POWER_UP == 2:
                        velocidade = Speed(assets, PLAYER_1)
                        all_sprites.add(velocidade)
                        all_powerups.add(velocidade)
                        all_speed.add(velocidade)
                    if POWER_UP == 3:
                        tamanho = Size(assets, PLAYER_1)
                        all_sprites.add(tamanho)
                        all_powerups.add(tamanho)
                        all_size.add(tamanho)

            if star_player_1 == True:
                hits_player_1_asteroid = pygame.sprite.spritecollide(
                    player_1, all_asteroids, True, pygame.sprite.collide_mask)
                for asteroid in hits_player_1_asteroid:  # colisão entre asteroids e player 1 com estrela
                    assets['explosion_sound'].play()
                    novo_asteroid = Asteroides(assets)
                    all_sprites.add(novo_asteroid)
                    all_asteroids.add(novo_asteroid)

                    explode_asteroid = Explode(assets, asteroid.rect.center)
                    all_sprites.add(explode_asteroid)
                hits_player_1_laser_2 = pygame.sprite.spritecollide(
                    player_1, all_lasers_2, True, pygame.sprite.collide_mask)
            else:
                hits_player_1_asteroid = pygame.sprite.spritecollide(
                    player_1, all_asteroids, True, pygame.sprite.collide_mask)
                if hits_player_1_asteroid:  # colisão entre asteroids e player 1
                    assets['explosion_sound'].play()
                    explode_player_1 = Explode(assets, player_1.rect.center)
                    all_sprites.add(explode_player_1)
                    player_1.kill()
                    estado = EXPLODING

                    player_1_dead = True
                    player_1_lives -= 1
                    tick_explosao = pygame.time.get_ticks()

                hits_player_1_laser_2 = pygame.sprite.spritecollide(
                    player_1, all_lasers_2, True, pygame.sprite.collide_mask)
                if hits_player_1_laser_2:  # colisão entre laser 2 e player 1
                    assets['explosion_sound'].play()
                    explode_player_1 = Explode(assets, player_1.rect.center)
                    all_sprites.add(explode_player_1)
                    player_1.kill()
                    estado = EXPLODING
                    player_1_dead = True
                    player_1_lives -= 1
                    tick_explosao = pygame.time.get_ticks()

            # ======= player 1 ========
            # ------ Power Ups ----------
            hits_player_2_estrelinha = pygame.sprite.spritecollide(
                player_2, all_star, True, pygame.sprite.collide_mask)
            if hits_player_2_estrelinha:
                assets['powerup_sound'].play()
                star_player_2 = True
                player_2.star_ship(True)
                tick_star_player_2 = pygame.time.get_ticks()

            agora = pygame.time.get_ticks()
            if star_player_2 and (agora - tick_star_player_2 > STAR_TIME):
                star_player_2 = False
                player_2.star_ship(False)

            hits_player_2_speed = pygame.sprite.spritecollide(
                player_2, all_speed, True, pygame.sprite.collide_mask)
            if hits_player_2_speed:
                assets['powerup_sound'].play()
                player_2.speed_multiplier()

            hits_player_2_size = pygame.sprite.spritecollide(
                player_2, all_size, True, pygame.sprite.collide_mask)
            if hits_player_2_size:
                assets['powerup_sound'].play()
                player_2.size_multiplier()

            hits_laser_2_powerups = pygame.sprite.groupcollide(
                all_lasers_2, all_powerups, True, True,
                pygame.sprite.collide_mask)

            # -------- Colisões ------------
            hits_asteroid_laser_2 = pygame.sprite.groupcollide(
                all_asteroids, all_lasers_2, True, True,
                pygame.sprite.collide_mask)
            for asteroid in hits_asteroid_laser_2:  # colisão entre asteroids e lasers 2
                assets['explosion_sound'].play()
                novo_asteroid = Asteroides(assets)
                all_sprites.add(novo_asteroid)
                all_asteroids.add(novo_asteroid)

                explode_asteroid = Explode(assets, asteroid.rect.center)
                all_sprites.add(explode_asteroid)

                score_player_2 += 100

                if score_player_2 % 1000 == 0:
                    POWER_UP = random.randint(1, 3)
                    if POWER_UP == 1:
                        estrela = Star(assets, PLAYER_2)
                        all_sprites.add(estrela)
                        all_powerups.add(estrela)
                        all_star.add(estrela)
                    if POWER_UP == 2:
                        velocidade = Speed(assets, PLAYER_2)
                        all_sprites.add(velocidade)
                        all_powerups.add(velocidade)
                        all_speed.add(velocidade)
                    if POWER_UP == 3:
                        tamanho = Size(assets, PLAYER_2)
                        all_sprites.add(tamanho)
                        all_powerups.add(tamanho)
                        all_size.add(tamanho)
            if star_player_2:
                hits_player_2_asteroid = pygame.sprite.spritecollide(
                    player_2, all_asteroids, True, pygame.sprite.collide_mask)
                for asteroid in hits_player_2_asteroid:  # colisão entre asteroids e player 1 com estrela
                    assets['explosion_sound'].play()
                    novo_asteroid = Asteroides(assets)
                    all_sprites.add(novo_asteroid)
                    all_asteroids.add(novo_asteroid)

                    explode_asteroid = Explode(assets, asteroid.rect.center)
                    all_sprites.add(explode_asteroid)
                hits_player_2_laser_2 = pygame.sprite.spritecollide(
                    player_2, all_lasers_1, True, pygame.sprite.collide_mask)
            else:
                hits_player_2_asteroid = pygame.sprite.spritecollide(
                    player_2, all_asteroids, True, pygame.sprite.collide_mask)
                if hits_player_2_asteroid:  # colisão entre asteroids e player 2
                    assets['explosion_sound'].play()
                    explode_player_2 = Explode(assets, player_2.rect.center)
                    all_sprites.add(explode_player_2)
                    player_2.kill()
                    estado = EXPLODING

                    player_2_dead = True
                    player_2_lives -= 1
                    tick_explosao = pygame.time.get_ticks()

                hits_player_2_laser_1 = pygame.sprite.spritecollide(
                    player_2, all_lasers_1, True, pygame.sprite.collide_mask)
                if hits_player_2_laser_1:  # colisão entre laser 1 e player 2
                    assets['explosion_sound'].play()
                    explode_player_2 = Explode(assets, player_2.rect.center)
                    all_sprites.add(explode_player_2)
                    player_2.kill()
                    estado = EXPLODING
                    player_2_dead = True
                    player_2_lives -= 1
                    tick_explosao = pygame.time.get_ticks()

        # ---------- rotina de explosão do player
        elif estado == EXPLODING:
            agora = pygame.time.get_ticks()
            if agora - tick_explosao > DURACAO_EXPLOSAO:
                if player_1_dead:
                    if player_1_lives == 0:
                        estado = TELA_FINAL
                        vitoria = PLAYER_2
                    else:
                        player_2.kill()
                        player_1 = Ship(groups, assets, 'ship1', 0)
                        player_2 = Ship(groups, assets, 'ship2',
                                        WIDTH - SHIP_SIZE)
                        all_sprites.add(player_1)
                        all_sprites.add(player_2)
                        keys_down = {}
                        player_1_dead = False
                        estado = GAME

                if player_2_dead:
                    if player_2_lives == 0:
                        estado = TELA_FINAL
                        vitoria = PLAYER_1
                    else:
                        player_1.kill()
                        player_1 = Ship(groups, assets, 'ship1', 0)
                        player_2 = Ship(groups, assets, 'ship2',
                                        WIDTH - SHIP_SIZE)
                        all_sprites.add(player_1)
                        all_sprites.add(player_2)
                        keys_down = {}
                        player_2_dead = False
                        estado = GAME

        else:
            estado = TELA_FINAL

        TELA.fill(BLACK)
        TELA.blit(assets['background'], ORIGEM)

        all_sprites.draw(TELA)

        # ---------- Vidas dos players -----------
        if player_1_lives > 0:
            for lives in range(player_1_lives):
                TELA.blit(assets['heart'], (20 + 35 * lives, HEIGHT - 50))

        if player_2_lives > 0:
            for lives in range(player_2_lives):
                TELA.blit(assets['heart'],
                          (WIDTH - 55 - 35 * lives, HEIGHT - 50))

        # --------- Score do player 1 -------------
        text_surface = assets['font_score'].render(
            "{:07d}".format(score_player_1), True, WHITE)
        text_rect = text_surface.get_rect()
        text_rect.midtop = (WIDTH / 4, 5)
        TELA.blit(text_surface, text_rect)

        # --------- Score do player 2 -------------
        text_surface = assets['font_score'].render(
            "{:07d}".format(score_player_2), True, WHITE)
        text_rect = text_surface.get_rect()
        text_rect.midtop = (3 * WIDTH / 4, 5)
        TELA.blit(text_surface, text_rect)

        pygame.display.update()

    resultado = [estado, vitoria]
    return resultado
Exemple #26
0
def screen_game(window):
    clock = pygame.time.Clock()
    assets = load_assets()
    #Grupos
    all_sprites = pygame.sprite.Group()
    all_poderzin = pygame.sprite.Group()
    all_bullets = pygame.sprite.Group()
    groups = {}
    groups['all_sprites'] = all_sprites
    groups['all_poderzin'] = all_poderzin
    groups['all_bullets'] = all_bullets

    som_game = assets[SOUND_GAMING]
    som_game.play()
    som_game.set_volume(0.02)

    #Criando o Chefão
    chefão = Boss(groups, assets)
    all_sprites.add(chefão)
    #Criando o jogador
    player = Personagem(groups, assets)
    all_sprites.add(player)
    #Criando os poderes do boss
    for i in range(8):
        poder = Poderzin(assets, chefão)
        all_sprites.add(poder)
        all_poderzin.add(poder) 

    # Possíveis estados do jogador
    STILL = 0
    JUMPING = 1
    FALLING = 2


    keys_down = {}
    lives_hero = 3
    lives_boss = 5

    # ======== Loop principal =========
    running = True
    while running:
        clock.tick(FPS) 

        for event in pygame.event.get():

            if event.type == pygame.QUIT:
                state = QUIT
                pygame.quit() 

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    player.speedx -= SPEEDX
                if event.key == pygame.K_RIGHT:
                    player.speedx += SPEEDX
                if event.key == pygame.K_UP:
                    player.pulo()
                    som_pulo = assets[SOUND_JUMP]
                    som_pulo.set_volume(0.2)
                    som_pulo.play()
                if event.key == pygame.K_SPACE:
                    player.shoot()
                if event.key == pygame.K_q:
                    state = QUIT
                    pygame.quit()
           
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT:
                    player.speedx += SPEEDX
                if event.key == pygame.K_RIGHT:
                    player.speedx -= SPEEDX
        #Colisões entre poder do boss e personagem
        hits = pygame.sprite.spritecollide(player, all_poderzin, True, pygame.sprite.collide_mask)
        if len(hits) > 0:
            som_hit_hero = assets[SOUND_HIT_HERO]
            som_hit_hero.set_volume(0.05)
            som_hit_hero.play()
            lives_hero -= 1
        if lives_hero == 0:
            som_game.set_volume(0)
            som_loses = pygame.mixer.Sound('assets/snd/death.ogg')
            som_loses.set_volume(0.03)
            som_loses.play()
            time.sleep(2.8)
            state = LOSE
            running = False 
        #Colisões entre poder do personagem e boss
        hits_2 = pygame.sprite.spritecollide(chefão, all_bullets, True, pygame.sprite.collide_mask)
        if len(hits_2) > 0:
            som_hit_boss = assets[SOUND_HIT_BOSS]
            som_hit_boss.set_volume(0.05)
            som_hit_boss.play()
            lives_boss -= 1
        if lives_boss == 0:
            som_game.set_volume(0)
            som_goal = assets[SOUND_GOAL]
            som_goal.set_volume(0.6)
            som_goal.play()
            time.sleep(7.8)
            state = WON
            running = False

        #atualiza estado do jogo
        all_sprites.update()

        #gera sáidas
        window.fill((46, 139, 87))
        window.blit(assets['background'],(0,0))

        # Desenhando as vidas do player
        text_surface = assets["score_font"].render(chr(9829) * lives_hero, True, (255, 0, 0))
        text_rect = text_surface.get_rect()
        text_rect.bottomleft = (10, altura_background - 10)
        window.blit(text_surface, text_rect)

        # Desenhando as vidas do chefão
        text_surface = assets["score_font"].render(chr(9829) * lives_boss, True, (104, 34, 139))
        text_rect = text_surface.get_rect()
        text_rect.topright = (largura_background - 10, 10)
        window.blit(text_surface, text_rect)
        
        #desenhando sprites
        all_sprites.draw(window)

        #mostra o novo frame para o jogador
        pygame.display.update()
    
    return state
Exemple #27
0
import pygame
import os
import ctypes
ctypes.windll.user32.SetProcessDPIAware()
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (0, 0)
pygame.init()
from pygame.locals import *
flags = NOFRAME | DOUBLEBUF
#resolution = (value["init.window_width"], value["init.window_height"])
screen = pygame.display.set_mode((0, 0), flags)
print(screen)
from assets import load_assets, load_configs, _systems_path, get_path, texture
load_configs()
load_assets(screen)
print("Passed Configs and Assets")
from weapon import create_bullet_templates
create_bullet_templates()

from entity.powerup import EarthHealPack, HealthPack
earth_pack = EarthHealPack(None, (32, 32), False)
heal_pack = HealthPack(None, (-32, -32), False)
print("Passed Powerup")

from entity.planets import Sun
sun = Sun(None)
print("Passed Planets")

from entity.enemy import Goblin, Bombarder, Hunter
g = Goblin(None, (0, 0), earth)
b = Bombarder(None, (0, 0), earth)
h = Hunter(None, (0, 0), earth)
Exemple #28
0
import pygame
from config import WIDTH, HEIGHT, espaço_da_tela
from assets import load_assets

# Carrega os asssets
assets = load_assets()


class Player(pygame.sprite.Sprite):
    def __init__(self, img, player):
        # Construtor da classe mãe (Sprite).
        pygame.sprite.Sprite.__init__(self)
        self.image = img
        self.rect = self.image.get_rect()
        if player == 1:
            self.rect.left = espaço_da_tela
        if player == 2:
            self.rect.right = WIDTH - espaço_da_tela
        self.rect.centery = HEIGHT / 2
        self.speedy = 0

    def update(self):
        # Atualização da posição da nave
        self.rect.y += self.speedy
        # Mantem dentro da tela
        if self.rect.top < 0:
            self.rect.top = 0
        if self.rect.bottom > HEIGHT:
            self.rect.bottom = HEIGHT

Exemple #29
0
    with open('save.json','w') as save_json:
        save_data = {
            "high_score" : 0,
            "coins" : 0,
            "shoot_speed" : 0,
            "difficulty" : 6
        }
        dic_json = json.dumps(save_data)
        save_json.write(dic_json)

# Inicializando o pygame e mixer
pygame.init()
pygame.mixer.init()
  
window = create_window(SCR_WIDTH,SCR_HEIGHT) # Cria janela 
assets = load_assets() # Carrega assets


window.fill((125, 190, 215))
pygame.display.update()

# Inicia timers das nuvens e cria seu sprite group
cloudtimer = 0
cloudtimetocreate = 1
clouds = pygame.sprite.Group()

# Arruma ticks
game_clock = pygame.time.Clock()


global_state = TITLE
Exemple #30
0
def game_screen(window):
    # Variável para o ajuste de velocidade
    clock = pygame.time.Clock()

    assets = load_assets()

    # Criando um grupo de meteoros
    all_sprites = pygame.sprite.Group()
    all_meteors = pygame.sprite.Group()
    all_bullets = pygame.sprite.Group()
    groups = {}
    groups['all_sprites'] = all_sprites
    groups['all_meteors'] = all_meteors
    groups['all_bullets'] = all_bullets

    # Criando o jogador
    player = Ship(groups, assets)
    all_sprites.add(player)
    # Criando os meteoros
    for i in range(8):
        meteor = Meteor(assets)
        all_sprites.add(meteor)
        all_meteors.add(meteor)

    DONE = 0
    PLAYING = 1
    EXPLODING = 2
    state = PLAYING

    keys_down = {}
    score = 0
    lives = 3

    # ===== Loop principal =====
    pygame.mixer.music.play(loops=-1)
    while state != DONE:
        clock.tick(FPS)

        # ----- Trata eventos
        for event in pygame.event.get():
            # ----- Verifica consequências
            if event.type == pygame.QUIT:
                state = DONE
            # Só verifica o teclado se está no estado de jogo
            if state == PLAYING:
                # Verifica se apertou alguma tecla.
                if event.type == pygame.KEYDOWN:
                    # Dependendo da tecla, altera a velocidade.
                    keys_down[event.key] = True
                    if event.key == pygame.K_LEFT:
                        player.speedx -= 8
                    if event.key == pygame.K_RIGHT:
                        player.speedx += 8
                    if event.key == pygame.K_SPACE:
                        player.shoot()
                # Verifica se soltou alguma tecla.
                if event.type == pygame.KEYUP:
                    # Dependendo da tecla, altera a velocidade.
                    if event.key in keys_down and keys_down[event.key]:
                        if event.key == pygame.K_LEFT:
                            player.speedx += 8
                        if event.key == pygame.K_RIGHT:
                            player.speedx -= 8

        # ----- Atualiza estado do jogo
        # Atualizando a posição dos meteoros
        all_sprites.update()

        if state == PLAYING:
            # Verifica se houve colisão entre tiro e meteoro
            hits = pygame.sprite.groupcollide(all_meteors, all_bullets, True, True, pygame.sprite.collide_mask)
            for meteor in hits: # As chaves são os elementos do primeiro grupo (meteoros) que colidiram com alguma bala
                # O meteoro e destruido e precisa ser recriado
                assets[DESTROY_SOUND].play()
                m = Meteor(assets)
                all_sprites.add(m)
                all_meteors.add(m)

                # No lugar do meteoro antigo, adicionar uma explosão.
                explosao = Explosion(meteor.rect.center, assets)
                all_sprites.add(explosao)

                # Ganhou pontos!
                score += 100
                if score % 1000 == 0:
                    lives += 1

            # Verifica se houve colisão entre nave e meteoro
            hits = pygame.sprite.spritecollide(player, all_meteors, True, pygame.sprite.collide_mask)
            if len(hits) > 0:
                # Toca o som da colisão
                assets[BOOM_SOUND].play()
                player.kill()
                lives -= 1
                explosao = Explosion(player.rect.center, assets)
                all_sprites.add(explosao)
                state = EXPLODING
                keys_down = {}
                explosion_tick = pygame.time.get_ticks()
                explosion_duration = explosao.frame_ticks * len(explosao.explosion_anim) + 400
        elif state == EXPLODING:
            now = pygame.time.get_ticks()
            if now - explosion_tick > explosion_duration:
                if lives == 0:
                    state = DONE
                else:
                    state = PLAYING
                    player = Ship(groups, assets)
                    all_sprites.add(player)

        # ----- Gera saídas
        window.fill(BLACK)  # Preenche com a cor branca
        window.blit(assets[BACKGROUND], (0, 0))
        # Desenhando meteoros
        all_sprites.draw(window)

        # Desenhando o score
        text_surface = assets[SCORE_FONT].render("{:08d}".format(score), True, YELLOW)
        text_rect = text_surface.get_rect()
        text_rect.midtop = (WIDTH / 2,  10)
        window.blit(text_surface, text_rect)

        # Desenhando as vidas
        text_surface = assets[SCORE_FONT].render(chr(9829) * lives, True, RED)
        text_rect = text_surface.get_rect()
        text_rect.bottomleft = (10, HEIGHT - 10)
        window.blit(text_surface, text_rect)

        pygame.display.update()  # Mostra o novo frame para o jogador
def game_screen(janela, record, sprite_jogo):

    pygame.mixer.music.load('Assets/Sounds/SoundTrack.mp3')
    pygame.mixer.music.set_volume(0.1)
    game_on = True

    pygame.mixer.music.play(loops =-1)
    background = Background() # cria o background usando a class Background (está no arquivo "classes")
    clock = pygame.time.Clock()

    assets = load_assets()

    # Criando os grupos de sprites
    all_sprites = pygame.sprite.Group()
    all_snowballs = pygame.sprite.Group()
    all_cookies = pygame.sprite.Group()
    all_hats = pygame.sprite.Group()

    groups = {}
    groups['all_sprites'] = all_sprites
    groups['all_snowballs'] = all_snowballs
    groups['all_cookies'] = all_cookies
    groups['all_hats'] = all_hats

    #Carrega o player sheet e cria a sprite do Santa
    santa = Santa(assets[sprite_jogo],groups,assets)
    all_sprites.add(santa)

    #Criando bolas de neve
    for i in range(3):
        snowball = Snowball(assets)
        all_sprites.add(snowball)
        all_snowballs.add(snowball)

    #Criando cookies
    for i in range(2):
        cookie = Cookie(assets)
        all_sprites.add(cookie)
        all_cookies.add(cookie)

    #Score inicial
    score = 0

    # Game Loop
    game_on = True

    while game_on:

        pygame.time.delay(20)
        delta_time = clock.tick(FPS) # garante um FPS máximo

        #Plano de fundo
        background.uptade(delta_time)
        background.render(janela,score)

        #Desenha todos os sprites
        all_sprites.draw(janela)
        all_sprites.update()

        #Atualizando jogo
        pygame.display.flip()
        pygame.display.update()

        eventos = pygame.event.get()

        for evento in eventos:
            if evento.type == pygame.QUIT:
                pygame.quit()
                game_on = False

            key = pygame.key.get_pressed()

            if evento.type == pygame.KEYDOWN:
                # Dependendo da tecla, altera o estado do jogador.

                if evento.key == pygame.K_RIGHT:
                    santa.speedx += 9

                elif evento.key == pygame.K_LEFT:
                    santa.speedx -= 9

                elif evento.key == pygame.K_SPACE:
                        santa.throw()

                elif evento.key == pygame.K_UP and santa.rect.centery == 600:
                    santa.speedy -= 14
                    assets[JUMP_SOUND].play()

                elif evento.key == pygame.K_h:
                    assets[HOHOHO_SOUND].play()


            if evento.type == pygame.KEYUP:
                if evento.key == pygame.K_RIGHT:
                    santa.speedx -= 9

                elif evento.key == pygame.K_LEFT:
                    santa.speedx += 9

        #Aumenta o score
        score += 1

        #Aumentando e limitando a dificuldade do jogo
        if len(all_snowballs) < 3 + score/2000 and score <= 10000:
            snowball = Snowball(assets)
            all_sprites.add(snowball)
            all_snowballs.add(snowball)

        
        #Premiando o jogador com mais cookies
        if len(all_cookies) < 2 + score/5000 and score <= 10000:
            cookie = Cookie(assets)
            all_sprites.add(cookie)
            all_cookies.add(cookie)

        #Colisão santa com cookies
        hits_santa_cookies = pygame.sprite.spritecollide(santa,all_cookies , True, pygame.sprite.collide_mask)

        #Caso o santa colida com as bolas
        for hit in hits_santa_cookies:
            assets[EAT_SOUND].play()
            cookie = Cookie(assets)
            all_sprites.add(cookie)
            all_cookies.add(cookie)
            score += 200

        #Colisão santa com cookies
        hits_hats_snowballs = pygame.sprite.groupcollide(all_hats,all_snowballs , True, True, pygame.sprite.collide_mask)

        if len(hits_hats_snowballs) > 0:
            assets[SNOW_SOUND].play()
            for hit in hits_hats_snowballs:
                snowball = Snowball(assets)
                all_sprites.add(snowball)
                all_snowballs.add(snowball)

        #Colisão santa com bolas de neve
        hits_santa_snowballs = pygame.sprite.spritecollide(santa,all_snowballs, False, pygame.sprite.collide_mask)

        if len(hits_santa_snowballs) > 0:
            assets[DEATH_SOUND].play()
            time.sleep(0.5)
            game_on = False
            state = DEAD
            if record < score:
                record = score
            pygame.mixer.music.stop()

    retornos = [state,score,record]
    
    #Retorna o estado, a pontuação e o recorde atual
    return retornos