Exemplo n.º 1
0
        public Pieza GetPieza(char key)
        {
            Pieza piezas = null;

            if (_piezas.ContainsKey(key))
            {
                piezas = _piezas[key];
            }
            else
            {
                switch (key)
                {
                case 'P': piezas = new Peon(key); break;

                case 'R': piezas = new Rey(key); break;

                case 'r': piezas = new Reina(key); break;

                case 'C': piezas = new Caballo(key); break;

                case 'A': piezas = new Alfil(key); break;

                case 'T': piezas = new Torre(key); break;

                case 'D': piezas = new Dama(key); break;
                }
                _piezas.Add(key, piezas);
            }
            return(piezas);
        }
Exemplo n.º 2
0
    // Start is called before the first frame update
    void Start()
    {
        if (escarabajo)
        {
            this.vida      = 30;
            this.daño      = 3;
            this.velocidad = 1.0f;
        }
        else
        {
            this.vida      = 12;
            this.daño      = 2;
            this.velocidad = 2.0f;
        }

        this.zonaDondeEsta = 1;
        pb           = this.gameObject.GetComponent <PandaBehaviour>();
        agente       = this.gameObject.GetComponent <NavMeshAgent>();
        agente.speed = this.velocidad;
        this.siguientePosicionExplorar = Vector3.zero;
        hormigueroDentro   = GameObject.FindObjectOfType <Floor>();
        tiempoEntreAtaques = tiempoEntreAtaquesMax;
        reina = GameObject.FindObjectOfType <Reina>();

        if (escarabajo)
        {
            agente.avoidancePriority = 0;
        }
    }
Exemplo n.º 3
0
    // Start is called before the first frame update
    void Start()
    {
        miReina                 = GameObject.FindObjectOfType <Reina>();
        huevoCollider           = GetComponent <Collider>();
        huevoCollider.isTrigger = true;

        // Variables huevo
        maxTimeParaCuidar         = 150;
        tiempoQueAguantaSinCuidar = maxTimeParaCuidar - Random.Range(0, 20);
        tiempoParaNacer           = 150 + Random.Range(0, 100);
        umbralDeAvisoCuidarHuevo  = 70;
        umbralDePoderseCuidar     = 100;
    }
Exemplo n.º 4
0
    /// <summary>
    /// Factory Method
    /// </summary>
    /// <param name="tipo">es el tipo de pieza, peon o reina del enum Jugadores</param>
    /// <returns>retorna un objeto de las subclases peon o reina dependiendo del tipo</returns>

    public static Pieza HacerPieza(TiposPiezas t)
    {
        Pieza rta;

        if (t == TiposPiezas.peon)
        {
            rta      = new Peon();
            rta.tipo = t;
            return(rta);
        }
        if (t == TiposPiezas.Reina)
        {
            rta      = new Reina();
            rta.tipo = t;
            return(rta);
        }
        return(null);
    }
Exemplo n.º 5
0
 // Start is called before the first frame update
 void Start()
 {
     reina  = GameObject.FindObjectOfType <Reina>();
     miTile = null;
 }
