Ejemplo n.º 1
0
    def test_init(self):
        vec = PVector(1, 0)
        assert vec.x == 1
        assert vec.y == 0

        vec = PVector(500, 149)
        assert vec.x == 500
        assert vec.y == 149
Ejemplo n.º 2
0
    def test_add(self):
        vec = PVector(10, 10)
        assert vec.x == vec.y
        vec += PVector(5, 6)
        assert vec.x != vec.y
        assert vec.x == 15
        assert vec.y == 16

        added_vec = PVector(20, 20)
        assert vec + PVector(5, 4) == added_vec
Ejemplo n.º 3
0
 def get_adj_nodes(self):
     """
     Used by exit_box to force our way out of the box.
     :return:
     """
     return [
         self.nearest_node + PVector(1, 0),
         self.nearest_node + PVector(0, 1),
         self.nearest_node + PVector(-1, 0),
         self.nearest_node + PVector(0, -1)
     ]
Ejemplo n.º 4
0
 def node_to_pixel(node):
     """
     Utility
     :param node:
     :return:
     """
     return PVector(node.x * 16 + 8, node.y * 16 + 8)
Ejemplo n.º 5
0
    def test_pixel_to_node(self):
        entity = Entity(PVector(1, 1), None)

        entity.pos = PVector(24, 24)  # middle of node (1,1)
        assert entity.pixel_to_node() == PVector(1, 1), entity.pixel_to_node()
        print("Passed test with {} that returned {}".format(
            entity.pos, PVector(1, 1)))

        entity.pos = PVector(16, 16)  # top left of node (1,1)
        assert entity.pixel_to_node() == PVector(1, 1), entity.pixel_to_node()
        print("Passed test with {} that returned {}".format(
            entity.pos, PVector(1, 1)))

        entity.pos = PVector(31, 31)  # bottom right of node (1,1)
        assert entity.pixel_to_node() == PVector(1, 1), entity.pixel_to_node()
        print("Passed test with {} that returned {}".format(
            entity.pos, PVector(1, 1)))
Ejemplo n.º 6
0
 def increment_frame_num(self):
     """
     Utility function
     :return:
     """
     if self.direc == PVector(0, 0):  # No incrementing if we're not moving.
         return
     self.anim_num += 1
     if self.anim_num > self.max_anim_num:
         self.anim_num = 0
Ejemplo n.º 7
0
    def __init__(self, node, level):
        """
        """
        self.pos = self.node_to_pixel(node)
        self.speed = DEFAULT_SPEED  # For ghost movement
        self.direc = PVector(0, 0)
        self.level = level

        self.nearest_node = node

        self.max_anim_num = None  # Each class will implement this themselves
        self.anim_num = 0
Ejemplo n.º 8
0
 def direc_to(self, pos: PVector):
     """
     Utility function
     :param pos:
     :return:
     """
     if self.nearest_node == pos:  # We're on the destination
         return PVector(0, 0)
     if self.level.tiles[self.nearest_node].teleport_to_tile == pos:
         return self.direc
     if abs(self.nearest_node - pos) <= PVector(1, 1):
         if self.nearest_node.x == pos.x:
             if self.nearest_node.y < pos.y:
                 return PVector(0, self.speed)  # Right
             else:
                 return PVector(0, -self.speed)  # Left
         elif self.nearest_node.y == pos.y:
             if self.nearest_node.x < pos.x:
                 return PVector(self.speed, 0)  # Down
             else:
                 return PVector(-self.speed, 0)  # Up
     # raise ValueError(
     #         "Position {} is not orthogonally adjacent to entity position: {}".format(pos, self.nearest_node))
     return None
Ejemplo n.º 9
0
 def test_direc_to(self):
     vec1 = PVector(10, 10)
     vec2 = PVector(11, 10)
     assert vec1.direc_to(vec2) == PVector(1, 0)
Ejemplo n.º 10
0
 def pixel_to_node(self):
     """
     Utility
     :return:
     """
     return PVector(int(self.pos.x / 16), int(self.pos.y / 16))
Ejemplo n.º 11
0
 def __init__(self):
     self.start: PVector = None
     self.corner_1: PVector = PVector(2, 2)
     self.corner_2: PVector = PVector(2, 2)