Ejemplo n.º 1
0
        public void LoadFile(string file)
        {
            var l = FileController.Load <Level>(file);

            _maxPoints  = l.MaxPoints;
            _maxLives   = l.MaxLives;
            _maxPoisons = l.MaxPoisons;

            _speed = 10 - _parent.Level / l.SpeedModifier;
            if (_speed <= 0)
            {
                _speed = 1;
            }
            _needSize     = l.NeededSize;
            _startingSize = l.StartingSize;
            _startingDir  = l.StartDirection;

            _startingPos1 = l.Player1StartPosition;
            _startingPos2 = l.Player2StartPosition;

            _obstacles.Clear();

            _snake1 = new Snake(this, true, _startingPos1, _needSize, _speed, _startingSize, _startingDir, _controls1);
            Snake.Side dir2;
            if (_startingDir == Snake.Side.Down)
            {
                dir2 = Snake.Side.Up;
            }
            else if (_startingDir == Snake.Side.Up)
            {
                dir2 = Snake.Side.Down;
            }
            else if (_startingDir == Snake.Side.Left)
            {
                dir2 = Snake.Side.Right;
            }
            else
            {
                dir2 = Snake.Side.Left;
            }
            if (MultiPlayer)
            {
                _snake2 = new Snake(this, false, _startingPos2, _needSize, _speed, _startingSize, dir2, _controls2);
            }

            foreach (var rec in l.Obstacles)
            {
                _obstacles.Add(rec);
            }
        }
Ejemplo n.º 2
0
        public void MakeRandom()
        {
            _maxPoints  = _r.Next(1, 7);
            _maxLives   = _r.Next(1, 3);
            _maxPoisons = _r.Next(1, 3);

            var spdr = _r.Next(1, 3);

            _speed = 10 - _parent.Level / spdr;
            if (_speed <= 0)
            {
                _speed = 1;
            }
            _needSize     = _r.Next(10, 100);
            _startingSize = _r.Next(0, 9);
            _startingDir  = (Snake.Side)_r.Next(0, 4);

            _startingPos1 = new Vector2(_r.Next(10, Renderer.WindowSize.X - 10), _r.Next(10, Renderer.WindowSize.Y - 12));
            _startingPos2 = new Vector2(Renderer.WindowSize.X - _startingPos1.X, Renderer.WindowSize.Y - _startingPos1.Y);

            _obstacles.Clear();

            _snake1 = new Snake(this, true, _startingPos1, _needSize, _speed, _startingSize, _startingDir, _controls1);
            Snake.Side dir2;
            if (_startingDir == Snake.Side.Down)
            {
                dir2 = Snake.Side.Up;
            }
            else if (_startingDir == Snake.Side.Up)
            {
                dir2 = Snake.Side.Down;
            }
            else if (_startingDir == Snake.Side.Left)
            {
                dir2 = Snake.Side.Right;
            }
            else
            {
                dir2 = Snake.Side.Left;
            }
            if (MultiPlayer)
            {
                _snake2 = new Snake(this, false, _startingPos2, _needSize, _speed, _startingSize, dir2, _controls2);
            }

            var sides = _r.Next(0, 10);

            if ((sides > 3) && (sides < 6))
            {
                _obstacles.Add(new Rectangle(1, 2, Renderer.WindowSize.X - 2, 1));
                _obstacles.Add(new Rectangle(1, Renderer.WindowSize.Y - 1, Renderer.WindowSize.X - 2, 1));
                _obstacles.Add(new Rectangle(0, 3, 1, Renderer.WindowSize.Y - 4));
                _obstacles.Add(new Rectangle(Renderer.WindowSize.X - 1, 3, 1, Renderer.WindowSize.Y - 4));
            }
            else if (sides >= 6)
            {
                _obstacles.Add(new Rectangle(1, 2, (Renderer.WindowSize.X - 2) / 2 - 10, 1));
                _obstacles.Add(new Rectangle((Renderer.WindowSize.X - 2) / 2 + 11, 2, (Renderer.WindowSize.X - 2) / 2 - 10,
                                             1));
                _obstacles.Add(new Rectangle(1, Renderer.WindowSize.Y - 1, (Renderer.WindowSize.X - 2) / 2 - 10, 1));
                _obstacles.Add(new Rectangle((Renderer.WindowSize.X - 2) / 2 + 11, Renderer.WindowSize.Y - 1,
                                             (Renderer.WindowSize.X - 2) / 2 - 10, 1));
                _obstacles.Add(new Rectangle(0, 3, 1, (Renderer.WindowSize.Y - 4) / 2 - 5));
                _obstacles.Add(new Rectangle(0, (Renderer.WindowSize.Y - 4) / 2 + 8, 1, (Renderer.WindowSize.Y - 4) / 2 - 5));
                _obstacles.Add(new Rectangle(Renderer.WindowSize.X - 1, 3, 1, (Renderer.WindowSize.Y - 4) / 2 - 5));
                _obstacles.Add(new Rectangle(Renderer.WindowSize.X - 1, (Renderer.WindowSize.Y - 4) / 2 + 8, 1,
                                             (Renderer.WindowSize.Y - 4) / 2 - 5));
            }

            for (var i = 0; i < _r.Next(0, 5); i++)
            {
                var rec = new Rectangle(_r.Next(10, Renderer.WindowSize.X - 10), _r.Next(10, Renderer.WindowSize.Y - 10),
                                        _r.Next(1, 20), _r.Next(1, 10));

                if (!MultiPlayer)
                {
                    while (_snake1.CheckCollisionFull(rec))
                    {
                        rec = new Rectangle(_r.Next(10, Renderer.WindowSize.X - 10),
                                            _r.Next(10, Renderer.WindowSize.Y - 10), _r.Next(1, 20), _r.Next(1, 10));
                    }
                }
                else
                {
                    while (_snake1.CheckCollisionFull(rec) || _snake2.CheckCollisionFull(rec))
                    {
                        rec = new Rectangle(_r.Next(10, Renderer.WindowSize.X - 10),
                                            _r.Next(10, Renderer.WindowSize.Y - 10), _r.Next(1, 20), _r.Next(1, 10));
                    }
                }
                _obstacles.Add(rec);
            }
        }