Пример #1
0
        public bool AreHeroesAlive(List <Персонаж> Персонажи)
        {
            int КоличествоУмершихГероев = 0;

            for (int i = 0; i < Персонажи.Count; i++)
            {
                Персонаж персонаж = Персонажи[i];
                if (персонаж.Состояние[4] == true)
                {
                    КоличествоУмершихГероев++;
                }
            }

            if (КоличествоУмершихГероев == 0)
            {
                return(true);
            }
            else if ((КоличествоУмершихГероев == 1 || КоличествоУмершихГероев == 2) && Персонажи.Count != КоличествоУмершихГероев)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #2
0
 private void Button_Accept_Click(object sender, RoutedEventArgs e)
 {
     if (Hero_DoHaveMagic.IsChecked == true)
     {
         Новый_персонаж_с_магией = new Персонаж_с_магией(RecievedID, Имя, Пол, Возраст, аса, МножительСилыРун);
     }
     else
     {
         Новый_персонаж = new Персонаж(RecievedID, Имя, Пол, Возраст, аса, МножительСилыРун);
     }
     DialogResult = true;
     Close();
 }
Пример #3
0
 public Attack(List <Враги> СписокНаследованныхВрагов, Персонаж НаследованныйАтакующийПерсонаж)
 {
     InitializeComponent();
     СписокТекущихВрагов = СписокНаследованныхВрагов;
     foreach (Враги Враг in СписокТекущихВрагов)
     {
         ComboBox_EnemyList.Items.Add(Враг.ИмяВрага);
     }
     ComboBox_EnemyList.SelectedIndex = 0;
     SelectedEnemy           = 0;
     Button_Attack.IsEnabled = true;
     АтакующийПерсонаж       = НаследованныйАтакующийПерсонаж;
     ЗначениеАтаки           = АтакующийПерсонаж.ПолучитьЗначениеАтаки();
 }
Пример #4
0
        private void MainWindow_Button_AddHero_Click(object sender, RoutedEventArgs e)
        {
            AddHeroWindow = new AddHero(Персонажи.Count, МножительСилыРун);
            AddHeroWindow.ShowDialog();
            bool?dialogResult = AddHeroWindow.DialogResult;
            bool flag         = true;

            if (dialogResult.GetValueOrDefault() == flag & dialogResult.HasValue)
            {
                Персонаж ВозможныйПерсонаж = AddHeroWindow.Получить_Персонажа();
                if (ВозможныйПерсонаж != null)
                {
                    Персонажи.Add(AddHeroWindow.Получить_Персонажа());
                    Обладает_магией.Add(false);
                    bool пол = AddHeroWindow.Пол;
                    if (пол)
                    {
                        ConsoleWriteLine($"Появился новый герой! Он {((Персонажи[Персонажи.Count - 1] as Персонаж) as Персонаж).Раса} в возрасте " +
                                         $"{Персонаж.Лет_Лета_Год((Персонажи[Персонажи.Count - 1] as Персонаж).Возраст)} " +
                                         $"и зовут его {(Персонажи[Персонажи.Count - 1] as Персонаж).Имя}\n");
                    }
                    else
                    {
                        ConsoleWriteLine($"Появилась новая героиня! Она {(Персонажи[Персонажи.Count - 1] as Персонаж).Раса} в возрасте " +
                                         $"{Персонаж.Лет_Лета_Год((Персонажи[Персонажи.Count - 1] as Персонаж).Возраст)} " +
                                         $"и зовут её {(Персонажи[Персонажи.Count - 1] as Персонаж).Имя}\n");
                    }
                }
                else //Персонажи с магией
                {
                    Персонажи.Add(AddHeroWindow.Получить_Персонажа_с_магией());
                    Обладает_магией.Add(true);
                    bool пол2 = AddHeroWindow.Пол;
                    if (пол2)
                    {
                        ConsoleWriteLine($"Появился новый герой! Он {(Персонажи[Персонажи.Count - 1] as Персонаж_с_магией).Раса} с познаниями в магии и в возрасте " +
                                         $"{Персонаж.Лет_Лета_Год((Персонажи[Персонажи.Count - 1] as Персонаж_с_магией).Возраст)}, " +
                                         $"а зовут его {(Персонажи[Персонажи.Count - 1] as Персонаж_с_магией).Имя}\n");
                    }
                    else
                    {
                        ConsoleWriteLine($"Появилась новая героиня! Она {(Персонажи[Персонажи.Count - 1] as Персонаж_с_магией).Раса} с познаниями в магии и в возрасте " +
                                         $"{Персонаж.Лет_Лета_Год((Персонажи[Персонажи.Count - 1] as Персонаж_с_магией).Возраст)}, " +
                                         $"а зовут её {(Персонажи[Персонажи.Count - 1] as Персонаж_с_магией).Имя}\n");
                    }
                }
                MainWindow_Button_ShowInfo.IsEnabled = true;
                Button_Save.IsEnabled      = true;
                Button_Inventory.IsEnabled = true;
                MainWindow_Button_GoForAdventure.IsEnabled = true;
                ТекущийПерсонаж = Персонажи.Count - 1;
            }
            if (Персонажи.Count == 1 || Персонажи.Count == 2)
            {
                MainWindow_Button_SwitchHero.IsEnabled = true;
            }
            if (Персонажи.Count == 3)
            {
                MainWindow_Button_SwitchHero.IsEnabled = true;
                MainWindow_Button_AddHero.IsEnabled    = false;
            }
        }
Пример #5
0
        private void Button_Save_Click(object sender, RoutedEventArgs e)
        {
            //Сохранение информации о персонажах
            try
            {
                DataSet   ds = new DataSet();
                DataTable dt = new DataTable
                {
                    TableName = "Персонажи"
                };
                dt.Columns.Add("ID");
                dt.Columns.Add("Имя");
                dt.Columns.Add("Раса");
                dt.Columns.Add("Возраст");
                dt.Columns.Add("Пол");
                dt.Columns.Add("Обладает_магией");
                dt.Columns.Add("Ослаблен");
                dt.Columns.Add("Болен");
                dt.Columns.Add("Отравлен");
                dt.Columns.Add("Парализован");
                dt.Columns.Add("Мёртв");
                dt.Columns.Add("Может_говорить");
                dt.Columns.Add("Может_двигаться");
                dt.Columns.Add("Максимальное_здоровье");
                dt.Columns.Add("Очки_здоровья");
                dt.Columns.Add("Очки_опыта");
                dt.Columns.Add("Максимальная_мана");
                dt.Columns.Add("Очки_маны");
                ds.Tables.Add(dt);

                for (int i = 0; i < Персонажи.Count; i++)
                {
                    if (Обладает_магией[i] == false)
                    {
                        Персонаж персонаж = Персонажи[i] as Персонаж;
                        DataRow  строка   = ds.Tables["Персонажи"].NewRow();
                        строка["ID"]                    = персонаж.ID;
                        строка["Имя"]                   = персонаж.Имя;
                        строка["Раса"]                  = персонаж.аса;
                        строка["Возраст"]               = персонаж.Возраст;
                        строка["Пол"]                   = персонаж.Пол;
                        строка["Обладает_магией"]       = "False";
                        строка["Ослаблен"]              = персонаж.Состояние[0];
                        строка["Болен"]                 = персонаж.Состояние[1];
                        строка["Отравлен"]              = персонаж.Состояние[2];
                        строка["Парализован"]           = персонаж.Состояние[3];
                        строка["Мёртв"]                 = персонаж.Состояние[4];
                        строка["Может_говорить"]        = персонаж.Может_говорить;
                        строка["Может_двигаться"]       = персонаж.Может_двигаться;
                        строка["Максимальное_здоровье"] = персонаж.Максимальное_здоровье;
                        строка["Очки_здоровья"]         = персонаж.Очки_Здоровья;
                        строка["Очки_опыта"]            = персонаж.Очки_Опыта;
                        ds.Tables["Персонажи"].Rows.Add(строка);
                    }
                    else
                    {
                        Персонаж_с_магией персонаж = Персонажи[i] as Персонаж_с_магией;
                        DataRow           строка   = ds.Tables["Персонажи"].NewRow();
                        строка["ID"]                    = персонаж.ID;
                        строка["Имя"]                   = персонаж.Имя;
                        строка["Раса"]                  = персонаж.аса;
                        строка["Возраст"]               = персонаж.Возраст;
                        строка["Пол"]                   = персонаж.Пол;
                        строка["Обладает_магией"]       = "True";
                        строка["Ослаблен"]              = персонаж.Состояние[0];
                        строка["Болен"]                 = персонаж.Состояние[1];
                        строка["Отравлен"]              = персонаж.Состояние[2];
                        строка["Парализован"]           = персонаж.Состояние[3];
                        строка["Мёртв"]                 = персонаж.Состояние[4];
                        строка["Может_говорить"]        = персонаж.Может_говорить;
                        строка["Может_двигаться"]       = персонаж.Может_двигаться;
                        строка["Максимальное_здоровье"] = персонаж.Максимальное_здоровье;
                        строка["Очки_здоровья"]         = персонаж.Очки_Здоровья;
                        строка["Очки_опыта"]            = персонаж.Очки_Опыта;
                        строка["Максимальная_мана"]     = персонаж.Максимальная_мана;
                        строка["Очки_маны"]             = персонаж.Очки_Маны;
                        ds.Tables["Персонажи"].Rows.Add(строка);
                    }
                }
                //сохранение информации о тексте в консоли
                dt = new DataTable
                {
                    TableName = "Консоль"
                };
                dt.Columns.Add("Консоль_Текст");
                ds.Tables.Add(dt);
                DataRow СтрокаКонсоли = ds.Tables["Консоль"].NewRow();
                СтрокаКонсоли["Консоль_Текст"] = Console.Text;
                ds.Tables["Консоль"].Rows.Add(СтрокаКонсоли);

                //сохранение информации о предметах в инвентаре
                dt = new DataTable
                {
                    TableName = "Инвентарь"
                };
                dt.Columns.Add("Название");
                dt.Columns.Add("Числовое_значение"); //кол-во предметов либо значение восстановления (HP/MP)
                ds.Tables.Add(dt);
                foreach (Предметы.Зелье Предмет in ПереченьПредметов)
                {
                    DataRow Строка = ds.Tables["Инвентарь"].NewRow();
                    Строка["Название"] = Предмет.Название;

                    if (Предмет is Предметы.Зелье_Лечения)
                    {
                        if (Предмет is Предметы.Малое_Зелье_Лечения)
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Малое_Зелье_Лечения).Количество_Восполняемого_Здоровья;
                        }
                        else if (Предмет is Предметы.Среднее_Зелье_Лечения)
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Среднее_Зелье_Лечения).Количество_Восполняемого_Здоровья;
                        }
                        else
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Большое_Зелье_Лечения).Количество_Восполняемого_Здоровья;
                        }
                    }
                    else
                    {
                        if (Предмет is Предметы.Бутылек_Маны)
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Бутылек_Маны).Количество_Восполняемой_Маны;
                        }
                        else if (Предмет is Предметы.Фласка_маны)
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Фласка_маны).Количество_Восполняемой_Маны;
                        }
                        else
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Банка_маны).Количество_Восполняемой_Маны;
                        }
                    }

                    ds.Tables["Инвентарь"].Rows.Add(Строка);
                }

                ds.WriteXml("SaveFile.svfl");
                MessageBox.Show($"Игра сохранена", "Уведомление", MessageBoxButton.OK, MessageBoxImage.Asterisk);
            }
            catch (Exception ex)
            {
                StreamWriter streamWriter = new StreamWriter("ErrorLog.log");
                streamWriter.Write(ex);
                MessageBox.Show($"Произошла ошибка при сохранении. В директории с игрой был создан лог файл для отладки", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                streamWriter.Close();
            }
        }
