Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Сокобан / Сокобан - Создаём свои уровни

  • Твоя задача - подготовить базу уровней для игры Сокобан.
  • Дата отправки отчёта: 9 декабря 2016 г.
  • Задание выполнено: за 1 час. 03 мин.
  • Чему научился: Создавать и редактировать уровни
  • Что было сложным: Оценить сложность уровня
  • Комментарии: Иногда при сохранении уровня возникают проблемы. Еще не разобрался в закономерности.
    О деталях сообщу дополнительно
  • Оценка видео-уроку:
Отчёт от 11589 за Сокобан / Сокобан - Создаём свои уровни




Оцени работу

 
Сохранить страницу:

10558. --
Иван Воронин
Иван Воронин
ответить
→  Yefim  # Игра Сокобан / Сокобан - Создаём свои уровни / 2016-12-10 01:28

Проблем не должно быть, где-то ошибся, ищи.


7119. --
Новопашин Владимир
Новопашин Владимир
ответить
→  Yefim  # Игра Сокобан / Сокобан - Создаём свои уровни / 2016-12-10 08:29

А какие проблемы?


11589. --
Yefim
Yefim
ответить
# Игра Сокобан / Сокобан - Создаём свои уровни / 2016-12-10 15:13

Как я отмечал в последнем отчете, сохранение уровня не всегда работает правильно. Так если,скажем, уровень был 5х5 и мы меняем его на 5х7 или 5х8 (чтобы новое число строк было больше 1) то
возникает исключение.
  И в самом деле ниже приведен фрагмент кода из функции
public void SaveLevel(int level_nr, Cell [,] cell)
======
................

            if (new_length > old_length)
            {
                Array.Resize(ref lines, new_length);
                //for (int z = new_length -1 ; z > curr ;z-- )
                for (int z = new_length - 1; z > curr - delta+1; z--)
                { 
                    try{
                    lines[z] = lines[z - delta];
                    }
                    catch{
                    int xx=1;
                    }
                }
            }
======

В закомментированом коде, в приведенном в видео,
//for (int z = new_length -1 ; z > curr ;z-- )
видно, что внутри этого цикла (особенно, когда работаем с 1-ым уровнем)

может возникнуть отрицательный индекс, что и приводит к проблеме.
В моем варианте
for (int z = new_length - 1; z > curr - delta+1; z--)
вроде бы все работает нормально.
Вопрос: Интересно, у других при таком же сценарии тоже возникает проблема?
Или я недостаточно внимательно смотрел видео урок?



Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Создавать уровни
Уровни: • Осторожно, стены! • Тише едешь - дальше будешь


Научился: придумывать уровни
не могу понять почему при обращении к уровням больше 10ти выпадает ошибка.