Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Resolução do ex 3f
- *
- * @param p personagem que quer conquistar o local
- * @param l local que quer ser conquistado
- * @return uma instancia da classe conquista
- */
- public Conquista consegueConquistarLocal(Personagem p, Local l) {
- if (!(redeLocal.checkVertex(l) || !redeAlianca.validVertex(p))) {//Verifico se o lugar existe e a personagem também
- return null;
- }
- LinkedList<Local> lugaresConquistados = new LinkedList<>();
- for (Personagem aliado : p.getAliados()) {
- if (redeAlianca.getEdge(p, aliado) != null) {
- double forca_alianca = (aliado.getnPontos() + p.getnPontos()) * redeAlianca.getEdge(p, aliado).getWeight(); // (Força_alianca = forcaAliado + forcaPersonagem)*FatorCompatibilidade
- if (l.getDono() != null) {
- if (!(l.getDono().equals(p))) { //se o alidado nao for dono do local x podemos aplicar o shortPath
- double forca_necessaria = calcForcaNecessaria(p, aliado, l, lugaresConquistados); //aqui aplica-se um método parecido com o shortestPath do exercicio 1c
- if (!(lugaresConquistados.isEmpty())) { //o metodo em cima só preenche o minimo de lugares conquistados se o aliado nao for dono de nenhum lugar intermédio
- if (forca_alianca > forca_necessaria && forca_necessaria > 0) {
- if(l.getDono()!= null){
- forca_necessaria += l.getDono().getnPontos();
- }
- return new Conquista(aliado, lugaresConquistados, forca_alianca, forca_necessaria);
- }
- }
- }
- }
- }
- }
- return null;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement