예제 #1
0
        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
        }
예제 #2
0
        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;
        }
예제 #3
0
        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
        }