Пример #6
0
 public Воскрешение(Персонаж_с_магией Источник, Персонаж Цель, double Множитель_Стоимости)
 {
     Источник.ИзменениеСостоянияМаны("расходование", (uint)(Стоимость * Множитель_Стоимости));
     Цель.ИзменениеСостоянияЗдоровья("лечение", 50);
 }
Пример #7
0
        public void Воспроизведение_Шагов()
        {
            if (Choices.Count == 1 && Choices[0] == 1)
            {
                if (MainWindow.Персонажи.Count == 0 && MainWindow.Персонажи[0].Пол == true)
                {
                    MainWindow.ConsoleWriteLine($"- Герой, наше королество в опасности, на землях Мелромарка лежит тяжелая ноша, сражение с волнами монстров. " +
                                                $"Мы пытались отбить волны своими силами, но треть населения нашего королевства была жестоко убита. Пожалуйста, герой, спаси нас!");
                    MainWindow.Change_Button_Choice_1("Как я \nдолжен это \nсделать?");
                }
                else if (MainWindow.Персонажи.Count == 0 && MainWindow.Персонажи[0].Пол == false)
                {
                    MainWindow.ConsoleWriteLine($"- Героиня, наше королество в опасности, на землях Мелромарка лежит тяжелая ноша, сражение с волнами монстров. " +
                                                $"Мы пытались отбить волны своими силами, но треть населения нашего королевства была жестоко убита. Пожалуйста, героиня, спаси нас!");
                    MainWindow.Change_Button_Choice_1("Как я \nдолжна это \nсделать?");
                }
                else if (MainWindow.Персонажи.Count >= 1)
                {
                    MainWindow.ConsoleWriteLine($"- Герои, наше королество в опасности, на землях Мелромарка лежит тяжелая ноша, сражение с волнами монстров. " +
                                                $"Мы пытались отбить волны своими силами, но треть населения нашего королевства была жестоко убита. Пожалуйста, герои, спасите нас!");
                    MainWindow.Change_Button_Choice_1("Как мы \nдолжны это \nсделать?");
                }

                MainWindow.Block_Button_Choice_2();
                MainWindow.Block_Button_Choice_3();
            }
            if (Choices.Count == 1 && Choices[0] == 2)
            {
                if (MainWindow.Персонажи.Count == 0 && MainWindow.Персонажи[0].Пол == true)
                {
                    MainWindow.ConsoleWriteLine($"- Герой, наше королество в опасности, на землях Мелромарка лежит тяжелая ноша, сражение с волнами монстров. " +
                                                $"Мы пытались отбить волны своими силами, но треть населения нашего королевства была жестоко убита. Пожалуйста, герой, спаси нас!");
                    MainWindow.Change_Button_Choice_1("Как я \nдолжен это \nсделать?");
                }
                else if (MainWindow.Персонажи.Count == 0 && MainWindow.Персонажи[0].Пол == false)
                {
                    MainWindow.ConsoleWriteLine($"- Героиня, наше королество в опасности, на землях Мелромарка лежит тяжелая ноша, сражение с волнами монстров. " +
                                                $"Мы пытались отбить волны своими силами, но треть населения нашего королевства была жестоко убита. Пожалуйста, героиня, спаси нас!");
                    MainWindow.Change_Button_Choice_1("Как я \nдолжна это \nсделать?");
                }
                else if (MainWindow.Персонажи.Count >= 1)
                {
                    MainWindow.ConsoleWriteLine($"- Герои, наше королество в опасности, на землях Мелромарка лежит тяжелая ноша, сражение с волнами монстров. " +
                                                $"Мы пытались отбить волны своими силами, но треть населения нашего королевства была жестоко убита. Пожалуйста, герои, спасите нас!");
                    MainWindow.Change_Button_Choice_1("Как мы \nдолжны это \nсделать?");
                }

                MainWindow.Block_Button_Choice_2();
                MainWindow.Block_Button_Choice_3();
            }
            if (Choices.Count == 1 && Choices[0] == 3)
            {
                if (MainWindow.Персонажи.Count == 0 && MainWindow.Персонажи[0].Пол == true)
                {
                    MainWindow.ConsoleWriteLine($"- Мы - маги королевства Мелромарк и оно в опасности. На землях Мелромарка лежит тяжелая ноша, сражение с волнами монстров. " +
                                                $"Мы пытались отбить волны своими силами, но треть населения нашего королевства была жестоко убита. Пожалуйста, герой, спаси нас!");
                    MainWindow.Change_Button_Choice_1("Как я \nдолжен это \nсделать?");
                }
                else if (MainWindow.Персонажи.Count == 0 && MainWindow.Персонажи[0].Пол == false)
                {
                    MainWindow.ConsoleWriteLine($"- Мы - маги королевства Мелромарк и оно в опасности. На землях Мелромарка лежит тяжелая ноша, сражение с волнами монстров. " +
                                                $"Мы пытались отбить волны своими силами, но треть населения нашего королевства была жестоко убита. Пожалуйста, героиня, спаси нас!");
                    MainWindow.Change_Button_Choice_1("Как я \nдолжна это \nсделать?");
                }
                else if (MainWindow.Персонажи.Count >= 1)
                {
                    MainWindow.ConsoleWriteLine($"- Мы - маги королевства Мелромарк и оно в опасности. На землях Мелромарка лежит тяжелая ноша, сражение с волнами монстров. " +
                                                $"Мы пытались отбить волны своими силами, но треть населения нашего королевства была жестоко убита. Пожалуйста, герои, спасите нас!");
                    MainWindow.Change_Button_Choice_1("Как мы \nдолжны это \nсделать?");
                }

                MainWindow.Block_Button_Choice_2();
                MainWindow.Block_Button_Choice_3();
            }
            if (Choices.Count == 2)
            {
                MainWindow.ConsoleWriteLine($"- Единственное что мы можем вам дать это несколько рун, " +
                                            $"усиливающие ваши способности и немного целебных и магических снадобий. Используйте их с умом!");

                MainWindow.ПереченьПредметов.Add(new Предметы.Малое_Зелье_Лечения());
                MainWindow.ПереченьПредметов.Add(new Предметы.Среднее_Зелье_Лечения());
                MainWindow.ПереченьПредметов.Add(new Предметы.Большое_Зелье_Лечения());
                MainWindow.ПереченьПредметов.Add(new Предметы.Бутылек_Маны());
                MainWindow.ПереченьПредметов.Add(new Предметы.Фласка_маны());
                MainWindow.ПереченьПредметов.Add(new Предметы.Банка_маны());

                MainWindow.ConsoleWriteLine("СОПИ: Предметы получены: Руна Здоровья (Ур. 1 из 3). " +
                                            "Описание: Увеличивает количество здоровья у персонажей. Обладает множителем \"x1\"");
                MainWindow.ConsoleWriteLine("СОПИ: Предметы получены: Руна Эффективности использования заклинаний (Ур. 1 из 3). " +
                                            "Описание: Уменьшает количество затрат маны на использование заклинаний у персонажей. Обладает множителем \"x1.2\"");
                MainWindow.ConsoleWriteLine("СОПИ: Предметы получены: Руна Урона (Ур. 1 из 3). " +
                                            "Описание: Увеличивает количество наносимого урона персонажами. Обладает множителем \"x1\"");

                MainWindow.Change_Button_Choice_1("Спасибо!");
            }
            if (Choices.Count == 3)
            {
                MainWindow.ConsoleWriteLine($"- А теперь, пожалуйста, чтобы мы могли оценить насколько вы сильны, сразитесь с одним из нашей стражи при короле. Пройдёмте...");

                MainWindow.ConsoleWriteLine($"СОПИ: Вы следуете за магами в тренировочный зал. Выходя из подвала, " +
                                            $"вы впервые видите как роскошно выглядит поместье 21 века, вместе с широкими красными " +
                                            $"коврами и прекрасными ухоженными садами, среди не менее величественных картин и гобеленов.");

                MainWindow.Change_Button_Choice_1("Продолжить \nследовать");
            }
            if (Choices.Count == 4)
            {
                MainWindow.ConsoleWriteLine("СОПИ: Вы следуете за магами почти сквозь всё поместье к огромному " +
                                            "тренировочному залу где вас уже поджидала стража. Увидев подходящих магов самый первый из их ряда " +
                                            "вышел на один шаг вперед, предъявляя свою кандидатуру для вашей проверки.");

                MainWindow.ConsoleWriteLine("Вы будете сражаться с главой нашей стражи, покажите что умеете и пожалуйста, не убейте его. Он нам ещё нужен.");

                MainWindow.ConsoleWriteLine("СОПИ: Ваша задача - опустить здоровье противника до 50%");

                MainWindow.Change_Button_Choice_1("[Принять \nвызов]");
            }
            if (Choices.Count == 5)
            {
                MainWindow.IsBattleMode = true;

                MainWindow.Change_Button_Choice_1("Атака");
                MainWindow.Change_Button_Choice_2("Использовать \nзаклинание");
                MainWindow.Change_Button_Choice_3("Защита");
                MainWindow.Button_GiveUp.IsEnabled = true;

                MainWindow.СписокТекущихВрагов.Add(new Враги.ГлаваСтражи());

                for (int i = 0; i < MainWindow.Персонажи.Count; i++)
                {
                    Персонаж Персонаж = MainWindow.Персонажи.ElementAt(i);
                    MainWindow.ПорядокАтаки.Add(Персонаж);
                }
                foreach (Враги Враг in MainWindow.СписокТекущихВрагов)
                {
                    MainWindow.ПорядокАтаки.Add(Враг);
                }

                Battle(MainWindow.СписокТекущихВрагов, MainWindow.ПорядокАтаки, MainWindow.СписокГероевВЗащите);
            }
            if (Choices.Count == 6)
            {
                MainWindow.ConsoleWriteLine("- Достаточно, мы увидели что хотели. Мы можем не переживать за своё королевство. В награду " +
                                            "наши лекари вылечат вас, восполнят запасы маны и лично мы выдаём вам улучшенные руны. А сейчас идите отдыхайте. Поговорим о делах завтра.");

                foreach (Персонаж персонаж in MainWindow.Персонажи)
                {
                    персонаж.ИзменениеСостоянияЗдоровья("лечение", 1000);
                }
                MainWindow.ConsoleWriteLine("СОПИ: Здоровье всех персонажей восстановлено.");

                foreach (Персонаж персонаж in MainWindow.Персонажи)
                {
                    if (персонаж is Персонаж_с_магией)
                    {
                        (персонаж as Персонаж_с_магией).ИзменениеСостоянияМаны("восполнение", 1000);
                    }
                }
                MainWindow.ConsoleWriteLine("СОПИ: Мана всех персонажей восполнена.");

                MainWindow.SetRuneRank(2);
                MainWindow.ConsoleWriteLine("СОПИ: Показатели рун улучшены. ");
                MainWindow.ConsoleWriteLine("СОПИ: Предметы улучшены: Руна Здоровья (Ур. 2 из 3). " +
                                            "Описание: Увеличивает количество здоровья у персонажей. Обладает множителем \"x2\"");
                MainWindow.ConsoleWriteLine("СОПИ: Предметы улучшены: Руна Эффективности использования заклинаний (Ур. 2 из 3). " +
                                            "Описание: Уменьшает количество затрат маны на использование заклинаний у персонажей. Обладает множителем \"x1\"");
                MainWindow.ConsoleWriteLine("СОПИ: Предметы улучшены: Руна Урона (Ур. 2 из 3). " +
                                            "Описание: Увеличивает количество наносимого урона персонажами. Обладает множителем \"x2\"");

                MainWindow.Block_Button_Choice_2();
                MainWindow.Block_Button_Choice_3();

                MainWindow.Change_Button_Choice_1("[Пойти отдыхать]");
                MainWindow.Change_Button_Choice_2("");
                MainWindow.Change_Button_Choice_3("");
            }
            if (Choices.Count == 7)
            {
                MainWindow.ConsoleWriteLine("\n");
                MainWindow.ConsoleWriteLine("\n");
                MainWindow.ConsoleWriteLine("Демоверсия окончена.");

                GameOver();
            }
            if (Choices.Count == 8)
            {
                Application.Current.Shutdown();
            }
        }