예제 #1
0
파일: Distributor.cs 프로젝트: arhyp/Diplom
        public void distributeEnrollees()
        {
            for (int i = 0; i < variants; i++)
            {
                List <Enrollee>[] studentsOrders = new List <Enrollee> [specialities.Length];
                for (int j = 0; j < enrollees.Length; j++)
                {
                    if (flags[j] == true)
                    {
                        continue;
                    }
                    Enrollee en = enrollees[j];

                    Request[] req = en.Request.ToArray();
                    Array.Sort(req, (x, y) => x.Priority.CompareTo(y.Priority));
                    Speciality sp          = req[i].IdSpecialityNavigation;
                    int        indexOfUniv = Array.IndexOf(specialities, sp);
                    if (studentsOrders[indexOfUniv] == null)
                    {
                        studentsOrders[indexOfUniv] = new List <Enrollee>();
                    }
                    studentsOrders[indexOfUniv].Add(en);
                }
                for (int k = 0; k < studentsOrders.Length; k++)
                {
                    Speciality      curr   = specialities[k];
                    List <Enrollee> orders = studentsOrders[k];
                    if (orders == null)
                    {
                        continue;
                    }
                    orders.Sort((y, x) => x.Zno.CompareTo(y.Zno));
                    foreach (Enrollee stud in orders.ToArray())
                    {
                        Rules rule        = curr.Rules.First();
                        int   palces      = rule.Count;
                        bool  enoughScore = (rule.Score < stud.Zno) ? true : false;

                        if (dict.ContainsKey(curr) == false)
                        {
                            dict[curr] = new List <Enrollee>();
                        }


                        if (enoughScore == true && dict[curr].Count < rule.Count)
                        {
                            dict[curr].Add(stud);
                            int indexOfStud = Array.IndexOf(enrollees, stud);
                            flags[indexOfStud] = true;
                        }
                    }
                }
            }
            int cc = 0;

            for (int r = 0; r < flags.Length; r++)
            {
                if (flags[r] == false)
                {
                    cc++;
                }
            }
            Console.WriteLine($" free student: {cc}");
            //распределить остольных
            List <Enrollee> freeEnrollers = new List <Enrollee>();

            for (int p = 0; p < flags.Length; p++)
            {
                if (flags[p] == false)
                {
                    freeEnrollers.Add(enrollees[p]);
                }
            }
            freeEnrollers.Sort((x, y) => x.Zno.CompareTo(y.Zno));

            foreach (Enrollee enr in freeEnrollers.ToArray())
            {
                Request[] req = enr.Request.ToArray();
                Array.Sort(req, (x, y) => x.Priority.CompareTo(y.Priority));
                foreach (Request _req in req)
                {
                    Speciality spec = _req.IdSpecialityNavigation;

                    Rules rule        = spec.Rules.First();
                    int   palces      = rule.Count;
                    bool  enoughScore = (rule.Score < enr.Zno) ? true : false;

                    if (enoughScore == true && dict[spec].Count < rule.Count)
                    {
                        dict[spec].Add(enr);
                        int indexOfStud = Array.IndexOf(enrollees, enr);
                        flags[indexOfStud] = true;
                    }
                }
            }
            //end


            foreach (KeyValuePair <Speciality, List <Enrollee> > entry in dict)
            {
                Console.WriteLine($"University: {entry.Key.IdDepartmentNavigation.IdUniversityNavigation.Name}\n\tSpeciality: {entry.Key.Name}");
                Console.WriteLine($"Rules: count = {entry.Key.Rules.First().Count}, students = {entry.Value.Count}");
                foreach (Enrollee stud in entry.Value.ToArray())
                {
                    Console.WriteLine($"Name: {stud.Name}, ZNO: {stud.Zno}");
                }
                Console.WriteLine();
            }
            Console.WriteLine("Free studets: ");
            int allFreeStud = 0;

            for (int p = 0; p < flags.Length; p++)
            {
                if (flags[p] == false)
                {
                    allFreeStud++;
                    Console.WriteLine($"Name: {enrollees[p].Name}, ZNO: {enrollees[p].Zno}");
                }
            }
            Console.WriteLine($"Free studets count: {allFreeStud} ");
        }