Exemplo n.º 6
0
    public void Cavar()
    {
        if (bocadillos.hormigaSeleccionada != null && bocadillos.hormigaSeleccionada == this)
        {
            if (!this.agente.isOnOffMeshLink)
            {
                bocadillos.Cavar();
            }
            else
            {
                bocadillos.Nada();
            }
        }
        //esta fuera
        if (zonaDondeEsta != 0)
        {
            Vector3    randomDirection;
            NavMeshHit aux;
            bool       aux2;
            do
            {
                randomDirection = UnityEngine.Random.insideUnitSphere * 10 + reina.hormiguero.centro;
                aux2            = NavMesh.SamplePosition(randomDirection, out aux, 1.0f, NavMesh.AllAreas);
            } while (!aux2);
            posCavar = new Vector3(aux.position.x, 0, aux.position.z);
            //Debug.Log("Posicion a la que va: " + siguientePosicionExplorar);
            agente.SetDestination(posCavar);
        }
        else
        {
            posCavar = Vector3.zero;
            if (tiempoQueLlevaHaciendoElTunel < tiempoParaHacerTunel)
            {
                tiempoQueLlevaHaciendoElTunel += Time.deltaTime;
                agente.SetDestination(reina.hormiguero.gameObject.transform.position + new Vector3(Random.Range(0, reina.hormiguero.width), 0, Random.Range(0, reina.hormiguero.heigth)));
                Task.current.Succeed();
                return;
            }
            else
            {
                int min = -1;


                int capacidadRestanteHormigas = reina.capacidadTotalDeHormigas - reina.totalHormigas;
                int capacidadRestanteComida   = reina.capacidadTotalDeComida - reina.comidaTotal.Count;
                int capacidadRestanteHuevos   = reina.capacidadTotalDeHuevos - reina.huevosTotal.Count;


                if (reina.hayQueCrearSalasComida && reina.hayQueCrearSalasHuevos && reina.hayQueCrearSalasHormigas)
                {
                    min = Reina.CompareLess3(capacidadRestanteHormigas, capacidadRestanteComida, capacidadRestanteHuevos, reina.importanciaHormigas, reina.importanciaComida, reina.importanciaHuevos);
                }
                else if (reina.hayQueCrearSalasHormigas && reina.hayQueCrearSalasHuevos)
                {
                    min = Reina.CompareLess3(capacidadRestanteHormigas, capacidadRestanteComida, capacidadRestanteHuevos, reina.importanciaHormigas, reina.importanciaComida, 0);
                }
                else if (reina.hayQueCrearSalasHormigas && reina.hayQueCrearSalasComida)
                {
                    min = Reina.CompareLess3(capacidadRestanteHormigas, capacidadRestanteComida, capacidadRestanteHuevos, reina.importanciaHormigas, 0, reina.importanciaHuevos);
                }
                else if (reina.hayQueCrearSalasComida && reina.hayQueCrearSalasHuevos)
                {
                    min = Reina.CompareLess3(capacidadRestanteHormigas, capacidadRestanteComida, capacidadRestanteHuevos, 0, reina.importanciaComida, reina.importanciaHuevos);
                }
                else if (reina.hayQueCrearSalasHormigas)
                {
                    min = 0;
                }
                else if (reina.hayQueCrearSalasComida)
                {
                    min = 1;
                }
                else if (reina.hayQueCrearSalasHuevos)
                {
                    min = 2;
                }

                Room aux;
                switch (min)
                {
                // no es necesario crear ninguna Sala;
                case -1:
                    Task.current.Fail();
                    break;

                case 0:
                    aux = reina.hormiguero.createCorridor(Room.roomType.LIVEROOM);
                    if (aux != null)
                    {
                        reina.capacidadTotalDeHormigas += aux.capacidadTotalRoom;
                        reina.salasHormigas.Add(aux);
                        reina.hayQueCrearSalasHormigas = false;
                        //Debug.Log("Sala de Hormigas creada, la capacidad ahora es: " + capacidadTotalDeHormigas);
                        tiempoQueLlevaHaciendoElTunel = 0;
                        hayOrdenDeCavar = false;
                        SacarDeOcupadas();
                        reina.numHormigasCavandoTuneles--;
                        Task.current.Succeed();
                    }
                    else
                    {
                        reina.espacioLlenoHormiguero  = true;
                        tiempoQueLlevaHaciendoElTunel = 0;
                        hayOrdenDeCavar = false;
                        SacarDeOcupadas();
                        reina.numHormigasCavandoTuneles--;
                        Task.current.Fail();
                    }
                    break;

                case 1:

                    aux = reina.hormiguero.createCorridor(Room.roomType.STORAGE);
                    if (aux != null)
                    {
                        reina.salasComida.Add(aux);
                        reina.capacidadTotalDeComida += aux.capacidadTotalRoom;
                        reina.hayQueCrearSalasComida  = false;
                        //Debug.Log("Sala de Comida creada, la capacidad ahora es: " + capacidadTotalDeComida);
                        tiempoQueLlevaHaciendoElTunel = 0;
                        hayOrdenDeCavar = false;
                        SacarDeOcupadas();
                        reina.numHormigasCavandoTuneles--;
                        Task.current.Succeed();
                    }
                    else
                    {
                        reina.espacioLlenoHormiguero  = true;
                        tiempoQueLlevaHaciendoElTunel = 0;
                        hayOrdenDeCavar = false;
                        SacarDeOcupadas();
                        reina.numHormigasCavandoTuneles--;
                        Task.current.Fail();
                    }
                    break;

                case 2:

                    aux = reina.hormiguero.createCorridor(Room.roomType.EGGROOM);

                    if (aux != null)
                    {
                        reina.salasHuevos.Add(aux);
                        reina.capacidadTotalDeHuevos += aux.capacidadTotalRoom;
                        reina.hayQueCrearSalasHuevos  = false;
                        //Debug.Log("Sala de Huevos creada, la capacidad ahora es: " + capacidadTotalDeHuevos);
                        tiempoQueLlevaHaciendoElTunel = 0;
                        hayOrdenDeCavar = false;
                        SacarDeOcupadas();
                        reina.numHormigasCavandoTuneles--;
                        Task.current.Succeed();
                    }
                    else
                    {
                        reina.espacioLlenoHormiguero  = true;
                        tiempoQueLlevaHaciendoElTunel = 0;
                        hayOrdenDeCavar = false;
                        SacarDeOcupadas();
                        reina.numHormigasCavandoTuneles--;
                        Task.current.Fail();
                    }
                    break;
                }
            }
        }
    }
