Esempio n. 1
0
 def testa_vetor(self):
     v = Vetor(x=1, y=-1)
     self.assertEqual(v.x, 1)
     self.assertEqual(v.y, -1)
Esempio n. 2
0
 def testa_subtrai(self):
     v1 = Vetor(5, 1)
     v2 = Vetor(2, 3)
     v = subtrai_vetor(v1, v2)
     self.assertEqual(v, Vetor(3, -2))
Esempio n. 3
0
 def __init__(self, topic):
     self.pos = Vetor(0, 0)
     rospy.Subscriber(topic, Pose, self.recebe_dados)
Esempio n. 4
0
 def testa_soma(self):
     v1 = Vetor(5, 1)
     v2 = Vetor(0, 3)
     v = soma_vetor(v1, v2)
     self.assertEqual(v, Vetor(5, 4))
Esempio n. 5
0
    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