/** Metodo que arma el arbol de jugadas */ private void ArmoArbol(ArbolGeneral <NCarta> raiz, List <NCarta> propias, List <NCarta> oponente, int limite) { foreach (var elem in oponente) { NCarta dato = new NCarta { carta = elem.carta, flag = elem.flag }; ArbolGeneral <NCarta> nodo = new ArbolGeneral <NCarta>(dato); //creo un nuevo nodo con un dato dentro raiz.agregarHijo(nodo); //agrego nodo como raíz del arbol if (limite - dato.carta < 0) //Si el límite menos el valor de la carta jugada es menor a 0 { if (!dato.flag) // { dato.victorias++; // } } else { List <NCarta> copia = new List <NCarta>(); copia.AddRange(oponente); copia.Remove(elem); ArmoArbol(nodo, copia, propias, limite - elem.carta); } raiz.getDatoRaiz().victorias += dato.victorias; } }
public override void cartaDelOponente(int carta) { foreach (ArbolGeneral <NCarta> naipe in Victorias.getHijos()) { if (naipe.getDatoRaiz().carta == carta) { Victorias = naipe; break; } } }
public override int descartarUnaCarta() { int max = 0; ArbolGeneral <NCarta> ArbolAux = null; foreach (ArbolGeneral <NCarta> naipe in Victorias.getHijos()) { if (naipe.getDatoRaiz().getCarta() > max) { max = naipe.getDatoRaiz().getVictoria(); ArbolAux = naipe; } } Victorias = ArbolAux; return(Victorias.getDatoRaiz().getCarta()); }
public void eliminarHijo(ArbolGeneral <T> hijo) { this.raiz.getHijos().Remove(hijo.getRaiz()); }
public void agregarHijo(ArbolGeneral <T> hijo) { this.raiz.getHijos().Add(hijo.getRaiz()); }