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)
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]
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)
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)
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)
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)
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)
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)
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)
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)