From acee99387f9c499b448434f201769c51249cc1b7 Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Tue, 16 May 2017 12:04:00 -0300 Subject: [PATCH] =?UTF-8?q?Add=20fun=C3=A7=C3=A3o=20para=20pegar=20os=20fi?= =?UTF-8?q?lhos=20do=20grupo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/jogador.c | 18 +++++++++++++++++- libs/jogador.h | 3 +++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/libs/jogador.c b/libs/jogador.c index 33ee8ce..2110ad5 100644 --- a/libs/jogador.c +++ b/libs/jogador.c @@ -6,9 +6,10 @@ #include "grafo.h" Lista Joga(Grafo g, Lista grupo){ - //TODO: A Logica toda do jogo vai ficar aqui + //TODO: A Logica toda do jogo vai ficar aqui // Pega os filhos do grupo + Lista filhos = filhosGrupo(grupo); // Monta a árvore de busca: // - RAIZ: grupo // - FILHOS: Cores alcancáveis a partir da raiz @@ -19,5 +20,20 @@ Lista Joga(Grafo g, Lista grupo){ // - Em caso de empate da soma peso + bônus: // - Escolher o filho que tem mais netos da mesma cor de um filho // Após escolher um filho, repete o algoritmo até não terem mais filhos do grupo + + // Limpa as coisas + destroiLista(filhos, NULL); return constroiLista(); } + +Lista filhosGrupo(Lista l) { + Lista filhos = constroiLista(); + for(No n = primeiroNoLista(l); n; n = getSucessorNo(n)) { + Vertice pai = (Vertice) getConteudo(n); + for(No m = primeiroNoLista(pai->filhos); m; m = getSucessorNo(m)) { + Vertice filho = (Vertice) getConteudo(m); + insereUnicoLista(filho, filhos); + } + } + return filhos; +} diff --git a/libs/jogador.h b/libs/jogador.h index 1dd92d0..ec8ae9a 100644 --- a/libs/jogador.h +++ b/libs/jogador.h @@ -1,6 +1,7 @@ #ifndef _PLAYER_ #define _PLAYER_ #include <stdbool.h> +#include "vertice.h" #include "grafo.h" #include "lista.h" @@ -8,4 +9,6 @@ // até consumir todos os vértices do grafo. Retorna a lista de jogadas Lista Joga(Grafo g, Lista grupo); +// Retorna todos os filhos de uma lista de vértices +Lista filhosGrupo(Lista l); #endif -- GitLab