/// <summary> /// Функция, которая двигает монстров (двигает либо по оси X, либо по Y) /// </summary> /// <param name="creatures">Общее состояние игры (Model) - в паттерне MVC</param> public void MoveMosters(Creatures creatures) { foreach (var m in Monsters) { if (m.Y + m.Height >= creatures.Bunkers[0].Y) { GameOver = true; return; } if ((Direction > 0 && m.X + GameSetting.MoveMonsterX >= GameSetting.Width) || (Direction < 0 && m.X - GameSetting.MoveMonsterX < 0)) { IsNeedRowDown = true; break; } } if (IsNeedRowDown) { foreach (var m in Monsters) { m.Y += GameSetting.MoveMonsterY; } IsNeedRowDown = false; Direction *= -1; } else { foreach (var m in Monsters) { m.X += GameSetting.MoveMonsterX * Direction; } } }
/// <summary> /// Функция, которая занимается сдвигом патрона, выпущенного Игроком, и уничтожением патрона и объекта, при их столкновении /// </summary> /// <param name="creatures">Общее состояние игры (Model) - в паттерне MVC</param> public void MovePlayerCatridge(Creatures creatures) { var isBreak = false; foreach (var b in creatures.Bunkers) { if (b.X <= X && b.X + b.Width >= X + Width && b.Y + b.Height >= Y && b.Y <= Y) { Y = -1000; return; } } foreach (var m in creatures.Monsters) { if (m.X <= X && m.X + m.Width >= X + Width && m.Y + m.Height >= Y && m.Y <= Y) //потом сделать метод IsConflicted { creatures.Player.Score += m.Cost; creatures.Monsters.Remove(m); //может быть метод потом Y = -1000; isBreak = true; break; } } if (!isBreak) { Y -= GameSetting.MoveCatridge; } }
/// <summary> /// Функция, которая проверяет, стоит ли стрелять монстру. Если стоит, создает патрон. /// </summary> /// <param name="creatures">Общее состояние игры (Model) - в паттерне MVC</param> /// <param name="rnd">Генератор псевдослучайных чисел</param> public void MakeShot(Creatures creatures, Random rnd) { if (rnd.Next(1, 101) < 16 && PlayerOnRange(creatures.Player)) { var catr = new Catridge(this); creatures.CatridgesMonsters.Add(catr); } }
static void Main() { var creatures = new Creatures(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1(creatures)); }
public Form1(Creatures creatures) { InitializeComponent(); SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true); UpdateStyles(); Creatures = creatures; }
/// <summary> /// Функция, которая занимается сдвигом патрона, выпущенного Монстра, и уничтожением патрона и объекта, при их столкновении /// </summary> /// <param name="creatures">Общее состояние игры (Model) - в паттерне MVC</param> public void MoveMonsterCatridge(Creatures creatures) { foreach (var b in creatures.Bunkers) { if (((X + Width >= b.X && X + Width <= b.X + b.Width) || (X <= b.X + b.Width) && X >= b.X) && (Y + Height >= b.Y && Y <= b.Y + b.Height)) { Y = 1000; return; } } if (((X + Width >= creatures.Player.X && X + Width <= creatures.Player.X + creatures.Player.Width) || (X <= creatures.Player.X + creatures.Player.Width) && X >= creatures.Player.X) && (Y + Height >= creatures.Player.Y && Y <= creatures.Player.Y + creatures.Player.Height)) { creatures.Player = null; creatures.GameOver = true; Y = 1000; } Y += GameSetting.SpeedMonsterCatridge; }
/// <summary> /// Функция, которая обновляет состояние игрового поля и экрана /// </summary> private void NewGame() { Creatures = new Creatures(); label1.Hide(); label2.Hide(); }