/// <summary> /// </summary> public int Tick() { if (_activeBonus == null) { var position = new Position2D( _randomGenerator.Next(0, SnakeConfig.RowCount - 1), _randomGenerator.Next(0, SnakeConfig.ColumnCount - 1) ); while (CellAt(position).BackColor != SnakeConfig.BlankColor) { position = new Position2D( _randomGenerator.Next(0, SnakeConfig.RowCount - 1), _randomGenerator.Next(0, SnakeConfig.ColumnCount - 1) ); } _bonusPosition = position; _activeBonus = CellAt(_bonusPosition); _activeBonus.BackColor = SnakeConfig.AppleColor; } if (_snake.Position.Equals(_bonusPosition)) { if (_snake.Tick(false) == null) { GameOver = true; } else { _activeBonus.BackColor = SnakeConfig.SnakeNormalColor; _activeBonus = null; _score += 100; } } else if (_snake.Tick(true) == null) { GameOver = true; } else { _score++; } return(_score); }
/// <summary> /// </summary> /// <param name="other"></param> public Position2D(Position2D other) { X = other.X; Y = other.Y; }
/// <summary> /// </summary> /// <param name="position2D"></param> /// <returns></returns> public Button CellAt(Position2D position2D) { return(_matrix[position2D.X * SnakeConfig.ColumnCount + position2D.Y]); }
/// <summary> /// </summary> /// <param name="button"></param> /// <param name="position"></param> public SnakeSegment(Control button, Position2D position) { Button = button; Position = position; button.BackColor = SnakeConfig.SnakeHeadColor; }