public static void SaveGame(MilitaryBase m) { fs = new FileStream(@"save.dat", FileMode.Create); formatter = new BinaryFormatter(); formatter.Serialize(fs, m); fs.Close(); }
static void Main(string[] args) { MilitaryBase myBase = new MilitaryBase(); MilitaryBase enemy; War war; Console.WriteLine("Добро пожаловать в военную стратегию \"Iron War\""); int newOrOld = Game.NewOrOldGame(); switch (newOrOld) { case 1: Console.WriteLine("Введите название вашей военной базы"); myBase.Name = Console.ReadLine(); break; case 2: myBase = Game.LoadGame(); break; } enemy = Game.AutoCreateBase(); Game.CreateArmy(myBase); war = new War(myBase, enemy); war.FindWinner(); }
public static void WriteAllInfoCity(MilitaryBase m) { Console.WriteLine("__________________________________________________________________________________"); Console.WriteLine($"За {m.CountOfMonth}-й месяц: Добыли Золота: {m.NewGold}, добыли Еды: {m.NewFood}, Потратили еды: {m.SpentFood}, Потратили золота: {m.SpentGold}"); Console.WriteLine($"Погибло собратьев: {m.DeadPeople} чел, Прибыло подкрепление: {m.NewPeople} чел."); Console.WriteLine("Всего: Золота: {0}, Еды: {1}, Рабочих: {2}, Солдат: {3}, Танков: {4} (Танкисты: {5} чел.)", m.Gold, m.Food, m.Workers.Count, m.Soldiers.Count, m.Tanks.Count, m.Tanks.Count * 5); Console.WriteLine("__________________________________________________________________________________"); }
public static void Rule(MilitaryBase m) { Console.WriteLine("У вас есть пол года на подготовку своей армии."); Console.WriteLine("Добывайте золото, еду, содавайте профессиональную армию и в бой!"); Console.WriteLine("Игра сохраняется автоматически, вы всегда сможете продолжить игру позже."); Console.WriteLine("__________________________________________________________________________________"); Console.WriteLine("На старте у вас есть:"); Console.WriteLine("Золото: {0}, Еды: {1}, Рабочих: {2}, Солдат: {3}, Танков: {4} (Танкисты: {5} чел.)", m.Gold, m.Food, m.Workers.Count, m.Soldiers.Count, m.Tanks.Count, m.Tanks.Count * 5); Console.WriteLine("__________________________________________________________________________________"); }
public static void CreateArmy(MilitaryBase mb) { m = mb; Info.Rule(m); while (m.CountOfMonth < 7) { Event += new EventHandler(Accident.TryGetSomeAccident); SetSoldiersAndWorkers(); MineGoldAndFood(); MakeTanks(); PeopleEat(); Info.WriteAllInfoCity(m); m.CountOfMonth++; SaveGame(m); } }
public static MilitaryBase LoadGame() { try { fs = new FileStream(@"save.dat", FileMode.Open); m = (MilitaryBase)formatter.Deserialize(fs); fs.Close(); } catch (Exception) { Console.WriteLine("Нет сохранений игры. Игра начнется заново."); Console.WriteLine("Введите название вашей военной базы"); m = new MilitaryBase(); m.Name = Console.ReadLine(); } return(m); }
public static void TryGetSomeAccident(Object m, EventArgs e) { if (m is MilitaryBase) { mb = (MilitaryBase)m; switch (Game.random.Next(30)) { case 1: Console.WriteLine("Произошел взрыв на шахте!!!Мы потеряли 20% золота!!!"); mb.Gold -= ((mb.Gold * 20) / 100); break; case 2: Console.WriteLine("На складе с провизией появились крысы!!! Пропало 10% нашей еды!!!"); mb.Food -= ((mb.Food * 10) / 100); break; } } }
public static MilitaryBase AutoCreateBase() // генерирует базу с солдатами и танками { MilitaryBase enemy = new MilitaryBase(); enemy.Name = "Nord"; Soldier[] soldiers = new Soldier[5]; int countOfsoldiers = Game.random.Next(20, 40); int countOfTanks = Game.random.Next(20, 30); for (int i = 1; i <= countOfsoldiers; i++) //добавляем солдат { enemy.Soldiers.Add(new Soldier("Вражеский cолдат_" + i)); } for (int i = 1; i <= countOfTanks; i++) { for (int a = 0; a < 5; a++) { soldiers[a] = new Soldier("Вражеский cолдат_" + i); } enemy.Tanks.Add(new Tank(i, soldiers)); } return(enemy); }
public War(MilitaryBase mb1, MilitaryBase mb2) { this.mb1 = mb1; this.mb2 = mb2; }