public Game(FormState settings, GamePurpose purpose) { _formState = settings; #region constructor clickedRound = -1; _rand = new Random(settings.RandomSeed); Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture; _gameInstancePurpose = purpose; if (_gameInstancePurpose == GamePurpose.LoadSpritesAndFonts) { return; } #region create players players = settings.ProgramAddressesInMatch .Select(index => settings.ProgramAddressesAll[index]) .Select(address => new Player { name = address == null ? "Человек" : Path.GetFileNameWithoutExtension(address), controlledByHuman = address == null, programAddress = address }).ToList(); var startPositions = (new Rect2d(0, 0, 900, 650) + new Vector2d(50)).points; var colors = new List <Color> { Color.Red, Color.Gray, Color.Violet, Color.SkyBlue }; for (int i = 0; i < 4; i++) { players[i].team = i; players[i].man = new Man { position = startPositions[i], lastFreezed = -10000, hp = 100, speedVector = -Vector2d.UnitY * 1000 /*_arena.center*/ }; players[i].color = colors[i]; players[i].lastShootingRound = -10000; _manAnimators.Add(new Animator <Vector2d>(Animator.Linear, players[i].man.position, players[i].man.position, 1)); } _manList = players.Select(x => x.man).ToList(); #endregion _walls = new List <Rect2d> { new Rect2d(100, 100, 30, 30), new Rect2d(130, 100, 30, 30), new Rect2d(160, 100, 30, 30), new Rect2d(190, 100, 30, 30), new Rect2d(220, 100, 30, 30), new Rect2d(250, 100, 30, 30), new Rect2d(250, 130, 30, 30), }; #endregion }
public Board(FormState settings, GamePurpose purpose) { _purpose = purpose; if (_purpose == GamePurpose.LoadSpritesAndFonts) { return; } lastRoundLimit = settings.TurnCountPerGame * 4 - 1; var colors = new Queue <Color>(); colors.Enqueue(Color.Green); colors.Enqueue(Color.Red); colors.Enqueue(Color.Violet); colors.Enqueue(Color.Yellow); players = settings.ProgramAddressesInMatch .Select(index => settings.ProgramAddressesAll[index]) .Select(address => new Player { name = address == null ? "Человек" : Path.GetFileNameWithoutExtension(address), controlledByHuman = address == null, programAddress = address, color = colors.Dequeue() }).ToList(); for (int i = 0; i < 4; i++) { players[i].team = i; players[i].humanSource = new Point(1, 1); //стартовая позиция RotateField(i); field[1, 1] = players[i]; field[1, 2] = players[i]; field[2, 1] = players[i]; field[1, 3] = players[i]; field[2, 2] = players[i]; field[3, 1] = players[i]; } maxDistanceToWin = 10 + 9 + 9 + 8 + 8 + 8; }
public Game(FormState settings, GamePurpose purpose) { _formState = settings; #region constructor clickedRound = -1; _rand = new Random(settings.RandomSeed); Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture; _gameInstancePurpose = purpose; if (_gameInstancePurpose == GamePurpose.LoadSpritesAndFonts) { return; } #region create players players = settings.ProgramAddressesInMatch .Select(index => settings.ProgramAddressesAll[index]) .Select(address => new Player { name = address == null ? "Человек" : Path.GetFileNameWithoutExtension(address), controlledByHuman = address == null, programAddress = address }).ToList(); for (int i = 0; i < 2; i++) { players[i].team = i; } #endregion var positions = new List <Vector2d> { new Vector2d(20, 10), new Vector2d(20, 30), new Vector2d(20, 50), new Vector2d(40, 20), new Vector2d(40, 40), new Vector2d(80, 10), new Vector2d(80, 30), new Vector2d(80, 50), new Vector2d(60, 20), new Vector2d(60, 40) }; _manAnimators = new List <Animator <Vector2d> >(); for (int i = 0; i < 10; i++) { var man = new Man { team = i / 5, Color = i / 5 == 0 ? Color.Blue : Color.Green, position = positions[i] }; _manList.Add(man); if (i < 5) { players[0].manList.Add(man); } else { players[1].manList.Add(man); } _manAnimators.Add(new Animator <Vector2d>(Animator.Linear, man.position, man.position, 1)); } AddBallToGame(); #endregion }