示例#1
0
def zera():
    global auxMusicadeFundo, listaExplosaoForaDoObjeto, bala, x, y, keyPressed, orientacao, orientacaoTiro, jogo, listaInimigo, inimigosQTD, matouInimigo, colisao, piscaLetra
    inicializa = False
    bala = list()
    #posição inicial do tank
    x = 100
    y = 100
    #auxiliar para controlar o evento de keydown e keyup
    keyPressed = False
    #inicializa orientação do tank durante o jogo
    orientacao = "BAIXO"
    #momento de tiro
    orientacaoTiro = "NOT"
    listaInimigo = list()
    listaInimigo.append(Inimigo(DISPLAYSURF))
    inimigosQTD = 1
    matouInimigo = False
    colisao = Colisao()
    piscaLetra = float(0)
    listaExplosaoForaDoObjeto = list()
示例#2
0
else: 
	decisao = check.checkDecisao(input(caimpaing.Historia[34]))
	if decisao == 1:
		decisao = check.checkDecisao(input(caimpaing.Historia[302]))
		if decisao == 1:
			decisao = check.checkDecisao(int(input(caimpaing.Historia[209])))
		else:
			decisao = check.checkDecisao(int(input(caimpaing.Historia[48])))
	else:
		print(caimpaing.Historia[188])
	'''

#CRIACAO DO JOGADOR
nome = input("\nDigite o seu nome: ")
player = Motorista(nome)
oponente = Inimigo(10, 10)
carro = CarroMonstro()
carroInimigo = CarroInimigo(10, 10)

'''Batalha.carBattle(carro, carroInimigo)'''
#player.criaPlayer()
player.mostraEstado()
#CRIACAO DO CARRO DO JOGADOR 
carro = CarroMonstro()
carro.mostraEstado()

oponente = Inimigo(10, 10)
b1 = Batalha()


'''b1.corpoACorpo(player, oponente)'''
示例#3
0
def controleDeColisao():
    global banco, DISPLAYSURF, score, tanksAbatidos, nivel, somExplosao, time, listaExplosaoForaDoObjeto, colisao, bala, listaInimigo, inimigosQTD, matouInimigo, jogo, x, y

    #minha bala no Inimigo
    for i in range(len(listaInimigo)):
        for j in range(len(bala)):
            if (colisao.colisorQuadrado(
                [5, bala[j].x, bala[j].y],
                [30, listaInimigo[i].x, listaInimigo[i].y]) == True):
                somExplosao.play(0)
                somExplosao.set_volume(0.5)
                listaExplosaoForaDoObjeto.append(
                    Explosao(bala[j].x, bala[j].y, (0, 255, 0), DISPLAYSURF))
                del bala[j]
                matouInimigo = True
                break
        if (matouInimigo == True):
            score += 5
            tanksAbatidos += 1
            del listaInimigo[i]
            if (inimigosQTD > 5):
                matouInimigo = False
            break

    if (matouInimigo == True and inimigosQTD <= 5):
        inimigosQTD += 1
        for aux in range(nivel):
            listaInimigo.append(Inimigo(DISPLAYSURF))
        matouInimigo = False

    #bala do inimigo em mim
    for k in range(len(listaInimigo)):
        for l in range(len(listaInimigo[k].bala)):

            if (colisao.colisorQuadrado(
                [5, listaInimigo[k].bala[l].x, listaInimigo[k].bala[l].y],
                [30, x, y]) == True):
                jogo = "gameover"
                somExplosao.play(0)
                somExplosao.set_volume(0.5)
                zera()
                banco.inserir(score)
                break
        if (jogo == "gameover"):
            zera()
            break
    #inimigo em mim
    for m in range(len(listaInimigo)):
        if (colisao.colisorQuadrado([30, listaInimigo[m].x, listaInimigo[m].y],
                                    [30, x, y]) == True):
            jogo = "gameover"
            somExplosao.play(0)
            somExplosao.set_volume(0.5)
            zera()
            banco.inserir(score)
            break
        if (jogo == "gameover"):
            zera()
            break

    for n in range(len(listaExplosaoForaDoObjeto)):
        listaExplosaoForaDoObjeto[n].explode()
    def eventos(self, e):

        if e.type == pygame.MOUSEBUTTONUP and e.button == 1:
            self.arrastando_entidade = False

        if e.type == pygame.MOUSEBUTTONDOWN and e.button == 2:

            self.camera_mov_x += self.pos[0]
            self.camera_mov_y += self.pos[1]

        if e.type == pygame.MOUSEBUTTONUP and e.button == 2:

            self.camera_mov_x -= self.pos[0]
            self.camera_mov_y -= self.pos[1]

        if e.type == pygame.MOUSEBUTTONUP and e.button == 3:
            entidade = self.pegar_entidade_cursor()
            if entidade:

                nomes = entidade.get_nomes()
                param = multenterbox(msg=entidade.__class__.__name__,
                                     title='Editor de atributos',
                                     fields=(nomes))

                if param:
                    entidade.setar_atributos(param)
            else:
                nomes = ["ID", "Cor", "Imagem Fundo"]
                param = multenterbox(msg="Fase",
                                     title='Editor de atributos',
                                     fields=(nomes))
                if param:
                    self.fase.setar_atributos(param)

        if e.type == pygame.KEYDOWN:

            if e.key == pygame.K_DELETE:
                entidade = self.pegar_entidade_cursor()
                if entidade:
                    self.entidades.remove(entidade)
                    self.fase.remover(entidade)

            mods = pygame.key.get_mods()
            if mods & pygame.KMOD_CTRL:  # get_mods para poder pegar o evento de duas teclas pressionadas (e.g CTRL + NUMPAD1/2/3/4)

                if mods & pygame.KMOD_SHIFT and e.key == pygame.K_s:
                    if self.arquivo_atual:
                        self.ff.salvar_arquivo("Fases/" + self.arquivo_atual,
                                               self.fase)
                        print("Salvo!")
                    else:
                        msgbox("Nenhum arquivo foi aberto!", "Erro")
                elif e.key == pygame.K_s:
                    if self.fase.get_id() == -1:
                        _id = enterbox("Digite o id da fase!")
                        if _id:
                            self.fase.set_id(_id)
                        else:
                            return

                    arquivo = enterbox("Digite o nome do arquivo a ser salvo!")
                    if arquivo:
                        self.arquivo_atual = arquivo
                        self.ff.salvar_arquivo("Fases/" + self.arquivo_atual,
                                               self.fase)

                if e.key == pygame.K_1:
                    jogador = Jogador(400, 420, 30, 30, 0.0, 0.0, 2.3,
                                      (0, 25, 125), "no_img")
                    self.entidades.append(jogador)
                    self.fase.set_jogador(jogador)

                elif e.key == pygame.K_2:
                    plataforma = Plataforma(0, 570, 800, 30, 0.0, 0.0, 0.0,
                                            (10, 10, 15), "no_img")
                    self.entidades.append(plataforma)
                    self.fase.adicionar_plataforma(plataforma)

                elif e.key == pygame.K_3:
                    plataforma = PlataformaAndante(400, 300, 100, 30, 0, 0,
                                                   0.5, (100, 200), (0, 0),
                                                   0.0, (200, 0, 150),
                                                   "no_img")
                    self.entidades.append(plataforma)
                    self.fase.adicionar_plataforma(plataforma)

                elif e.key == pygame.K_4:
                    energia = Energia(400, 240, 20, 30, 0, 0, 0.0, True,
                                      (255, 255, 125), "no_img")
                    self.entidades.append(energia)
                    self.fase.adicionar_energia(energia)

                elif e.key == pygame.K_5:
                    moeda = Moeda(300, 510, 10, 10, 0, 0, 0.0, (255, 100, 10),
                                  "no_img")
                    self.entidades.append(moeda)
                    self.fase.adicionar_moeda(moeda)

                elif e.key == pygame.K_6:
                    inimigo = Inimigo(170, 540, 30, 30, 0, 0, 2.0, True, 25.0,
                                      False, (0, 25, 125), "canon.png",
                                      "gold_bullet.png")
                    self.entidades.append(inimigo)
                    self.fase.adicionar_inimigo(inimigo)

                elif e.key == pygame.K_l:
                    arquivo = enterbox(
                        "Digite o nome do arquivo a ser carregado!")
                    if arquivo:
                        self.arquivo_atual = arquivo
                        ret = self.gf.iniciar(self.arquivo_atual)
                        if ret:
                            ret = ret[:]
                            self.entidades = ret[0]
                            self.fase = ret[1]
                        else:
                            msgbox("Arquivo não existente ou corrompido!",
                                   "Erro")

                elif e.key == pygame.K_c:
                    entidade = self.pegar_entidade_cursor()
                    if entidade:
                        self.entidade_copia = self.copiar_entidade(entidade)

                elif e.key == pygame.K_v:
                    if self.entidade_copia:
                        self.entidade_copia.x = self.pos[
                            0] - self.camera.x - self.entidade_copia.w / 2
                        self.entidade_copia.y = self.pos[
                            1] - self.camera.y - self.entidade_copia.h / 2
                        clone = self.copiar_entidade(self.entidade_copia)
                        self.entidades.append(clone)
                        self.fase.adicionar(clone)

                elif mods & pygame.KMOD_SHIFT and e.key == pygame.K_f:
                    if self.arquivo_atual:
                        copy2("Fases/" + self.arquivo_atual,
                              "../Projeto/Fases")
                        print("Arquivo enviado!")
                    else:
                        msgbox("Nenhum arquivo para ser enviado!", "Erro")

                elif e.key == pygame.K_f:
                    nome = enterbox("Digite o nome do arquivo a enviado!")
                    if nome:
                        copy2("Fases/" + nome, "../Projeto/Fases")

                elif mods & pygame.KMOD_SHIFT and e.key == pygame.K_b:
                    if self.arquivo_atual:
                        self.ff.salvar_arquivo("Fases/" + self.arquivo_atual,
                                               self.fase)
                        print("Salvo!")
                        copy2("Fases/" + self.arquivo_atual,
                              "../Projeto/Fases")
                        print("Arquivo enviado!")
                        Popen("python jogo.py",
                              cwd="../Projeto/Codigo/",
                              shell=True)
                    else:
                        msgbox("Nenhum arquivo aberto ou salvo!", "Erro")

                elif e.key == pygame.K_b:
                    Popen("python jogo.py",
                          cwd="../Projeto/Codigo/",
                          shell=True)

                elif e.key == pygame.K_n:
                    self.entidades = []
                    self.fase = Fase(-1, None, self.dummy_fundo, [], [], [],
                                     [], "no_img")
                    self.arquivo_atual = ""
示例#5
0
banco = Banco()
banco.criadorDeTabelas()
#lista que carregara todas as balas instanciadas
bala = list()
#posição inicial do tank
x = 100
y = 100
#auxiliar para controlar o evento de keydown e keyup
keyPressed = False
#inicializa orientação do tank durante o jogo
orientacao = "BAIXO"
#momento de tiro
orientacaoTiro = "NOT"
jogo = "begin"
listaInimigo = list()
listaInimigo.append(Inimigo(DISPLAYSURF))
inimigosQTD = 1
matouInimigo = False
colisao = Colisao()
piscaLetra = float(0)
inicializa = False
listaExplosaoForaDoObjeto = list()
auxMusicadeFundo = True
somTiro = pygame.mixer.Sound("shot.wav")
somExplosao = pygame.mixer.Sound("explosion.wav")

#dificuldades e pontuações
nivel = 1
tanksAbatidos = 0
score = 0
示例#6
0
import pygame
from player import Player
from inimigo import Inimigo
from ataque import Ataque

pygame.init()
janela_principal = pygame.display.set_mode((1600, 1200))
pygame.display.set_caption("Jogo do Pipi atirador")

jogador = Player()
inimigo = Inimigo()
disparo = Ataque(jogador)
angle = 0

janela_aberta = True
while janela_aberta:

    pygame.time.delay(10)

    for evento in pygame.event.get():
        if evento.type == pygame.QUIT:
            janela_aberta = False

    comando = pygame.key.get_pressed()

    if comando[pygame.K_UP]:
        angle = 180
        jogador.cima()

    if comando[pygame.K_DOWN]:
        angle = 0
            if event.type == pygame.QUIT:
                gameLoop = False
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    shot.play()
                    newShot = Shot(objectGroup, shotGroup)
                    newShot.rect.center = player.rect.center

        objectGroup.update()
        clock.tick(60)

        timer += 1
        if timer > 30:

            if random.random() < 0.2:
                newinimigo = Inimigo(objectGroup, inimigoGroup)
                newinimigo2 = Inimigos2(objectGroup, inimigos2Group)

        collisions = pygame.sprite.spritecollide(player, inimigoGroup, False)
        collisions2 = pygame.sprite.spritecollide(player, inimigos2Group,
                                                  False)
        if collisions or collisions2:
            gameLoop = False

        hits = pygame.sprite.groupcollide(shotGroup, inimigoGroup, True, True,
                                          pygame.sprite.collide_mask)
        hit = pygame.sprite.groupcollide(shotGroup, inimigos2Group, True, True,
                                         pygame.sprite.collide_mask)
        if hits or hit:
            hits
            hit
示例#8
0
    def criar_fase(self, linha):
        plataformas = []
        moedas = []
        energias = []
        inimigos = []
        cor = (65, 65, 65)
        fundo = pygame.Surface((800, 600))
        fundo.fill(cor)
        jogador = None
        _id = 0
        for i in linha:

            i = i.split(":")

            if i[0] == "plataforma":
                i = i[1].split("|")
                print(i)
                plataformas.append(
                    Plataforma(float(i[0]), float(i[1]), float(i[2]),
                               float(i[3]), float(i[4]), float(i[5]),
                               float(i[6]), parse_tuple(i[7]), i[8]))

            elif i[0] == "plataforma_andante":
                i = i[1].split("|")
                print(i)
                plataformas.append(
                    PlataformaAndante(float(i[0]), float(i[1]), float(i[2]),
                                      float(i[3]), float(i[4]), float(i[5]),
                                      float(i[6]), parse_tuple(i[7]),
                                      parse_tuple(i[8]), float(i[9]),
                                      parse_tuple(i[10]), i[11]))

            elif i[0] == "energia":
                i = i[1].split("|")
                print(i)
                energias.append(
                    Energia(float(i[0]), float(i[1]), float(i[2]), float(i[3]),
                            float(i[4]), float(i[5]), float(i[6]),
                            parse_bool(i[7]), parse_tuple(i[8]), i[9]))

            elif i[0] == "inimigo":
                i = i[1].split("|")
                print(i)
                inimigos.append(
                    Inimigo(float(i[0]), float(i[1]), float(i[2]), float(i[3]),
                            float(i[4]), float(i[5]), float(i[6]),
                            parse_bool(i[7]), float(i[8]), parse_bool(i[9]),
                            parse_tuple(i[10]), i[11], i[12]))

            elif i[0] == "jogador":
                i = i[1].split("|")

                jogador = Jogador(float(i[0]), float(i[1]), float(i[2]),
                                  float(i[3]), float(i[4]), float(i[5]),
                                  float(i[6]), parse_tuple(i[7]), i[8])

            elif i[0] == "moeda":
                i = i[1].split("|")

                moedas.append(
                    Moeda(float(i[0]), float(i[1]), float(i[2]), float(i[3]),
                          float(i[4]), float(i[5]), float(i[6]),
                          parse_tuple(i[7]), i[8]))

            elif i[0] == "cor":
                cor = parse_tuple(i[1])
                fundo.fill(cor)

            elif i[0] == "fundo":
                caminho_fundo = i[1]

            elif i[0] == "fase_indice":
                _id = int(i[1])

        if caminho_fundo != "no_img":
            fundo = pygame.image.load("../Imagens/" +
                                      caminho_fundo).convert_alpha()

        return Fase(_id, jogador, fundo, plataformas, moedas, energias,
                    inimigos, cor)
示例#9
0
def colocaInimigos():
    for linha in range(6):
        for coluna in range(14):
            inimigos.append(Inimigo('imagens\\inimigo3.png'))
            inimigos[(linha * 14) + coluna].get_rect().x = coluna * 67
            inimigos[(linha * 14) + coluna].get_rect().y = linha * 70
示例#10
0
    def main(self, volume):
        run = True
        FPS = 60
        nivel = 1
        vidas = 5
        clock = pygame.time.Clock()
        parado = True

        # Pontuação para o próximo nível
        pontuacao_limite = 800

        #variáveis pro inimigo
        inimigos = []
        onda_de_inimigos = 0
        velocidade_inimigo = 2

        #variáveis pro meteoro
        meteoros = []
        velocidade_meteoro = 1

        #variáveis pro boost
        boosts = []
        onda_de_boost = 1
        velocidade_boost = 3

        #vidas
        vidas_a_captar = []
        onda_de_vida = 1
        velocidade_vida = 5

        #escudo
        escudos = []
        velocidade_escudo = 3
        onda_de_escudos = 1
        ativar_escudo = False
        TIMERESCUDO = pygame.USEREVENT
        pygame.time.set_timer(TIMERESCUDO, 0)

        # Saude
        height_barra = 10
        saude = 100

        # Lasers
        resfriamento_laser = 0
        tempo_resfriamento = 20
        velocidade_laser = 7
        lasers_inimigos = []
        lasers_jogador = []

        # Jogador
        movimento_jogador = 8
        jogador = Jogador(int(largura / 2 - WH_JOGADOR / 2), int(altura - 125), altura, largura, JOGADOR, JOGADOR_PARADO, ESCUDO_NO_JOGADOR, ESCUDO_NO_JOGADOR2, LASER_JOGADOR, saude)

        fim_de_jogo = False
        contador_fim_de_jogo = 0

        # Definindo volume
        for som in lista_sons:
            som.set_volume(volume)

        def desenhar_janela(pos_y):
            WIN.blit(PLANO_DE_FUNDO, (0, pos_y))
            WIN.blit(PLANO_DE_FUNDO, (0, pos_y - altura + 1))
            WIN.blit(PORTA, (574, 543))

            # mostrando textos na tela
            label_vidas = fonte.render(f"Vidas: {vidas}", True, preto)  # 1 - suavização de serrilhado
            label_nivel = fonte.render(f"Nivel: {nivel}", True, preto)
            label_pontuacao = fonte.render(f"{jogador.pontuacao}", True, preto)

            WIN.blit(label_vidas, (10, 10))
            WIN.blit(label_nivel, (largura - label_nivel.get_width() - 10, 10))
            WIN.blit(label_pontuacao, (10, 595))

            for inimigo in inimigos:
                inimigo.desenhar(WIN)

            for meteoro in meteoros:
                meteoro.desenhar(WIN)
            
            for laser_inimigo in lasers_inimigos:
                laser_inimigo.desenhar(WIN)

            for laser_jogador in lasers_jogador:
                laser_jogador.desenhar(WIN)

            for boost in boosts:
                boost.desenhar(WIN)

            for escudo in escudos:
                escudo.desenhar(WIN)

            for vida in vidas_a_captar:
                vida.desenhar(WIN)

            if ativar_escudo:
                jogador.desenhar_escudo(WIN)

            jogador.desenhar(WIN, height_barra, parado)

            if fim_de_jogo:
                pygame.mixer.music.stop()
                WIN.blit(EXPLOSAO, (jogador.x - 50, jogador.y-20))
                fim_de_jogo_label = fonte_fim_de_jogo.render("Aguarde", True, preto)
                WIN.blit(fim_de_jogo_label, (largura / 2 - fim_de_jogo_label.get_width() / 2,
                                             altura / 2 - fim_de_jogo_label.get_height() / 2))

            pygame.display.update() # sempre que for desenhar, devemos atualizar a tela colocando a "nova imagem" por cima das outras que estavam desenhadas
        pos_y = 0 #posicao inicial da tela de fundo
        
        while run:
            clock.tick(FPS)
            desenhar_janela(pos_y)
            pos_y += velocidade_inimigo/2  #tela de fundo se move sempre a metade da velocidade do inimigo
            
            if pos_y >= altura:
                pos_y = 0  #reseta posicao da tela de fundo

            if jogador.saude <= 0:
                if vidas >= 1:
                    jogador.saude = saude
                    vidas -= 1

            if vidas <= 0:
                fim_de_jogo = True
                contador_fim_de_jogo += 1

            # A pontuacao é retornada quando o jogador perde
            if fim_de_jogo:
                velocidade_inimigo = 0
                if contador_fim_de_jogo == FPS/60:
                    MORTE.play()
                elif contador_fim_de_jogo > FPS * 3:
                    MUSICA_FIM.play()
                    return True, jogador.pontuacao
                else:
                    continue

            # Subida de nivel, Velocidade do Inimigo, do Laser e do Meteoro
            if jogador.pontuacao >= pontuacao_limite:
                if nivel < 3:
                    if nivel == 1:
                        velocidade_meteoro += 1
                        pontuacao_limite = 1800
                    if nivel == 2:
                        pontuacao_limite = 3000
                    velocidade_inimigo += 0.5
                    velocidade_laser += 0.5
                elif nivel == 3:
                    pontuacao_limite = 4000
                    velocidade_inimigo += 0.5
                    velocidade_laser += 0.5
                    velocidade_meteoro += 1
                elif nivel == 4:
                    pontuacao_limite = 5000
                    velocidade_inimigo += 0.5
                    velocidade_laser += 0.5
                elif nivel > 4:
                    pontuacao_limite += pontuacao_limite * 0.3
                    velocidade_inimigo += 1
                    velocidade_laser += 1
                    velocidade_meteoro += 1
                nivel += 1
                #print("vel inimigo:", velocidade_inimigo)

            # lógica do inimigo
            if len(inimigos) == 0:
                onda_de_inimigos += 3

                for i in range(onda_de_inimigos):
                    inimigo = Inimigo(random.randrange(50, largura - 128),
                                      random.randrange(-8000 * (nivel / 5), -128),
                                      str(random.randrange(1, 4)), altura, largura, saude)  # ver depois sobre o -1500
                    inimigos.append(inimigo)

            for inimigo in inimigos[:]:
                inimigo.movimentar(velocidade_inimigo, inimigos)

                if random.randrange(0, 4 * FPS) == 1:
                    lasers_inimigos.append(Atirar.atirar(inimigo, altura, largura))

                if inimigo.colisao(jogador, inimigos):
                    COLIDIU.play()
                    if not ativar_escudo:
                        jogador.dano(15)

            # lógica de criação, remoção e movimento dos meteoros
            if len(meteoros) == 0:
                meteoro = Meteoro(-110, random.randrange(0, 400), altura, largura, METEORO)
                meteoros.append(meteoro)
                if nivel > 1:
                    meteoro2 = Meteoro(-510, random.randrange(-300, 250), altura, largura, METEORO)
                    meteoros.append(meteoro2)
                if nivel > 2:
                    meteoro3 = Meteoro(-910, random.randrange(-600, -50), altura, largura, METEORO)
                    meteoros.append(meteoro3)
                if nivel > 3:
                    meteoro4 = Meteoro(-1310, random.randrange(-1100, -400), altura, largura, METEORO)
                    meteoros.append(meteoro4)
                if nivel > 4:
                    meteoro6 = Meteoro(-1710, random.randrange(-1150, -550), altura, largura, METEORO)
                    meteoros.append(meteoro6)
                if nivel > 5:
                    meteoro5 = Meteoro(-1110, random.randrange(-700, -150), altura, largura, METEORO)
                    meteoros.append(meteoro5)
                if nivel > 6:
                    meteoro7 = Meteoro(-710, random.randrange(-600, 0), altura, largura, METEORO)
                    meteoros.append(meteoro7)

            for meteoro in meteoros[:]:
                meteoro.movimentar(velocidade_meteoro, meteoros)

                if meteoro.colisao(jogador, meteoros):
                    COLIDIU.play()
                    if not ativar_escudo:
                        jogador.dano(15)

            #logica boost
            if len(boosts) == 0:
                if random.randrange(0, 5000) == 9:
                    onda_de_boost += 1

                for i in range(onda_de_boost):
                    if random.randrange(0, 5000) == 9:
                        boost = Boost(-110, random.randrange(0, 400), altura, largura, BOOST)
                        boosts.append(boost)

            for boost in boosts[:]:
                boost.movimentar(velocidade_boost, boosts)

                if boost.colisao(jogador, boosts):
                    jogador.inc_pontuacao(1000)

            #lógica do escudo
            if len(escudos) == 0:
                onda_de_escudos += 1

                for i in range(onda_de_escudos):
                    if random.randrange(0, 5000) == 9:
                        escudo = Escudo(random.randrange(50, largura - 128), random.randrange(-8000 * (nivel / 5), -128), altura, largura, ESCUDO)  # ver depois sobre o -1500
                        escudos.append(escudo)

            for escudo in escudos[:]:
                escudo.movimentar(velocidade_escudo, escudos)

                if escudo.colisao(jogador, escudos):
                    pygame.time.set_timer(TIMERESCUDO, 4000)
                    ativar_escudo = True

            #lógica da vida
            if len(vidas_a_captar) == 0:
                onda_de_vida += 1

                for _ in range(onda_de_vida):
                    if random.randrange(0, 5000) == 9:
                        vida = Vida(random.randrange(50, largura - 128), random.randrange(-8000 * (nivel / 5), -128), altura, largura, VIDA)  # ver depois sobre o -1500
                        vidas_a_captar.append(vida)

            for vida in vidas_a_captar[:]:
                vida.movimentar(velocidade_vida, vidas_a_captar)

                if vida.colisao(jogador, vidas_a_captar):
                    if jogador.saude + 10 <= 90:
                        jogador.saude += 10
                    elif jogador.saude + 10 > 90 and jogador.saude + 10 < 100:
                        jogador.saude = 100

            # EVENTOS
            # vai passar por todos os eventos que ocorreram, 60 vezes por segundo
            for event in pygame.event.get():
                if event.type == pygame.QUIT: # se clicar no botão de fechar, o while se encerra, ou seja, o jogo fecha
                    quit()
                
                if event.type == pygame.MOUSEBUTTONDOWN:
                    if not resfriamento_laser:
                        lasers_jogador.append(Atirar.atirar(jogador, altura, largura))
                        resfriamento_laser = 1
                
                if event.type == tempo:
                    jogador.inc_pontuacao(10)

                if event.type == TIMERESCUDO:
                    pygame.time.set_timer(TIMERESCUDO, 0)
                    ativar_escudo = False

                mouse = pygame.mouse.get_pos()
                click = pygame.mouse.get_pressed()
                
                if 632 > mouse[0] > 593 and 629 > mouse[1] > 569:
                    if click[0] == 1:
                        return True, jogador.pontuacao

            teclas = pygame.key.get_pressed()  # retorna um dicioonário de todas as teclas e diz se estão pressionadas ou não

            # movimentos do jogador de acordo com a tecla pressionada
            parado = True
            if pygame.KEYDOWN:
                if teclas[pygame.K_a] and jogador.x - movimento_jogador > 0:  # esquerda
                    parado =jogador.movimentar(-movimento_jogador, 0)
                if teclas[pygame.K_d] and jogador.x + movimento_jogador + jogador.get_width() < largura:  # direita
                    parado =jogador.movimentar(movimento_jogador, 0)
                if teclas[pygame.K_w] and jogador.y - movimento_jogador > 0:  # cima
                    parado =jogador.movimentar(0, -movimento_jogador)
                if teclas[
                    pygame.K_s] and jogador.y + movimento_jogador + jogador.get_height() + 2 * height_barra < altura:  # baixo
                    parado = jogador.movimentar(0, movimento_jogador)

            for laser_inimigo in lasers_inimigos:
                laser_inimigo.movimentar(velocidade_laser, lasers_inimigos)
                if laser_inimigo.colisao(jogador, lasers_inimigos):
                    # Definir o som de quando o jogador tomar um dano de laser
                    if not ativar_escudo:
                        jogador.dano(15)

            # Resfriamento Laser
            if resfriamento_laser >= tempo_resfriamento:
                resfriamento_laser = 0
            elif resfriamento_laser > 0:
                resfriamento_laser += 1

            for laser_jogador in lasers_jogador:
                laser_jogador.movimentar(-velocidade_laser, lasers_jogador)
                for inimigo in inimigos:
                    if laser_jogador.colisao(inimigo, lasers_jogador):
                        EXPLODIU.play()
                        jogador.inc_pontuacao(100)
                        try:
                            inimigos.remove(inimigo)
                        except ValueError:
                            print("ValueError")
                            pass
                for meteoro in meteoros:
                    laser_jogador.colisao(meteoro, lasers_jogador)