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); } }
private void Button_Accept_Click(object sender, RoutedEventArgs e) { if (Hero_DoHaveMagic.IsChecked == true) { Новый_персонаж_с_магией = new Персонаж_с_магией(RecievedID, Имя, Пол, Возраст, аса, МножительСилыРун); } else { Новый_персонаж = new Персонаж(RecievedID, Имя, Пол, Возраст, аса, МножительСилыРун); } DialogResult = true; Close(); }
public Attack(List <Враги> СписокНаследованныхВрагов, Персонаж НаследованныйАтакующийПерсонаж) { InitializeComponent(); СписокТекущихВрагов = СписокНаследованныхВрагов; foreach (Враги Враг in СписокТекущихВрагов) { ComboBox_EnemyList.Items.Add(Враг.ИмяВрага); } ComboBox_EnemyList.SelectedIndex = 0; SelectedEnemy = 0; Button_Attack.IsEnabled = true; АтакующийПерсонаж = НаследованныйАтакующийПерсонаж; ЗначениеАтаки = АтакующийПерсонаж.ПолучитьЗначениеАтаки(); }
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; } }
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(); } }
public Воскрешение(Персонаж_с_магией Источник, Персонаж Цель, double Множитель_Стоимости) { Источник.ИзменениеСостоянияМаны("расходование", (uint)(Стоимость * Множитель_Стоимости)); Цель.ИзменениеСостоянияЗдоровья("лечение", 50); }
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(); } }