def controleDeMovimento(self): self.cont += 1 if (self.cont >= 1000): self.cont = 1 if (self.x >= 450): self.x -= 1 self.posicao = "CIMA" if (self.x <= 10): self.x += 1 self.posicao = "BAIXO" if (self.y >= 450): self.y -= 1 self.posicao = "DIREITA" if (self.y < 10): self.y += 1 self.posicao = "ESQUERDA" if (float(random.randint(1, 1000)) % 100 == 0): self.posicao = "CIMA" self.bala.append(Tiro(self.x, self.y, self.posicao, (255, 0, 0))) if (float(random.randint(1, 1000)) % 200 == 0): self.posicao = "BAIXO" self.bala.append(Tiro(self.x, self.y, self.posicao, (255, 0, 0))) if (float(random.randint(1, 1000)) % 300 == 0): self.posicao = "DIREITA" self.bala.append(Tiro(self.x, self.y, self.posicao, (255, 0, 0))) if (float(random.randint(1, 1000)) % 400 == 0): self.posicao = "ESQUERDA" self.bala.append(Tiro(self.x, self.y, self.posicao, (255, 0, 0))) if (self.cont % 20 == 0): self.bala.append(Tiro(self.x, self.y, self.posicao, (255, 0, 0))) for i in range(len(self.bala)): self.bala[i].atira() self.bala[i].drawBala(self.DISPLAYSURF) if (self.bala[i].x > 550 or self.bala[i].x < -50): del self.bala[i] break if (self.bala[i].y > 550 or self.bala[i].y < -50): del self.bala[i] break if (self.posicao == "DIREITA"): self.x += 3 if (self.posicao == "ESQUERDA"): self.x -= 3 if (self.posicao == "CIMA"): self.y -= 3 if (self.posicao == "BAIXO"): self.y += 3
def interacoes_colonos_atirador(self,ambiente): for colono in self.colonos_atirador: #colisao_colonos_atirador = ambiente.sprite.spritecollide(colono,self.cabanas,False,ambiente.sprite.collide_mask) if colono.rect.x < 820: if colono.clock_atirar + colono.intervalo_ataque < self.ambiente.time.get_ticks(): colono.animacao_atirando() self.tiros.add(Tiro(self.ambiente, 1, -4.5, (colono.rect.x-colono.image.get_width()/4), (colono.rect.y+colono.image.get_height()/5.3))) self.todos_objetos.add(self.tiros) colono.clock_atirar = self.ambiente.time.get_ticks() if colono.rect.x == 0: return 'Perdeu' if self.barreiras: ## Se existirem barreiras: for barreira in self.barreiras: if colono.lane == barreira.lane: ## Se ambos se encontram na mesma linha if colono.rect.x - barreira.rect.x < 200 and colono.rect.x - barreira.rect.x > 64: colono.vel_x = 0 colono.atacar_barreira = True colono.movimentar() if not colono.atacar_barreira: colono.animar()
def interacoes_colonos_atirador(self, ambiente): for colono in self.colonos_atirador: colisao_colonos_atirador = ambiente.sprite.spritecollide( colono, self.cabanas, False, ambiente.sprite.collide_mask) if colisao_colonos_atirador: for colono in colisao_colonos_atirador: colono.kill() cabana.perder_vida(2) elif colono.rect.x < 0: print('Perdeu') return exit() elif colono.clock_atirar + colono.intervalo_ataque < self.ambiente.time.get_ticks( ): colono.animacao_atirando() self.tiros.add( Tiro(self.ambiente, 1, -4.5, (colono.rect.x - colono.image.get_width() / 4), (colono.rect.y + colono.image.get_height() / 5.3))) self.todos_objetos.add(self.tiros) colono.clock_atirar = self.ambiente.time.get_ticks() else: colono.movimentar() colono.animar()
def _dispara_tiro(self): """Cria um novo disparo e adiciona esse tiro em uma lista""" if len(self.tiros) < self.configuracoes.tiros_permitidos: novo_disparo = Tiro(self) self.tiros.add(novo_disparo) pygame.mixer.Channel(1).play( pygame.mixer.Sound(os.path.join("complemento/torp.mp3"))) pygame.mixer.Channel(1).set_volume(0.35)
def criarTiro(self, idNave): nave = self.__naves[idNave] orientacaoInicial = int(nave.getOrientacao()) posicaoInicial = nave.getPosicao() idModeloTiro = self.__modelosTiroPadrao[nave.getIdModelo()] modeloTiro = self.__modelos[idModeloTiro] velocidade = modeloTiro.getVelocidadePadrao() tiro = Tiro(orientacaoInicial, posicaoInicial, velocidade, idModeloTiro, idNave, modeloTiro.getGp()) return tiro
def controleDeEventos(event): global somTiro, x, y, orientacao, bala, orientacaoTiro if event.key == K_LEFT: orientacao = "ESQUERDA" if event.key == K_RIGHT: orientacao = "DIREITA" if event.key == K_UP: orientacao = "CIMA" if event.key == K_DOWN: orientacao = "BAIXO" if event.key == K_SPACE: orientacaoTiro = "OK" #instancia o objeto tiro somTiro.play(0) somTiro.set_volume(0.4) bala.append(Tiro(x, y, orientacao, (0, 100, 0))) else: orientacaoTiro = "NOT"
def atirar(tiros, configuracoes, tela, nave): if len(tiros) < configuracoes.limite_tiros_tela: novo_tiro = Tiro(configuracoes, tela, nave) tiros.add(novo_tiro)
while True: game.screen.fill((0,0,0)) for event in pygame.event.get(): if event.type == KEYDOWN: if event.key == K_ESCAPE: sys.exit() if event.key == K_UP: player.movimento['up'] = True if event.key == K_DOWN: player.movimento['down'] = True if event.key == K_LEFT: player.movimento['left'] = True if event.key == K_RIGHT: player.movimento['right'] = True if event.key == K_SPACE: game.tiros.append(Tiro(game, player)) if event.type == KEYUP: if event.key == K_UP: player.movimento['up'] = False if event.key == K_DOWN: player.movimento['down'] = False if event.key == K_LEFT: player.movimento['left'] = False player.direcao = "up" if event.key == K_RIGHT: player.movimento['right'] = False player.direcao = "up" scenario.update() player.update()