public InteligenciaAtificial(List <GameObject> CDPub, List <GameObject> CDPriv, ComponenteInsulto ult, ComponenteInsulto penult, int co)
    {
        ComponentesDisponibles = new List <GameObject> ();

        /*ComponentesDisponibles.AddRange (CDPub);
         * ComponentesDisponibles.AddRange (CDPriv);*/
        foreach (GameObject c in CDPub)
        {
            if (c.activeSelf)
            {
                ComponentesDisponibles.Add(c);
            }
        }
        foreach (GameObject c in CDPriv)
        {
            if (c.activeSelf)
            {
                ComponentesDisponibles.Add(c);
            }
        }
        MejorSolucion  = new List <GameObject> ();
        SolucionActual = new List <GameObject> ();
        ultimo         = ult;
        penultimo      = penult;
        count          = co;
        partida        = GameObject.FindGameObjectWithTag("MainCamera").GetComponent <Partida> ();
        dano_max       = 0;
    }
Esempio n. 2
0
    public bool ComponentePulsadoRed(ComponenteInsulto comp, string tag_lista, int id)
    {
        //revisar validez de componente pulsado por lista
        if (turno == 0)
        {
            //caso jugador 1
            if (tag_lista != "ComponentePublico" && tag_lista != "ComponentePrivadoJ1")
            {
                Debug.Log("RECHAZADO POR PROPIEDAD");
                return(false);
            }
        }
        else
        {
            //caso jugador 2
            if (tag_lista != "ComponentePublico" && tag_lista != "ComponentePrivadoJ2")
            {
                Debug.Log("RECHAZADO POR PROPIEDAD");
                return(false);
            }
        }
        //revisar primer caso en que el jugador esta iniciando su insulto
        Jugador           jugador_act = Jugadores [turno].GetComponent <Jugador> ();
        ComponenteInsulto ultimo;
        ComponenteInsulto penultimo;
        bool aceptado = false;

        if (jugador_act.Insulto.Count == 0)
        {
            ultimo    = null;
            penultimo = null;
        }
        else if (jugador_act.Insulto.Count == 1)
        {
            ultimo    = jugador_act.Insulto [jugador_act.Insulto.Count - 1];
            penultimo = null;
        }
        else
        {
            ultimo    = jugador_act.Insulto [jugador_act.Insulto.Count - 1];
            penultimo = jugador_act.Insulto [jugador_act.Insulto.Count - 2];
        }
        aceptado = RevisorGramatical(comp, ultimo, penultimo, jugador_act.Insulto.Count);
        if (aceptado)
        {
            FinalizarTurno(jugador_act, comp);
            if (preferencias.tipoPartida == Constantes.MULTI_RED_HOST)
            {
                preferencias.server.Enviar(id.ToString());
                //				preferencias.esperado = Constantes.ID_BOTON_COMPONENTE_ELEGIDO;
            }
            else if (preferencias.tipoPartida == Constantes.MULTI_RED_CLI)
            {
                preferencias.client.Enviar(id.ToString());
                //				preferencias.esperado = Constantes.ID_BOTON_COMPONENTE_ELEGIDO;
            }
        }
        return(aceptado);
    }
Esempio n. 3
0
 //carga los diccionarios
 void Carga_Diccionarios()
 {
     CargaDiccionario(archivo_sujetos, Constantes.SUJETO);
     CargaDiccionario(archivo_insultos_simples, Constantes.INSULTO_SIM);
     CargaDiccionario(archivo_insultos_continuados, Constantes.INSULTO_CON);
     conjuncion = new ComponenteInsulto("y", Constantes.NEUTRO, Constantes.CONJUNCION);
     ser_estar  = new ComponenteInsulto("es", Constantes.NEUTRO, Constantes.SER_ESTAR);
 }
 bool QuedanComponentesValidos(List <GameObject> lista, ComponenteInsulto ult, ComponenteInsulto penult, int c)
 {
     foreach (GameObject comp in lista)
     {
         if (partida.RevisorGramatical(comp.GetComponent <ComportamientoComponente>().Componente, ult, penult, c))
         {
             return(true);
         }
     }
     return(false);
 }