예제 #2
0
        static void PlayOptionTwo(Booger player)
        {
            Console.WriteLine("Would you like to battle against:\n1) 4 Queens\n2) 8 Queens\n3) 16 Queens\n");
            byte userSelection = Convert.ToByte(Console.ReadLine());
            byte heatherNumber = 2;

            switch (userSelection)
            {
            case 1:
                heatherNumber = 4;
                break;

            case 2:
                heatherNumber = 8;
                break;

            case 3:
                heatherNumber = 16;
                break;
            }
            Heather[] heathers = new Heather[heatherNumber];
            Random    rand     = new Random();

            for (int i = 0; i < heatherNumber - 1; i++)
            {
                Random     rand2          = new Random();
                string     heatherName    = DragNames.GetHeatherDragName(false, (byte)rand.Next(0, 45));
                Speciality heatherSpecial = new Speciality(Heather.GenerateHeatherSpecial(heatherName));
                heathers[i] = (new Heather(heatherName, rand2.Next(0, 21), rand2.Next(5, 21),
                                           rand2.Next(60, 201), rand2.Next(21, 40), heatherSpecial, rand2.Next(10, 31)));
            }
            Speciality ruSpecial = new Speciality(Heather.GenerateHeatherSpecial("RuPaul"));

            heathers[heatherNumber - 1] = (new Heather("RuPaul", rand.Next(0, 21), rand.Next(5, 21),
                                                       rand.Next(60, 401), rand.Next(21, 40), ruSpecial, rand.Next(10, 31)));
            bool exit           = false;
            int  heatherCounter = 0;

            do
            {
                Song singleSong = new Song(Song.SelectASong());
                if (heatherCounter != heatherNumber - 1)
                {
                    Console.WriteLine($"You are up against {heathers[heatherCounter].Name}");
                    Console.WriteLine($"\nRuPaul: {player.Name}, {heathers[heatherCounter].Name}...  I'm sorry my dears but you are both up for elimination"); Thread.Sleep(4000);
                    Console.WriteLine($"\tEach of you has been asked to prepare a lip sync to \"{singleSong.Name}\" by {singleSong.Artist}"); Thread.Sleep(4000);
                    Console.WriteLine("\tTwo queens stand before me, ladies this is your last chance to impress me and save yourself from elimination."); Thread.Sleep(4000);
                }
                else
                {
                    Console.WriteLine("RuPaul: That is it, you are coming for my crown and I can't have it...");
                    Console.Write("You will now battle against the true Queen... Me! Now truly....");
                }
                Console.Write("\tThe time has come for you to lipsync");
                for (int j = 0; j < 3; j++)
                {
                    Console.Write('.');
                    Thread.Sleep(900);
                }
                Console.Write("FOR"); Thread.Sleep(1000);
                Console.Write(" YOUR"); Thread.Sleep(1000);
                Console.WriteLine(" LIFE!"); Thread.Sleep(1000);
                //Lightning.LightningFlashes();
                if (heatherCounter != heatherNumber - 1)
                {
                    Console.Write("RuPaul: Good Luck"); Thread.Sleep(1000);
                    Console.WriteLine(" and don't *&#! it up!"); Thread.Sleep(2000);
                }
                else
                {
                    Console.WriteLine("RuPaul: Good Luck...."); Thread.Sleep(1000);
                    Console.WriteLine("RuPaul Laughs"); Thread.Sleep(2000);
                }
                LipSync.RandomRules(player, heathers[heatherCounter], singleSong);
                Song.PlaySong(singleSong);
                bool exit2 = false;
                do
                {
                    Console.WriteLine("\nPlease Choose and action:\nL) Lipsync for Your Life\nP) Player Info\nR) Rules\nO) Opponent Info\nX) Exit");
                    ConsoleKey userChoice = Console.ReadKey(true).Key;
                    Console.Clear();
                    switch (userChoice)
                    {
                    case ConsoleKey.L:
                        LipSync.ForYourLife(player, heathers[heatherCounter]);
                        if (heathers[heatherCounter].Nerve <= 0)
                        {
                            Console.WriteLine("\n{0} You're a Winner Baby", player.Name);
                            Console.WriteLine("\n{0} Now Sashay Away....\n", heathers[heatherCounter].Name);
                            LipSync.Loot(player, heathers[heatherCounter], rand);
                            exit2 = true;
                            heatherCounter++;
                            Console.WriteLine("You've defeated {0} Queen{1}", heatherCounter, heatherCounter == 0 ? "" : "s");
                        }
                        else
                        {
                            LipSync.ForYourLife(heathers[heatherCounter], player);
                        }
                        break;

                    case ConsoleKey.P:
                        Console.WriteLine("Player Info");
                        Console.WriteLine(player);
                        break;

                    case ConsoleKey.O:
                        Console.WriteLine("Opponent Info");
                        Console.WriteLine(heathers[heatherCounter]);
                        break;

                    case ConsoleKey.R:
                        DisplayRules();
                        break;

                    case ConsoleKey.X:
                    case ConsoleKey.E:
                        player.Nerve = 0;
                        exit2        = true;
                        exit         = true;
                        break;

                    default:
                        Console.WriteLine("Roxxy Andrews Made it Clear... That Was Not a Valid Selection...");
                        break;
                    }

                    if (player.Nerve <= 0)
                    {
                        Console.WriteLine("\n{0} You're a Winner Baby", heathers[heatherCounter].Name);
                        Console.WriteLine("{0} Now Sashay Away....\n", player.Name);
                        Console.WriteLine("You defeated {0} Queen{1}", heatherCounter, heatherCounter == 0 ? "" : "s");
                        exit2 = true;
                        exit  = true;
                    }
                } while (!exit2);
            } while (!exit);
        }