percepcionCasilla [] alrededores = new percepcionCasilla[4]; //Array con la información de lo que rodea al personaje (del tablero de la IA) // Use this for initialization void Start() { anchoTablero = 10; altoTablero = 5; tableroIA = new percepcionCasilla[anchoTablero, altoTablero]; //Para la patrulla movimientosPlaneados = new Queue <Movimiento>(8); modo = modoAgente.Patrullando; }
//------------------------------------------------------- //METODOS IMPORTANTES (o no) //Fragmento que nos permite determinar con lógica guapa guapa dónde están los huecos (y la sangre?) //partiendo de las premisas que nos proporcionan los conocimientos que tengamos //Premisa: Estas en una casilla con nube. void analizaInfoGM() { //Recibes un int, que representa cierta información del GM que la IA va a interpretar a su manera. //int tableroX, tableroY; int gmInfo = GameManager.instance.getInfoCasilla(out tableroX, out tableroY); //Ahora con un switch vamos a interpretarlo y en funcion de eso modificar //tanto la informacion local del tablero como el modo switch (gmInfo) { case 0: //Casilla vacia -> ok //Realmente no hace nada break; case 1: //Hueco -> te has muerto modo = modoAgente.Muerto; break; case 2: //sueloVacio -> ok tableroIA[tableroX, tableroY] = percepcionCasilla.ok; break; case 3: //sueloArma -> un objetivo completado! armaEncontrada = true; if (armaEncontrada && muertoEncontrado) //Determina si has completado la busqueda { aLaCama = true; } tableroIA [tableroX, tableroY] = percepcionCasilla.ok; //Metes las cuatro direcciones for (int i = 0; i < 4; i++) { switch (i) { case 0: //norte: ida y vuelta movimientosPlaneados.Enqueue(Movimiento.Arriba); movimientosPlaneados.Enqueue(Movimiento.Abajo); break; case 1: //sur: ida y vuelta movimientosPlaneados.Enqueue(Movimiento.Abajo); movimientosPlaneados.Enqueue(Movimiento.Arriba); break; case 2: //este: ida y vuelta movimientosPlaneados.Enqueue(Movimiento.Derecha); movimientosPlaneados.Enqueue(Movimiento.Izquierda); break; case 3: //oeste: ida y vuelta movimientosPlaneados.Enqueue(Movimiento.Izquierda); movimientosPlaneados.Enqueue(Movimiento.Derecha); break; } } //Si no estabas en busca, te pones a ello. if (modo == modoAgente.Analizando && aLaCama) { modo = modoAgente.Volviendo; } break; case 4: //NubeVacia -> pones a nube y miras alrededores tableroIA [tableroX, tableroY] = percepcionCasilla.nube; analizaTerreno(tableroX, tableroY); break; case 5: //NubeSangre -> Cambias a busqueda (y miras alrededores antes?) tableroIA [tableroX, tableroY] = percepcionCasilla.nube; analizaTerreno(tableroX, tableroY); //tableroIA [tableroX, tableroY] = percepcionCasilla.sangre; //Tambien es sangre :3 if (modo != modoAgente.Analizando) { modo = modoAgente.Analizando; } break; case 6: //NubeArma armaEncontrada = true; if (armaEncontrada && muertoEncontrado) //Determina si has completado la busqueda { aLaCama = true; } tableroIA[tableroX, tableroY] = percepcionCasilla.nube; analizaTerreno(tableroX, tableroY); break; case 7: muertoEncontrado = true; if (armaEncontrada && muertoEncontrado) //Determina si has completado la busqueda { aLaCama = true; } tableroIA[tableroX, tableroY] = percepcionCasilla.nube; analizaTerreno(tableroX, tableroY); break; case 8: //sangre -> cambias a busqueda. Si ya estás en busqueda, supongo que actuaizas mapa y ya. tableroIA [tableroX, tableroY] = percepcionCasilla.sangre; if (modo != modoAgente.Analizando) { modo = modoAgente.Analizando; } break; case 9: //muerto -> yay, otro objetivo! muertoEncontrado = true; if (armaEncontrada && muertoEncontrado) //Determina si has completado la busqueda { aLaCama = true; } tableroIA [tableroX, tableroY] = percepcionCasilla.ok; break; case 10: //Casa -> si tienes los dos objetivos, has ganado. Si no, no. if (aLaCama) { //HAS GANADO :333 GameManager.instance.IACompletedPuzzle(); } tableroIA [tableroX, tableroY] = percepcionCasilla.ok; break; } }