diff --git a/libs/jogador.c b/libs/jogador.c index 8cce92df39be0d5b38849392705f7cca21292276..3f86f455a575d3ba04a42dbadc3f15f031d8d5e1 100644 --- a/libs/jogador.c +++ b/libs/jogador.c @@ -17,7 +17,9 @@ Lista Joga(Grafo g, Lista grupo){ int altura = calculaAltura(g, grupo); int naoConsumidos = tamanhoLista(g->vertices) - tamanhoLista(grupo); - int profundidade = (sqrt(max) * (sqrt(altura) / sqrt(min)) * (altura/sqrt(naoConsumidos))); + double razao = (altura/sqrt(naoConsumidos)); + int profundidade = (sqrt(max) * (sqrt(altura) / sqrt(min)) * razao); + if(profundidade < 1) profundidade = 1; Lista filhos = filhosGrupo(grupo); @@ -44,6 +46,10 @@ Lista Joga(Grafo g, Lista grupo){ } else if((v->bonus) == (maior->bonus)) { if(v->peso > maior->peso) { maior = v; + } else if(v->peso == maior->peso) { + if(v->cor < maior->cor) { + maior = v; + } } } } @@ -146,7 +152,7 @@ void calculaBonus(Lista grupo, Grafo g, int profundidade) { Vertice filho = (Vertice) getConteudo(m); if((filho->altura > v->altura)) { int bonus = filho->peso + calculaBonusRec(filho, v, g, profundidade); - if(corEstaNaLista(grupo, filho->cor)) bonus += 100; + if(corEstaNaLista(grupo, filho->cor)) bonus += 50; v->bonus += bonus; } } @@ -169,7 +175,7 @@ void calculaBonus(Lista grupo, Grafo g, int profundidade) { v->bonus += 150; } } - destroiLista(vFilhos, NULL); + destroiLista(vFilhos, destroiVertice); int menorDistancia = v->altura; for(No m = primeiroNoLista(g->vertices); m; m = getSucessorNo(m)) { @@ -180,7 +186,6 @@ void calculaBonus(Lista grupo, Grafo g, int profundidade) { if((w->altura < menorDistancia) || (menorDistancia == v->altura)) menorDistancia = w->altura; } } - v->bonus += (menorDistancia - v->altura)^2; for(No m = primeiroNoLista(v->pais); m; m = getSucessorNo(m)) { Vertice pai = (Vertice) getConteudo(m);