コード例 #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
ファイル: Board.cs プロジェクト: LightRay2/ContestFramework
        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
ファイル: Game.cs プロジェクト: LightRay2/ContestFramework
        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
        }