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()
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)'''
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 = ""
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
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
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)
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
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)