Beispiel #1
0
 public override void Colision(SpriteComponent otro, Vector2 desplazamiento)
 {
     //if (life <= 0)
     //{
     //    died = true;
     //}
     //Debug.Print("Agente "+direccionColision);
     //if (direccionColision.Equals("arriba"))
     //{
     //    life--;
     //}
     if (otro is Muro)
     {
         Mover(desplazamiento);
         if (desplazamiento.Y != 0)
         {
             velocidad.Y = 0;
             isOnGround  = true;
         }
     }
     if (otro is Jugador)
     {
         direccionColision = cls.colision(this.Bound, otro.Bound);
         //Debug.Print("Agente " + direccionColision + " vida:" + life);
         if ((!direccionColision.Equals("abajo")) && (!direccionColision.Equals("nulo")))
         {
             otro.life--;
         }
         Mover(desplazamiento);
         if (desplazamiento.Y != 0)
         {
             velocidad.Y = 0;
         }
     }
     if (otro is Objeto)
     {
         Mover(desplazamiento);
         if (desplazamiento.Y != 0)
         {
             velocidad.Y = 0;
             isOnGround  = true;
         }
     }
     if (otro is Agent)
     {
         Mover(desplazamiento);
         if (desplazamiento.Y != 0)
         {
             velocidad.Y = 0;
         }
     }
 }
Beispiel #2
0
        //private List<estados> retorno = new List<estados>();

        public Bloque Percepciones(SpriteComponent agente, SpriteComponent sprite, int profundidad)
        {
            // lee las entradas (percepciones) y las compara para luego retornar un estado
            // 'jugador' son las percepciones del objetivo: Jugador.
            // 'agente' son las percepciones del objetivo: Agente.
            //estados nuevoEstado = new estados(); // inicializa los estados.
            //nuevoEstado.sector = new List<Sector>();
            Bloque nuevoBloque = new Bloque();
            //nuevoEstado.sector = new List<Sector>(); // inicializa el conjunto de estados.
            // verifica si es un jugador u otro objeto
            // calcula la distancia entre jugador y agente.

            /* nueva funcion de calculo
             * se crea una nueva posicion para el elemento verificando su posicion en celdas de 32*32px
             * Vector2 nPA = nueva Posicion Agente
             * Vector2 nPS = nueva Posicion Sprite
             * nivel de profundidad 1.
             * A, B, C, D, E, F, G y H son las posibles posiciones en las que se puede encontrar un elemento cercano al agente.
             * IF condiciones en que evalua si el sprite se encuentra en la matriz adyacente del agente.
             *      |A|B|C|
             *      |D|*|E|
             *      |F|G|H|
             * el agente "*" se encuentra en el centro.
             * A: X-1, Y-1     E: X+1, Y+0
             * B: X+0, Y-1     F: X-1, Y+1
             * C: X+1, Y-1     G: X+0, Y+1
             * D: X-1, Y+0     H: X+1, Y+1
             * nivel de profundidad 2.
             *      |A|B|C|D|E|
             *      |F|G|H|I|J|
             *      |K|L|*|M|N|
             *      |O|P|Q|R|S|
             *      |T|U|V|W|X|
             * nivel de profundidad 3...
             */
            Vector2 nPA = new Vector2((int)(agente.Posicion.X / 32), (int)(agente.Posicion.Y / 32));
            Vector2 nPS = new Vector2((int)(sprite.Posicion.X / 32), (int)(sprite.Posicion.Y / 32));
            Vector2 tPS = new Vector2((int)(sprite.Tamano.X / 32), (int)(sprite.Tamano.Y / 32));

            // comprueba la posicion del sprite con profundidadnivel1
            //nuevoBloque.sector = ProfundidadNivel1(nPA, nPS, tPS);


            // asignamos el nombre del sprite
            if (sprite is Jugador)
            {
                nuevoBloque.sector = Profundidad(nPA, nPS, tPS, profundidad, "player");
            }
            else if (sprite is Muro)
            {
                nuevoBloque.sector = Profundidad(nPA, nPS, tPS, profundidad, "wall");
            }
            else if (sprite is Agent)
            {
                nuevoBloque.sector = Profundidad(nPA, nPS, tPS, profundidad, "agent");
            }
            else if (sprite is Objeto)
            {
                nuevoBloque.sector = Profundidad(nPA, nPS, tPS, profundidad, "object");
            }

            return(nuevoBloque);
        }
Beispiel #3
0
 public void RemoverSprite(SpriteComponent sprite)
 {
     Sprites.Remove(sprite);
 }
Beispiel #4
0
 public void AdicionarSprite(SpriteComponent sprite)
 {
     Sprites.Add(sprite);
 }
Beispiel #5
0
 public override void Colision(SpriteComponent otro, Vector2 desplazamiento)
 {
     // no se hace nada
 }
Beispiel #6
0
 public abstract void Colision(SpriteComponent otro, Vector2 desplazamiento);