Exemplo n.º 1
0
 public PlayerObject(Size panel_size, GameObjects NPC) : base(panel_size) //берём у нпс все параметры
 {
     this.center = NPC.GetCenter();
     this.radius = NPC.GetRadius();
     this.color  = NPC.GetColor();
     this.step   = NPC.GetStep();
     key         = new KeyPlayer(ClassGame.GetDlinaKey()); // создали новый пустой ключ для игрока 256 переделать на значения комбобокса!!!!!!!!!!!!!!!!!!
     key.AddBitArray(NPC.GetKey().GetKeyArray());          // ключь нпс переделываем в ключ игрока
 }
Exemplo n.º 2
0
        public bool YouCanSeeMe(GameObjects NPCList)                                                                             //проверка видит конкретный нпс,  кого-то или нет
        {
            double d = Math.Sqrt(Math.Pow(NPCList.GetCenter().X - center.X, 2) + Math.Pow(NPCList.GetCenter().Y - center.Y, 2)); //расчёт расстояние между окружностями(объект и обзор)

            if (d <= (NPCList.GetRadius() + radobz))                                                                             //пересечение объекта и обзора
            {
                //double angle = Math.Atan2(NPCList.center.Y - center.Y, NPCList.center.X - center.X);//попадает ли объект в сектор
                //angle = (angle * 180) / Math.PI;//перевод в градусы
                //Console.WriteLine(angle);
                ///System.Diagnostics.Debug.WriteLine("нпс видит");
                return(true);
            }
            return(false);
        }
Exemplo n.º 3
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);
            }
        }
Exemplo n.º 4
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);
            }
        }
Exemplo n.º 5
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;                         //выбирается новая цель
                         }
                     }
                 }
             }
         }
     }
 }