Exemplo n.º 7
0
    // Para detección de las hormigas (lista hormigasCerca)
    public void SistemaDeVision()
    {
        hormigasCerca = new List <HormigaGenerica>();
        obrerasCerca  = false;
        soldadosCerca = false;
        reinaCerca    = false;
        RaycastHit hit;

        Vector3 dir = Vector3.zero;

        // Rayos fijos
        for (int i = 0; i < numRayosFijos; i++)
        {
            switch (i)
            {
            case 0:    // delante
                dir = transform.TransformDirection(Vector3.forward);
                break;

            case 1:     // detras
                dir = transform.TransformDirection(Vector3.back);
                break;

            case 2:     // izq
                dir = transform.TransformDirection(Vector3.left);
                break;

            case 3:     //der
                dir = transform.TransformDirection(Vector3.right);
                break;
            }

            if (Physics.Raycast(transform.position, dir, out hit, RayDistance))
            {
                GameObject objetoColision = hit.collider.gameObject;

                if (objetoColision.transform.parent != null)
                {
                    if (objetoColision.transform.parent.gameObject != this.gameObject)
                    {
                        Obrera  hormigaObrera  = objetoColision.transform.parent.gameObject.GetComponent <Obrera>();
                        Soldado hormigaSoldado = objetoColision.transform.parent.gameObject.GetComponent <Soldado>();
                        Reina   hormigaReina   = objetoColision.transform.parent.gameObject.GetComponent <Reina>();
                        if (hormigaObrera != null)
                        {
                            obrerasCerca = true;
                        }
                        if (hormigaSoldado != null)
                        {
                            soldadosCerca = true;
                        }
                        if (hormigaReina != null)
                        {
                            reinaCerca = true;
                        }
                        if (!hormigasCerca.Contains(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>()))
                        {
                            hormigasCerca.Add(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>());
                        }
                    }
                    else
                    {
                        //Debug.Log("Chocandote contigo mismo");
                    }
                }
            }
        }

        // Rayos Móviles
        for (int j = 0; j < numRayosExtra; j++)
        {
            dir = new Vector3(Random.Range(-100, 101), 0, Random.Range(-100, 101));
            dir = dir.normalized;
            if (Physics.Raycast(transform.position, dir, out hit, RayDistance))
            {
                GameObject objetoColision = hit.collider.gameObject;

                if (objetoColision.transform.parent != null)
                {
                    if (objetoColision.transform.parent.gameObject != this.gameObject)
                    {
                        Obrera  hormigaObrera  = objetoColision.transform.parent.gameObject.GetComponent <Obrera>();
                        Soldado hormigaSoldado = objetoColision.transform.parent.gameObject.GetComponent <Soldado>();
                        Reina   hormigaReina   = objetoColision.transform.parent.gameObject.GetComponent <Reina>();
                        if (hormigaObrera != null)
                        {
                            obrerasCerca = true;
                        }
                        if (hormigaSoldado != null)
                        {
                            soldadosCerca = true;
                        }
                        if (hormigaReina != null)
                        {
                            reinaCerca = true;
                        }
                        if (!hormigasCerca.Contains(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>()))
                        {
                            hormigasCerca.Add(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>());
                        }
                        //Debug.Log(hit.collider.gameObject.transform.parent.gameObject.tag);
                    }

                    else
                    {
                        //Debug.Log("Chocandote contigo mismo");
                    }
                }
                //Debug.DrawRay(transform.position, dir * RayDistance, Color.magenta);
            }
        }
    }