Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            char ch;
            int  i;
            bool pist = true;

            Firearm.InfoHandler handler1 = delegate(string mes) { Console.WriteLine($"{mes}"); };
            Firearm.InfoHandler handler2 = mes => Console.WriteLine($"{mes}");
            Firearm[]           fa       = new Firearm[3];
            fa[0] = new Glock17();
            fa[1] = new Colt();
            fa[2] = new AK74();
            IFirearm def = new Colt();

            Firearm.Score = 0;
            do
            {
                Console.Clear();
                def.Default();
                handler1("Выберите оружие:\n");
                for (int j = 0; j < 3; j++)
                {
                    handler2($"{j + 1}){fa[j].BName}\n");
                }
                string vyb = Console.ReadLine();
                try
                {
                    if (!Int32.TryParse(vyb, out i))
                    {
                        throw new Exception("Похоже, что это не число");
                    }
                    i -= 1;
                    Console.Clear();
                    if (i < 0)
                    {
                        throw new Exception("Вы ввели слишком маленкое число");
                    }
                    if (i > 2)
                    {
                        throw new Exception("Вы ввели слишком большое число");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"{ex.Message}, попробуйте ввести еще раз!(для продолжения нажмите любую клавишу)");
                    Console.ReadKey();
                    continue;
                }
                pist = true;
                do
                {
                    fa[i].Info();
                    Console.WriteLine($"Набранные вами очки: {Firearm.Score}");
                    fa[i].Menu();
                    Console.WriteLine();
                    Console.WriteLine("e - Сменить оружие");
                    Console.WriteLine("p - Выход со стрельбища");
                    Console.WriteLine("q - Сравнить вместимоть магазина c другим оружием");
                    ch = Console.ReadKey().KeyChar;
                    Console.Clear();
                    fa[i].Act += PrintMessage;
                    try
                    {
                        switch (ch)
                        {
                        case 'f':
                            if (fa[i].BName == "АК-74")
                            {
                                fa[i].Zatvor();
                            }
                            else
                            {
                                fa[i].Zaryad();
                            }
                            break;

                        case 'r':
                            fa[i].Remont();
                            break;

                        case 't':
                            fa[i].Act -= PrintMessage;
                            fa[i].Act += handler2;
                            fa[i].Fuse();
                            fa[i].Act -= handler2;
                            break;

                        case 'g':
                            fa[i].Perezaryad();
                            break;

                        case 'h':
                            fa[i].Act -= PrintMessage;
                            fa[i].Act += handler1;
                            fa[i].Pricel();
                            fa[i].Act -= handler1;
                            break;

                        case 'y':
                            fa[i].Shot();
                            break;

                        case 'j':
                            fa[i].Charac();
                            break;

                        case 'k':
                            fa[i].Razbor();
                            break;

                        case 'p':
                            return;

                        case 'e':
                            pist = false;
                            break;

                        case 'q':
                            Array.Sort(fa);
                            for (int j = 0; j < 3; j++)
                            {
                                Console.WriteLine($"{fa[j].BName} - {fa[j].Magazin}");
                            }
                            break;

                        default:
                            Console.WriteLine("Такого действия нет(Нажмите любую клавишу для продолжения)");
                            Console.ReadKey();
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"{ex.Message}");
                    }
                    finally
                    {
                        fa[i].Act -= PrintMessage;
                    }
                } while (pist);
            } while (true);
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            char ch;
            int  i;
            bool pist = true;

            Firearm[] fa = new Firearm[3];
            fa[0] = new Glock17();
            fa[1] = new Colt();
            fa[2] = new AK74();
            IFirearm def = new Colt();

            Firearm.Score = 0;
            do
            {
                Console.Clear();
                def.Default();
                Console.WriteLine("Выберите оружие:\n");
                for (int j = 0; j < 3; j++)
                {
                    Console.WriteLine($"{j + 1}){fa[j].BName}\n");
                }
                i = Convert.ToInt32(Console.ReadLine()) - 1;
                Console.Clear();
                if (i < 0 || i > 2)
                {
                    Console.WriteLine("Что-то не так, попробуйте ввести еще раз!");
                    continue;
                }
                pist = true;
                do
                {
                    fa[i].Info();
                    Console.WriteLine($"Набранные вами очки: {Firearm.Score}");
                    fa[i].Menu();
                    Console.WriteLine();
                    Console.WriteLine("e - Сменить оружие");
                    Console.WriteLine("p - Выход со стрельбища");
                    Console.WriteLine("q - Сравнить вместимоть магазина c другим оружием");
                    ch = Console.ReadKey().KeyChar;
                    Console.Clear();
                    switch (ch)
                    {
                    case 'f':
                        if (fa[i].BName == "АК-74")
                        {
                            fa[i].Zatvor();
                        }
                        else
                        {
                            fa[i].Zaryad();
                        }
                        break;

                    case 'r':
                        fa[i].Remont();
                        break;

                    case 't':
                        fa[i].Fuse();
                        break;

                    case 'g':
                        fa[i].Perezaryad();
                        break;

                    case 'h':
                        fa[i].Pricel();
                        break;

                    case 'y':
                        fa[i].Shot();
                        break;

                    case 'j':
                        fa[i].Charac();
                        break;

                    case 'k':
                        fa[i].Razbor();
                        break;

                    case 'p':
                        return;

                    case 'e':
                        pist = false;
                        break;

                    case 'q':
                        Array.Sort(fa);
                        for (int j = 0; j < 3; j++)
                        {
                            Console.WriteLine($"{fa[j].BName} - {fa[j].Magazin}");
                        }
                        break;

                    default:
                        Console.WriteLine("Такого действия нет(Нажмите любую клавишу для продолжения)");
                        Console.ReadKey();
                        break;
                    }
                } while (pist);
            } while (true);
        }