Exemple #1
0
        public void reestablecer()
        {
            Random rnd = new Random();

            Mapa.Personajes = new List <Entidad>();
            //Implementar clase que obtenga nombres
            //Nombres Reponom = new Nombres({,,,});
            //Reponom.sacarNombre();
            Nomop nombres = new Nomop();
            //Pelotas

            //Equipo 1 izquierda + true
            Cazador   c1e1 = new Cazador(12, 3, true, nombres.getnom(), '►');
            Cazador   c2e1 = new Cazador(12, 9, true, nombres.getnom(), '►');
            Cazador   c3e1 = new Cazador(12, 15, true, nombres.getnom(), '►');
            Golpeador g1e1 = new Golpeador(17, 3, true, nombres.getnom(), '♠');
            Golpeador g2e1 = new Golpeador(17, 15, true, nombres.getnom(), '♠');

            Guardian ge1 = new Guardian(1, 9, true, nombres.getnom(), (char)18);
            //Equipo 2 derecha - false
            Cazador   c1e2 = new Cazador(61, 3, false, nombres.getnom(), '◄');
            Cazador   c2e2 = new Cazador(61, 9, false, nombres.getnom(), '◄');
            Cazador   c3e2 = new Cazador(61, 15, false, nombres.getnom(), '◄');
            Golpeador g1e2 = new Golpeador(56, 3, false, nombres.getnom(), '♥');
            Golpeador g2e2 = new Golpeador(56, 15, false, nombres.getnom(), '♥');
            Guardian  ge2  = new Guardian(72, 9, false, nombres.getnom(), (char)18);
            //Mas pelotas
            Quaffle q = new Quaffle(36, 9);

            #region

            Mapa.Personajes.Add(c1e1);
            Mapa.Personajes.Add(c2e1);
            Mapa.Personajes.Add(c3e1);
            Mapa.Personajes.Add(g1e1);
            Mapa.Personajes.Add(g2e1);

            Mapa.Personajes.Add(ge1);
            Mapa.Personajes.Add(c1e2);
            Mapa.Personajes.Add(c2e2);
            Mapa.Personajes.Add(c3e2);
            Mapa.Personajes.Add(g1e2);
            Mapa.Personajes.Add(g2e2);

            Mapa.Personajes.Add(ge2);

            Mapa.Personajes.Add(q);

            #endregion
        }
        public override bool Mover(int pfx, int pfy, long tics)
        {
            double  minim = 0;
            Quaffle qt    = (Quaffle)Mapa.Personajes[12];

            if (tieneQuaffle == true)               //Si tiene la quaffle, debe ver si puede disparar, si no, debe avanzar y cargarla con el
            {
                //Buscar el aro mas cercano
                if (equipo == false)
                {
                    double d1 = Math.Pow(Math.Abs(posx - 1), 2) + Math.Pow(Math.Abs(posy - 6), 2);      //73 9   73 6 73 12
                    double d2 = Math.Pow(Math.Abs(posx - 1), 2) + Math.Pow(Math.Abs(posy - 9), 2);
                    double d3 = Math.Pow(Math.Abs(posx - 1), 2) + Math.Pow(Math.Abs(posy - 12), 2);
                    minim = Math.Min(d1, d2);
                    minim = Math.Min(minim, d3);
                }
                if (equipo == true)
                {
                    double d1 = Math.Pow(Math.Abs(posx - 73), 2) + Math.Pow(Math.Abs(posy - 6), 2);      //73 9   73 6 73 12
                    double d2 = Math.Pow(Math.Abs(posx - 73), 2) + Math.Pow(Math.Abs(posy - 9), 2);
                    double d3 = Math.Pow(Math.Abs(posx - 73), 2) + Math.Pow(Math.Abs(posy - 12), 2);
                    minim = Math.Min(d1, d2);
                    minim = Math.Min(minim, d3);
                }
                bool exito = this.disparar(minim);
                qt.posx = posx;
                qt.posy = posy;
                return(exito);
            }
            else if (qt.enPosesion == 0) //si no la tiene, debe ver donde esta, y si alguien mas la tiene
            {
                return(seguirQuaffle(qt, tics));
            }
            else if (qt.enPosesion == -1 && tieneQuaffle == false)
            {
                foreach (Entidad i in Mapa.Personajes)
                {
                    if (i is Cazador)
                    {
                        Cazador j = (Cazador)i;
                        if (j.tieneQuaffle)
                        {
                            this.seguir(j.posx, j.posy, tics);
                        }
                    }
                }
            }
            return(true);
        }
        public bool seguirQuaffle(Quaffle q, long tics)
        {
            int pasos = vel_lineal;
            int pfx   = q.posx;         //Fijando objetivo
            int pfy   = q.posy;

            if (q.enPosesion == 0)                 //Dirigirse a la quaffle si nadie mas la tiene
            {
                while (pasos > 0 && Aturdido == 0) //Si no está aturdido
                {
                    int dx = posx - pfx;
                    int dy = posy - pfy;
                    if (dx == 0 && dy == 0)     //Llegó a la quaffle
                    {
                        enQuaffle = true;
                        q.enPosesion++;
                        pasos = 0;              //Se detiene
                    }
                    else if (tics % 2 == 0)
                    {
                        if (dx != 0)
                        {
                            if (dx < 0)
                            {
                                posx++;
                            }
                            else
                            {
                                posx--;
                            }
                        }
                        else if (dy != 0)
                        {
                            if (dy > 0)
                            {
                                posy--;
                            }
                            else
                            {
                                posy++;
                            }
                        }
                    }
                    else if (tics % 2 == 1)
                    {
                        if (dy != 0)
                        {
                            if (dy > 0)
                            {
                                posy--;
                            }
                            else
                            {
                                posy++;
                            }
                        }
                        else if (dx != 0)
                        {
                            if (dx < 0)
                            {
                                posx++;
                            }
                            else
                            {
                                posx--;
                            }
                        }
                    }
                    pasos--;
                }
                //En el turno de la quaffle, se decide a quien se le entrega
                if (Aturdido > 0)       //Suponiendo que se llama una vez por tic
                {
                    Aturdido--;
                }
            }
            return(enQuaffle);
        }