def testa_vetor(self): v = Vetor(x=1, y=-1) self.assertEqual(v.x, 1) self.assertEqual(v.y, -1)
def testa_subtrai(self): v1 = Vetor(5, 1) v2 = Vetor(2, 3) v = subtrai_vetor(v1, v2) self.assertEqual(v, Vetor(3, -2))
def __init__(self, topic): self.pos = Vetor(0, 0) rospy.Subscriber(topic, Pose, self.recebe_dados)
def testa_soma(self): v1 = Vetor(5, 1) v2 = Vetor(0, 3) v = soma_vetor(v1, v2) self.assertEqual(v, Vetor(5, 4))
def tratar_eventos(self, jogo): """ Este metodo trata os eventos de pressionamento de teclas :param jogo: O jogo no qual a nave esta """ teclas = jogo.ambiente.key.get_pressed() if self.codigo == 0: # FAZ A NAVE ATIRAR if teclas[jogo.ambiente.K_LSHIFT] and self.pode_atirar: direcao = Vetor(math.cos(self.angulo * math.pi / 180), -math.sin(self.angulo * math.pi / 180)) tiro = Obstaculo(jogo.ambiente, "tiro_" + str(self.cor), self.posicao + (direcao * self._raio), direcao, 5, 5) self.lista_tiros.append(tiro) self.pode_atirar = False jogo.ambiente.time.set_timer(jogo.ambiente.USEREVENT + 1, 300) # ACELERA A NAVE if teclas[jogo.ambiente.K_w]: movimento_x = self.aceleracao * math.cos( self.angulo * math.pi / 180) movimento_y = (-self.aceleracao) * math.sin( self.angulo * math.pi / 180) self.adicionar_movimento(Vetor(movimento_x, movimento_y)) # FREIA A NAVE elif teclas[jogo.ambiente.K_s]: movimento_x = (-self.aceleracao / 2) * math.cos( self.angulo * math.pi / 180) movimento_y = self.aceleracao / 2 * math.sin( self.angulo * math.pi / 180) self.adicionar_movimento(Vetor(movimento_x, movimento_y)) # GIRA A NAVE NO SENTIDO ANTI-HORARIO if teclas[jogo.ambiente.K_a]: self.angulo += 2 if self.angulo >= 360: self.angulo = 0 # GIRA A NAVE NO SENTIDO HORARIO elif teclas[jogo.ambiente.K_d]: self.angulo -= 2 if self.angulo >= 360: self.angulo = 0 elif self.codigo == 1: # FAZ A NAVE ATIRAR if teclas[jogo.ambiente.K_RSHIFT] and self.pode_atirar: direcao = Vetor(math.cos(self.angulo * math.pi / 180), -math.sin(self.angulo * math.pi / 180)) tiro = Obstaculo(jogo.ambiente, "tiro_" + str(self.cor), self.posicao + (direcao * self._raio), direcao, 5, 5) self.lista_tiros.append(tiro) self.pode_atirar = False jogo.ambiente.time.set_timer(jogo.ambiente.USEREVENT + 2, 300) # ACELERA A NAVE if teclas[jogo.ambiente.K_UP]: movimento_x = self.aceleracao * math.cos( self.angulo * math.pi / 180) movimento_y = (-self.aceleracao) * math.sin( self.angulo * math.pi / 180) self.adicionar_movimento(Vetor(movimento_x, movimento_y)) # FREIA A NAVE elif teclas[jogo.ambiente.K_DOWN]: movimento_x = (-self.aceleracao / 4) * math.cos( self.angulo * math.pi / 180) movimento_y = (self.aceleracao / 4) * math.sin( self.angulo * math.pi / 180) self.adicionar_movimento(Vetor(movimento_x, movimento_y)) # GIRA A NAVE NO SENTIDO ANTI-HORARIO if teclas[jogo.ambiente.K_LEFT]: self.angulo += 2 if self.angulo >= 360: self.angulo = 0 # GIRA A NAVE NO SENTIDO HORARIO elif teclas[jogo.ambiente.K_RIGHT]: self.angulo -= 2 if self.angulo >= 360: self.angulo = 0