Exemplo n.º 1
0
 def get_aimed_robot(self, x, y, angle_x, angle_y, zone):
     """
     Return a new Robot object pointing to x, y
     """
     robot = Robot(zone, x, y, 0, 0)
     theta = robot.get_rotation_to_point(angle_x, angle_y)
     theta = theta if theta > 0 else 2 * math.pi + theta
     return Robot(zone, robot.x, robot.y, theta, robot.velocity)
Exemplo n.º 2
0
def can_score(world, our_robot, their_goal, turn=0):
    # Offset the robot angle if need be
    robot_angle = our_robot.angle + turn
    goal_zone_poly = world.pitch.zones[their_goal.zone][0]

    reverse = True if their_goal.zone == 3 else False
    goal_posts = sorted(goal_zone_poly, key=lambda x: x[0], reverse=reverse)[:2]
    # Makes goal be sorted from smaller to bigger
    goal_posts = sorted(goal_posts, key=lambda x: x[1])

    goal_x = goal_posts[0][0]

    robot = Robot(
        our_robot.zone, our_robot.x, our_robot.y, robot_angle % (pi * 2), our_robot.velocity)

    predicted_y = predict_y_intersection(world, goal_x, robot, full_width=True)

    return goal_posts[0][1] < predicted_y < goal_posts[1][1]
Exemplo n.º 3
0
 def test_get_displacement_two(self):
     robot = Robot(2, 5, 0)
     displacement = robot.get_displacement_to_point(3, 3)
     self.assertEqual(round(displacement, 2), 2.24)
Exemplo n.º 4
0
    def test_calculating_angle_everything(self):
        angle_in_degrees = 64
        robot = Robot(3, 4, angle_in_degrees)

        angle_to_rotate = robot.get_rotation_to_point(1, 2)
        self.assertEqual(angle_to_rotate, -109)
Exemplo n.º 5
0
    def test_calculating_angle_ten(self):
        angle_in_degrees = -180
        robot = Robot(0, 4, angle_in_degrees)

        angle_to_rotate = robot.get_rotation_to_point(0, 0)
        self.assertEqual(angle_to_rotate, 180)
Exemplo n.º 6
0
    def test_calculating_angle_nine(self):
        angle_in_degrees = -90
        robot = Robot(0, 0, angle_in_degrees)

        angle_to_rotate = robot.get_rotation_to_point(4, 4)
        self.assertEqual(angle_to_rotate, -135)
Exemplo n.º 7
0
    def test_calculating_angle_seven(self):
        angle_in_degrees = 45
        robot = Robot(0, 0, angle_in_degrees)

        angle_to_rotate = robot.get_rotation_to_point(4, 4)
        self.assertEqual(angle_to_rotate, 90)
Exemplo n.º 8
0
    def test_calculating_angle_five(self):
        angle_in_degrees = 180
        robot = Robot(0, 0, angle_in_degrees)

        angle_to_rotate = robot.get_rotation_to_point(0, 0)
        self.assertEqual(angle_to_rotate, -90)
Exemplo n.º 9
0
 def test_get_fake_shoot_side_middle(self):
     middle = self.world_left.pitch.width / 2
     robot = Robot(3, self.world_left.pitch.width, middle, 0, 0)
     side = self.strategy_left._get_fake_shoot_side(robot)
     expected_side = self.strategy_left.UP
     self.assertEqual(expected_side, side)
Exemplo n.º 10
0
 def test_get_fake_shoot_side_UP(self):
     robot = Robot(3, self.world_left.pitch.width, self.world_left.pitch.height, 0, 0)
     side = self.strategy_left._get_fake_shoot_side(robot)
     expected_side = self.strategy_left.UP
     self.assertEqual(expected_side, side)