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