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); } }
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); } }