Esempio n. 1
0
        public void LoadLevel(Level level)
        {
            Width = level.Width;
            Height = level.Height;

            _goalsCount = 0;
            _goalsFilled = 0;

            _level = new Element[level.Data.Length][];
            for (int row = 0; row < level.Data.Length; row++)
            {
                _level[row] = new Element[level.Data[row].Length];

                for (int column = 0; column < level.Data[row].Length; column++)
                {
                    _level[row][column] = new Element() {Row = row, Column = column};

                    switch (level.Data[row][column])
                    {
                        case '@':
                            _level[row][column].Type = ElementType.Player;
                            _player = _level[row][column];
                            break;
                        case '+':
                            _level[row][column].Type = ElementType.PlayerOnGoal;
                            _player = _level[row][column];
                            break;
                        case '#':
                            _level[row][column].Type = ElementType.Wall;
                            break;
                        case '$':
                            _level[row][column].Type = ElementType.Box;
                            break;
                        case '*':
                            _level[row][column].Type = ElementType.BoxOnGoal;
                            _goalsCount++;
                            _goalsFilled++;
                            break;
                        case '.':
                            _level[row][column].Type = ElementType.Goal;
                            _goalsCount++;
                            break;
                        case ' ':
                            _level[row][column].Type = ElementType.Floor;
                            break;
                    }
                }
            }

            _movesHistory.Clear();
        }
Esempio n. 2
0
 public Sokoban(Level level)
 {
     LoadLevel(level);
 }