Esempio n. 1
0
        private bool Estb(GameObjects NPCList_obj)                         //проверка можно ли съесть или нет
        {
            double bolshe = (double)this.radius / NPCList_obj.GetRadius(); //радиус текущего объекта, делится с который видно

            //if (bolshe > 1.15)//есть можно, если на 15% меньше
            ///System.Diagnostics.Debug.WriteLine("Estb");
            ///System.Diagnostics.Debug.WriteLine(Convert.ToString(bolshe));
            if (bolshe > 1.01)//есть можно, если на 1% меньше
            {
                /// System.Diagnostics.Debug.WriteLine("можно есть");
                return(true);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 2
0
        private bool Ubegat(GameObjects NPCList_obj)                       //проверка убегать объекту или нет
        {
            double bolshe = (double)NPCList_obj.GetRadius() / this.radius; //радиус объекта, который видно делится с текущим

            //if (bolshe > 1.15)//есть можно, если на 15% меньше
            ///System.Diagnostics.Debug.WriteLine("ubegat");
            ///System.Diagnostics.Debug.WriteLine(Convert.ToString(bolshe));
            if (bolshe > 1.01)//есть можно, если на 1% меньше
            {
                ///System.Diagnostics.Debug.WriteLine("убегать");
                return(true);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 3
0
 public void Vidno_ne(LinkedList <GameObjects> List1) //проверка видно кого или нет
 {
     WhoEat = new LinkedList <GameObjects>();         //новый список, от кого убегать
     target = null;
     for (int i = 0; i < List1.Count; i++)
     {
         GameObjects NPCList_obj = List1.ElementAt(i);//перебор всех нпс
         if (NPCList_obj == null)
         {
             continue;
         }
         if (NPCList_obj != this)                   //проверка какой это нпс(что-бы не проверять самого себя)
         {
             bool vidno = YouCanSeeMe(NPCList_obj); //нпс проверяет видит ли он другой объект
             if (vidno == true)
             {
                 bool nadoubegat = Ubegat(NPCList_obj);
                 if (nadoubegat == true)          //надо ли убегать?
                 {
                     WhoEat.AddLast(NPCList_obj); //добавляем в лист
                 }
                 bool mojnoestb = Estb(NPCList_obj);
                 if (mojnoestb == true) //можно есть?
                 {
                     if (target == null)
                     {
                         target = NPCList_obj;
                     }
                     else
                     {
                         if (NPCList_obj.GetRadius() > target.GetRadius()) //поиск наилучшей цели  МОЖНО ОДИН ИФ
                         {
                             target = NPCList_obj;                         //выбирается новая цель
                         }
                     }
                 }
             }
         }
     }
 }
Esempio n. 4
0
        //{
        //    int step = 10;
        //    Point MousePosition1 = new Point(MousePosition.X - radius, MousePosition.Y - radius);

        //    double dist = Math.Sqrt(Math.Pow(MousePosition1.X - center.X, 2) + Math.Pow(MousePosition1.Y - center.Y, 2)); //расчёт расстояния

        //    Console.WriteLine(dist);

        //    if (dist <= step) //сдвиг объекта
        //    {
        //        center = MousePosition1;
        //    }
        //    else
        //    {
        //        //сдвиг на шаг к курсору
        //        center.X = (int)(center.X + (MousePosition1.X - center.X) * (step / dist));
        //        center.Y = (int)(center.Y + (MousePosition1.Y - center.Y) * (step / dist));
        //    }
        //}

        protected void KillObj(LinkedList <GameObjects> List1, GameObjects target)                                                        //съедание
        {
            if (target != null)                                                                                                           //проверка, что кто-то выбран для съедания
            {
                if (radius > target.radius)                                                                                               //проерка кто больше
                {
                    double dist = Math.Sqrt(Math.Pow(center.X - target.GetCenter().X, 2) + Math.Pow(center.Y - target.GetCenter().Y, 2)); //момент съедания(центр круга еды в круге охотника)
                    if (dist < radius)                                                                                                    //проверка ^
                    {
                        for (int i = 0; i < List1.Count; i++)                                                                             //удалить кого съели
                        {
                            if (List1.ElementAt(i) == target)
                            {
                                List1.Find(target).Value = null;                // удалить из списка, кого съели
                                key.AddBitArray(target.GetKey().GetKeyArray()); // тот, кто съедает кого-то получает его последовательность
                                IncRad(target);                                 // вызов увеличения
                                break;
                            }
                        }
                    }
                }
            }
        }
Esempio n. 5
0
        //Выбор объекта, которым будем управлять
        public void CreatePlayer(Point MousePosition)
        {
            if (PlayerInList() == false) //проверка не выбран ли уже объект
            {
                //System.Diagnostics.Debug.WriteLine("mouse");
                //System.Diagnostics.Debug.WriteLine(Convert.ToString(MousePosition.X));
                //System.Diagnostics.Debug.WriteLine(Convert.ToString(MousePosition.Y));

                double      mindist       = 10000; //мин расстояние
                GameObjects podhodNPCList = null;
                for (int i = 0; i < np; i++)
                {
                    if (NPCList.ElementAt(i) == null) //проверка если нпс в списке нул
                    {
                        continue;
                    }
                    Point  center = NPCList.ElementAt(i).GetCenter();                                                             //получение координта центра нпс
                    double dist   = Math.Sqrt(Math.Pow(MousePosition.X - center.X, 2) + Math.Pow(MousePosition.Y - center.Y, 2)); //рассчтё расстояния от курсора до объектов
                    if (mindist > dist)                                                                                           //нахождение ближайшего нпс
                    {
                        mindist       = dist;
                        podhodNPCList = NPCList.ElementAt(i);
                    }

                    //System.Diagnostics.Debug.WriteLine("center");
                    //System.Diagnostics.Debug.WriteLine(Convert.ToString(center.X));
                    //System.Diagnostics.Debug.WriteLine(Convert.ToString(center.Y));
                    //System.Diagnostics.Debug.WriteLine("dist");
                    //System.Diagnostics.Debug.WriteLine(Convert.ToString(dist));
                }

                Player = new PlayerObject(p.Size, podhodNPCList); //создание игрока
                NPCList.Remove(podhodNPCList);                    //удаление выбранного нпс
                NPCList.AddFirst(Player);                         //добавление игрока (подмена нпс на игрока)
            }
        }
Esempio n. 6
0
 public override void IncRad(GameObjects target) // увеличение радиуса обзора
 {
     base.IncRad(target);
     radobz = 5 * radius;
 }