コード例 #1
0
ファイル: StoryTeller.cs プロジェクト: aasopun/Swan_Geese_5.0
        public void TellStrory(Parent parent1, Parent parent2, Child child1, Child brother, Goose goose, Oven oven,
                               AppleTree appleTree, MilkRiver milkRiver, GrandParent <Human> grandParent, Mouse mouse)
        {
            Order order = Answers;

            order.Invoke();


            Random rnd = new Random();
            Zmey <Goose, Human> zmey_gorinich = new Zmey <Goose, Human>(3, 213321);

            parent1.Keep_live();
            parent2.Ask(child1);
            parent1.Go_out_from_home();

            Console.WriteLine("  Остаться и поиграть с братиком/Пойти гулять? Введите 1 или 2...");

            string number1 = Console.ReadLine();

            if (number1 == "1")
            {
                Order order1 = child1.Stay_at_home;
                order1();
            }
            else
            {
                Order order2 = child1.Forget;
                order2 += child1.Go_out_from_home;
                order2 += goose.Steal_child;
                order2 += child1.Cry;
                order2 += child1.Search;
                order2 += child1.Run;
                order2 += oven.Keep_staying;
                order2 += child1.Where_brother;
                order2 += oven.Eat_my_cake;
                order2();

                Console.WriteLine("  Скушать пирожок/Пойти дальше? Введите 1 или 2...");

                string number2 = Console.ReadLine();
                if (number2 == "1")
                {
                    try
                    {
                        oven.Drop_cake(5, 20);
                        Display_delegate("Печь дала 5 пирожков.");
                        order2 -= child1.Forget;
                        order2 -= child1.Go_out_from_home;
                        order2 -= goose.Steal_child;
                        order2 -= child1.Cry;
                        order2 -= child1.Search;
                        order2 -= child1.Run;
                        order2 -= oven.Keep_staying;
                        order2 -= child1.Where_brother;
                        order2 -= oven.Eat_my_cake;
                        order2 += child1.Eat_cake;
                        order2();
                    }
                    catch (NullReferenceException ex)
                    {
                        Console.WriteLine(ex.Message + "Девочка заблудилась в лесу...");
                    }
                    finally
                    {
                        child1.Come_to_hut();
                    }

                    Order orderfact = delegate
                    {
                        Console.WriteLine("Interested fact: granny Yaga is not just granny =)");
                    };
                    orderfact();    // анонимный метод


                    child1.Do("-Девочка зашла в дом, говорит");
                    child1.Say("-Здравствуй бабушка!");
                    grandParent.Say("-Здравствуй, девица! Зачем на глаза явилась?");
                    child1.Say("-Я по мхам, по болотам ходила, платье измочила, пришла погреться.");
                    grandParent.Say("Садись покуда кудель прясть.");
                    grandParent.Give_spin(grandParent);
                    child1.Spin();
                    mouse.Run();
                    mouse.Ask_to_eat();
                    child1.Give_to_eat();
                    mouse.Ask_to_run();

                    //лямбда
                    Order order3 = () => Console.WriteLine("  Забрать братика и сбежать/Не поверить мышке и ждать бабулю? Введите 1 или 2...");
                    order3();

                    int c = rnd.Next(1, 2);
                    if (c == 1)
                    {
                        child1.Say("-Спасибо тебе большое, мышка!");
                        child1.Go_out_from_hut();
                        grandParent.Ask_girl(grandParent);
                        mouse.Lie();
                        grandParent.Come_to_hut(grandParent);
                        child1.Ask_oven(oven);
                        oven.Save_children();
                        goose.Not_see();
                        child1.Come_to_home();
                        parent1.Come_to_home();
                    }
                    else
                    {
                        child1.Stay_at_hut();
                    }
                }
                else
                {
                    child1.Not_eat_cake();
                    oven.Go_out_child();
                    appleTree.Keep_staying();
                    child1.Where_brother();
                    appleTree.Eat_my_apple();

                    Console.WriteLine("  Не хочу/С радостью! Введите 1 или 2...");

                    int h = rnd.Next(1, 2);
                    if (h == 2)
                    {
                        child1.Eat_apple();
                        child1.Come_to_hut();
                        child1.Do("-Девочка зашла в дом, говорит");
                        child1.Say("-Здравствуй бабушка!");
                        grandParent.Say("-Здравствуй, девица! Зачем на глаза явилась?");
                        child1.Say("-Я по мхам, по болотам ходила, платье измочила, пришла погреться.");
                        grandParent.Say("Садись покуда кудель прясть.");
                        grandParent.Give_spin(grandParent);
                        child1.Spin();
                        mouse.Run();
                        mouse.Ask_to_eat();
                        child1.Give_to_eat();
                        mouse.Ask_to_run();
                        Console.WriteLine("  Забрать братика и сбежать/Не поверить мышке и ждать бабулю? Введите 1 или 2...");
                        string c = Console.ReadLine();
                        if (c == "1")
                        {
                            child1.Say("-Спасибо тебе большое, мышка!");
                            child1.Go_out_from_hut();
                            grandParent.Ask_girl(grandParent);
                            mouse.Lie();
                            grandParent.Come_to_hut(grandParent);
                            child1.Ask_apple_tree(appleTree);
                            appleTree.Save_children();
                            goose.Not_see();
                            goose.Fly();
                            oven.Keep_staying();
                            child1.Ask_oven(oven);
                            oven.Eat_my_cake();

                            Console.WriteLine("  Скушать пирожок/Пойти дальше? Введите 1 или 2...");

                            string number3 = Console.ReadLine();
                            if (number3 == "1")
                            {
                                child1.Eat_cake();
                                oven.Save_children();
                                goose.Not_see();
                                appleTree.Keep_staying();
                                child1.Ask_apple_tree(appleTree);
                                appleTree.Save_children();
                                goose.Not_see();
                                child1.Come_to_home();
                                parent1.Come_to_home();
                            }
                            else
                            {
                                child1.Not_eat();
                            }
                        }
                        else
                        {
                            child1.Stay_at_hut();
                        }
                    }
                    else
                    {
                        child1.Not_eat_apple();
                        appleTree.Go_out_child();
                        milkRiver.Keep_staying();
                        child1.Where_brother();
                        milkRiver.Drink_my_kissel();

                        Console.WriteLine("  Попить киселя/Пойти дальше? Введите 1 или 2...");
                        string number4 = Console.ReadLine();
                        if (number4 == "1")
                        {
                            child1.Drink_kissel();
                            child1.Come_to_hut();
                            child1.Do("-Девочка зашла в дом, говорит");
                            child1.Say("-Здравствуй бабушка!");
                            grandParent.Say("-Здравствуй, девица! Зачем на глаза явилась?");
                            child1.Say("-Я по мхам, по болотам ходила, платье измочила, пришла погреться.");
                            grandParent.Say("Садись покуда кудель прясть.");
                            grandParent.Give_spin(grandParent);
                            child1.Spin();
                            mouse.Run();
                            mouse.Ask_to_eat();
                            child1.Give_to_eat();
                            mouse.Ask_to_run();

                            Console.WriteLine("  Забрать братика и сбежать/Не поверить мышке и ждать бабулю? Введите 1 или 2...");

                            int c = rnd.Next(1, 2);
                            if (c == 1)
                            {
                                child1.Say("-Спасибо тебе большое, мышка!");
                                child1.Go_out_from_hut();
                                grandParent.Ask_girl(grandParent);
                                mouse.Lie();
                                grandParent.Come_to_hut(grandParent);
                                child1.Ask_oven(oven);
                                oven.Eat_my_cake();

                                Console.WriteLine("  Скушать пирожок/Пойти дальше? Введите 1 или 2...");

                                string number5 = Console.ReadLine();
                                if (number5 == "1")
                                {
                                    try
                                    {
                                        child1.Eat_cake();;
                                    }
                                    catch (NullReferenceException ex)
                                    {
                                        Console.WriteLine(ex.Message + "Налетели гуси-лебеди...");
                                        child1.Not_eat();
                                    }
                                    finally
                                    {
                                        oven.Save_children();
                                    }
                                    goose.Not_see();
                                    appleTree.Keep_staying();
                                    child1.Ask_apple_tree(appleTree);
                                    appleTree.Eat_my_apple();

                                    Console.WriteLine("  Скушать яблочко/Пойти дальше? Введите 1 или 2...");

                                    string number6 = Console.ReadLine();
                                    if (number6 == "1")
                                    {
                                        appleTree.Drop_apple(3, 32);
                                        child1.Eat_apple();
                                        appleTree.Save_children();
                                        goose.Not_see();
                                        milkRiver.Keep_staying();
                                        child1.Ask_river(milkRiver);
                                        milkRiver.Save_children();
                                        goose.Not_see();
                                        child1.Come_to_home();
                                        parent1.Come_to_home();
                                    }
                                    else
                                    {
                                        zmey_gorinich.Fire(goose);
                                        zmey_gorinich.Description("Была умной", "Была глупой", "Самой младшей");
                                        zmey_gorinich.Speak_to_human(child1);
                                        child1.Come_to_home();
                                        parent1.Come_to_home();
                                    }
                                }
                                else
                                {
                                    zmey_gorinich.Fire(goose);
                                    zmey_gorinich.Description("Была умной", "Была глупой", "Самой младшей");
                                    zmey_gorinich.Speak_to_human(child1);
                                    child1.Come_to_home();
                                    parent1.Come_to_home();
                                }
                            }
                            else
                            {
                                child1.Stay_at_hut();
                            }
                        }
                        else
                        {
                            child1.Not_drink_kissel();
                            milkRiver.Go_out_child();
                            child1.Search_in_fields();
                            child1.Come_to_hut();
                            child1.Do("-Девочка зашла в дом, говорит");
                            child1.Say("-Здравствуй бабушка!");
                            grandParent.Say("-Здравствуй, девица! Зачем на глаза явилась?");
                            child1.Say("-Я по мхам, по болотам ходила, платье измочила, пришла погреться.");
                            grandParent.Say("Садись покуда кудель прясть.");
                            grandParent.Give_spin(grandParent);
                            child1.Spin();
                            mouse.Run();
                            mouse.Ask_to_eat();
                            child1.Give_to_eat();
                            mouse.Ask_to_run();

                            Console.WriteLine("  Забрать братика и сбежать/Не поверить мышке и ждать бабулю? Введите 1 или 2...");

                            string c = Console.ReadLine();
                            if (c == "1")
                            {
                                try
                                {
                                    child1.Say("-Спасибо тебе большое, мышка!");
                                }
                                catch when(c == "2")
                                {
                                    child1.Stay_at_hut();
                                }
                                finally
                                {
                                    child1.Go_out_from_hut();
                                }
                                grandParent.Ask_girl(grandParent);
                                mouse.Lie();
                                grandParent.Come_to_hut(grandParent);
                                oven.Keep_staying();
                                child1.Ask_oven(oven);
                                oven.Eat_my_cake();

                                Console.WriteLine("  Скушать пирожок/Пойти дальше?? Введите 1 или 2...");

                                int number5 = rnd.Next(1, 2);
                                if (number5 == 1)
                                {
                                    child1.Eat_cake();
                                    oven.Save_children();
                                    goose.Not_see();
                                    appleTree.Keep_staying();
                                    child1.Ask_apple_tree(appleTree);
                                    appleTree.Eat_my_apple();

                                    Console.WriteLine("  Скушать яблочко/Пойти дальше? Введите 1 или 2...");

                                    string number6 = Console.ReadLine();
                                    if (number6 == "1")
                                    {
                                        try
                                        {
                                            child1.Eat_apple();
                                        }
                                        catch when(number6 == "2")
                                        {
                                            child1.Not_eat();
                                        }
                                        finally
                                        {
                                            appleTree.Save_children();
                                        }
                                        goose.Not_see();
                                        milkRiver.Keep_staying();
                                        child1.Ask_river(milkRiver);
                                        milkRiver.Flowing("речечка");
                                        milkRiver.Drink_my_kissel();

                                        Console.WriteLine("  Попить киселю/Пойти дальше? Введите 1 или 2...");

                                        string number7 = Console.ReadLine();
                                        if (number7 == "1")
                                        {
                                            child1.Drink_kissel();
                                            milkRiver.Save_children();
                                            goose.Not_see();
                                            child1.Come_to_home();
                                            parent1.Come_to_home();
                                        }
                                        else
                                        {
                                            child1.Not_eat();
                                        }
                                    }
                                }
                                else
                                {
                                    child1.Not_eat();
                                }
                            }
                            else
                            {
                                child1.Stay_at_hut();
                            }
                        }
                    }
                }
            }
        }