private int evaluateRecursively (AbstractPlay play, Player cpu){
		Board copy = new Board (play.getBoard());
		play.setBoard(copy);
		int evaluation = play.eatNumber();
		Piece piece = copy.getPiece(play.getStart()); //salvo il pezzo per poi controllare se è un damone
		
		play.execute(); //sulla copia della damiera
		
		if (play instanceof Capture) {
			FactoryOfPlays consecutiveCaptures = new FactoryOfCapturingsForPiece(play.getDestination(), copy);
			int max = 0;
			if (!consecutiveCaptures.isEmpty()) {
				for (AbstractPlay p : consecutiveCaptures)
					max = Math.max(max, evaluateRecursively(p,cpu));
				play.setBoard(cpu.getBoard());
				return 1+max;
			}
		}
		Player otherPlayer = new Player(!cpu.getColor(), copy);
		FactoryOfPlays factory = new FactoryOfPlaysForPlayer(otherPlayer);
		
		int counterPlayEvaluation = 0;
		if (!factory.isEmpty()){
			AbstractPlay bestCounterPlay = factory.getBest();
			counterPlayEvaluation = bestCounterPlay.eatNumber();
		}
		
		if (!(piece instanceof King) && play.getDestination().getY() == 0)
			evaluation++;
			
		play.setBoard(cpu.getBoard());
		
		return evaluation - counterPlayEvaluation; 
	}