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; }
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); }
//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); }
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()); } }
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)); }
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); } } }