def test_actuate(self):
        pred1 = Predator('1', Coord(0, 0), self.env, 5, speed=1)
        pred2 = Predator('2', Coord(0, 1), self.env, 5, speed=2)
        prey1 = Prey('1', Coord(0, 4), self.env)

        pred1.perceive()
        pred1.actuate('simple_hunt_strategy')
        self.assertEqual(pred1.current_coord, self.env._get_coord(Coord(1, 0)))

        pred2.perceive()
        pred2.actuate('simple_hunt_strategy')
        self.assertEqual(pred2.current_coord, self.env._get_coord(Coord(0, 3)))
 def test_best_move(self):
     pred1 = Predator('1', Coord(0, 0), self.env, 5, 1)
     pred2 = Predator('2', Coord(0, 1), self.env, 2)
     prey1 = Prey('1', Coord(0, 3), self.env)
     pred1.perceive()
     nearest_prey = pred1.find_nearest_prey()
     pred1.perceive()
     self.assertEqual(nearest_prey, prey1)
     prey_location_details = pred1.get_prey_path(nearest_prey)
     best_move = pred1.get_best_move(prey_location_details)
     self.assertEqual(best_move, self.env._get_coord(Coord(1, 0)))
     pred1.actuate()
     self.assertEqual(pred1.current_coord, self.env._get_coord(Coord(1, 0)))
コード例 #3
0
 def test_add_multiple_predator(self):
     pred1 = Predator('1', Coord(0,0), self.env, 8)
     prey1 = Prey('2', Coord(2,3), self.env, speed = 20)
     pred1.perceive()
     #print(pred1._beliefs)
     self.assertEqual(pred1.find_nearest_prey(), prey1)
     pred2 = Predator('3', Coord(0,1), self.env, 2)
     self.assertEqual(pred2.find_nearest_prey(), None)
     prey1.move(Coord(9,9))
     
     print(self.env.print_board())
     #predator has not perveived so still believes prey is near it
     self.assertEqual(pred1.find_nearest_prey(), prey1)
     
     pred1.perceive()
     #once predator has perceived, finds prey has moved
     self.assertEqual(pred1.find_nearest_prey(), None)
    def test_best_move_different_speeds(self):
        '''Ensures that predators can move at different speeds to chase prey'''
        pred1 = Predator('1', Coord(0, 0), self.env, 5, 1)
        pred2 = Predator('2', Coord(0, 1), self.env, 5, speed=2)
        prey1 = Prey('1', Coord(0, 4), self.env)

        pred2.perceive()
        pred2_nearest_prey = pred2.find_nearest_prey()
        self.assertEqual(pred2_nearest_prey, prey1)
        pred2_prey_path = pred2.get_prey_path(pred2_nearest_prey)

        print('pred2 speed: {}'.format(pred2.speed))
        print('pred2_prey_path: {}'.format(pred2_prey_path))
        print('pred2 available moves: {}'.format(pred2.find_available_moves()))
        self.assertTrue(
            all(x in list(
                map(lambda x: self.env._get_coord(x), [
                    Coord(0, 2),
                    Coord(0, 3),
                    Coord(1, 0),
                    Coord(1, 1),
                    Coord(1, 2),
                    Coord(2, 1)
                ])) for x in pred2.find_available_moves()))
        self.assertTrue(
            all(x in pred2.find_available_moves() for x in list(
                map(lambda x: self.env._get_coord(x), [
                    Coord(0, 2),
                    Coord(0, 3),
                    Coord(1, 0),
                    Coord(1, 1),
                    Coord(1, 2),
                    Coord(2, 1)
                ]))))

        best_move = pred2.get_best_move(
            pred2.get_prey_path(pred2_nearest_prey))
        self.assertEqual(best_move, self.env._get_coord(Coord(0, 3)))
コード例 #5
0
 def test_add_single_predator(self):
     pred1 = Predator('1', Coord(0,0), self.env, 6)
     prey1 = Prey('2', Coord(2,3), self.env, speed = 3)
     pred1.perceive()
     self.assertEqual(pred1.find_nearest_prey(), prey1)