Esempio n. 5
0
 void FinalizarTurno(Jugador jug, ComponenteInsulto comp)
 {
     jug.Insulto.Add(comp);
     turno = 1 - turno;         // cambiar valor entre 1 y 0
     if (Jugadores[turno].GetComponent <Jugador>().insulto_terminado)
     {
         turno = 1 - turno;            //se cambia de nuevo en caso de que el otro jugador haya terminado su turno
     }
     CambiarColorInsultos();
     //revisar si es partida contra la IA
     if (preferencias.tipoPartida == Constantes.SINGLE && turno == 1)
     {
         StartCoroutine(LLamarIA());
     }
 }
Esempio n. 6
0
 public bool ComponentePulsado(ComponenteInsulto comp, string tag_lista, int id)
 {
     //validacion turnos en red
     if (preferencias.tipoPartida == Constantes.MULTI_RED_CLI && turno == 0)
     {
         return(false);
     }
     else if (preferencias.tipoPartida == Constantes.MULTI_RED_HOST && turno == 1)
     {
         return(false);
     }
     else if (preferencias.tipoPartida == Constantes.SINGLE && turno == 1)
     {
         return(false);
     }
     return(ComponentePulsadoRed(comp, tag_lista, id));
 }
Esempio n. 7
0
 public bool RevisorGramatical(ComponenteInsulto comp, ComponenteInsulto ultimo, ComponenteInsulto penultimo, int count)
 {
     if (ultimo == null)
     {
         if (comp.tipo_componente == Constantes.SUJETO)
         {
             //recien inicia su turno por lo que se necesita un componente de tipo sujeto
             return(true);               //el insulto fue aceptado
         }
         else
         {
             return(false);
         }
     }
     else
     {
         //ya tiene componentes seleccionados, se revisa gramatica
         if (ultimo.tipo_componente == Constantes.SUJETO)
         {
             if (comp.tipo_componente == Constantes.SUJETO)
             {
                 return(false);
             }
             else if (comp.tipo_componente == Constantes.SER_ESTAR && penultimo != null)
             {
                 if (penultimo.tipo_componente == Constantes.CONJUNCION)
                 {
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             }
             else if ((comp.tipo_componente == Constantes.INSULTO_CON || comp.tipo_componente == Constantes.INSULTO_SIM || comp.tipo_componente == Constantes.SER_ESTAR) && penultimo != null)
             {
                 int tmp = penultimo.tipo_componente;
                 if (tmp == Constantes.INSULTO_CON || tmp == Constantes.INSULTO_SIM || tmp == Constantes.SER_ESTAR)
                 {
                     return(false);
                 }
                 else
                 {
                     return(true);
                 }
             }
             else
             {
                 return(true);
             }
         }
         else if (ultimo.tipo_componente == Constantes.INSULTO_CON)
         {
             if (comp.tipo_componente == Constantes.SUJETO)
             {
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
         else if (ultimo.tipo_componente == Constantes.INSULTO_SIM)
         {
             if (comp.tipo_componente == Constantes.CONJUNCION)
             {
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
         else if (ultimo.tipo_componente == Constantes.CONJUNCION)
         {
             if (comp.tipo_componente == Constantes.CONJUNCION)
             {
                 return(false);
             }
             else if (comp.tipo_componente == Constantes.SER_ESTAR || comp.tipo_componente == Constantes.INSULTO_CON || comp.tipo_componente == Constantes.INSULTO_SIM)
             {
                 if (penultimo != null && (penultimo.tipo_componente == Constantes.SUJETO ||
                                           penultimo.tipo_componente == Constantes.INSULTO_CON ||
                                           penultimo.tipo_componente == Constantes.INSULTO_SIM ||
                                           penultimo.tipo_componente == Constantes.SER_ESTAR) && count >= 3)
                 {
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             }
             else
             {
                 return(true);
             }
         }
         else if (ultimo.tipo_componente == Constantes.SER_ESTAR)
         {
             if (comp.tipo_componente == Constantes.SUJETO)
             {
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
         else
         {
             return(false);
         }
     }
 }