Esempio n. 1
0
        // Дает копам разрешить дело
        // Повышает ранг и перераспределяет их, если они справились
        // Выводит сообщение о неудаче, если они не справились
        public void SolveCase()
        {
            // Берем случайного с низшем рангом, если участок не пуст
            Cop cop = GetCopWithAtLeast(0);

            if (cop != null)
            {
                // Даем ему или его боссам решить дело
                cop = cop.SolveCase();
                if (cop != null)
                {
                    // Если один из них справился, повышаем ему ранг...
                    if (cop.rank < 11)
                    {
                        cop.rank++;
                    }

                    // считаем дело решенным...
                    solvedCases++;

                    // и перераспределяем всех
                    SortCops(cop);
                    Console.WriteLine("");
                    return;
                }
                ;
            }
            ;
            // Иначе считаем дело нерешенным
            unsolvedCases++;
            Console.WriteLine("Case remains unsolved...\n");
        }
Esempio n. 2
0
 // Дает копу и его боссам решить дело
 public Cop SolveCase()
 {
     // Бросок кубика на решение дела
     if (rnd.Next(18) <= rank)
     {
         // Дело решено, считаем его, сообщаем об этом и возвращаем себя
         solvedCases++;
         Console.WriteLine("{0,-14} ({1}): solved!", name, rank);
         return(this);
     }
     else
     {
         // Дело не решено, считаем его, сообщаем об этом и даем решить его боссу или его боссу и т.д. пока босс есть
         failedCases++;
         Console.WriteLine("{0,-14} ({1}): failed", name, rank);
         return(boss?.SolveCase());
     }
 }