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

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

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

Сокобан / Сокобан - Редактор - Редактирование

  • На третьем уроке мы сделаем наконец-таки редактирование поля.
    Также реализуем возможность изменения размера лабиринта.
    В конце напишем функцию для проверки корректности составленного уровня.
  • Дата отправки отчёта: 5 декабря 2016 г.
  • Задание выполнено: за 5 час. 17 мин.
  • Чему научился: Убирать "мусор"
  • Что было сложным: Выполняя это задание, решил не просто копировать код, а, по возможности, предложить свою реализацию.
    В основном получилось, но кое-где были проблемы.
    Например, я заметил, что при выборе элемнта для редактирования, сам элемент выделяется "неубедительно".
    В статическом режиме мне это удалось, а в динамическом почему-то нет.
    Я пытался это сделать при написании функции SetCurrentCell() (см. скрин)
    Если кто знает, в чем моя ошибка подскажите.
  • Комментарии:
    Честно говоря, я не понял почему в функции IsGoodLevel() для вычесления числа мест для ящиков
    используется элемент Cell.done, а не Cell.here?
    И почему число мест для ящиков не может быть больше числа самих ящиков?
    Хотя это вопрос определения правил, но ведь эта игра - модель жизненой ситуации.

    При редактровании уровня до того, как юзер выберет, какой Селл будет активным
    нужно определиться: либо установить что-то по умолчанию, либо
    механизм редактирования должен быть заблокирован.
    На данный момент Cell.none является активным в начале, хотя объект toolNone никак не выделен.

  • Оценка видео-уроку:
Отчёт от 11589 за Сокобан / Сокобан - Редактор - Редактирование


Отчёт от 11589 за Сокобан / Сокобан - Редактор - Редактирование




Оцени работу

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

7119. --
Новопашин Владимир
Новопашин Владимир
ответить

791. --
Валерий Жданов
Валерий Жданов
ответить
→  Yefim  # Игра Сокобан / Сокобан - Редактор - Редактирование / 2016-12-05 17:57

ну в принципе надо для выигрыша,  чтобы места все были закрыты ящиками... хотя... в жизненной ситуации может быть и по-другому... вопрос - есть обработка "неравенства" в практике разработки Сокобана?


10558. --
Иван Воронин
Иван Воронин
ответить
→  Yefim  # Игра Сокобан / Сокобан - Редактор - Редактирование / 2016-12-06 15:05

У тебя в SetCurrentCell() много дублирующего кода, а когда ты пытаешься цвет фона изменить, то почему меняешь только у одной и той же кнопки? Если не получается пока сделать самому, следи за учителем и позже поймёшь.

по поводу IsGoodLevel() там учитель просто опечатался, позже он поймёт, что ошибся и исправит, когда будет пытаться проверить этот момент и ничего не будет получаться. Это лишний раз показывается, что если чтолибо делаешь в коде, сразу же надо проверять, а не ПОТОМ, когда уже кучу строчек кода изменил.

По поводу того, что число мест всегда равно числу ящиков, таковые правила, придуманные автором данной игры. Если хочешь, можешь изменить код и сделать так, чтобы число мест могло быть больше, тогда игра будет проще, сразу скажу. В этом и фишка, что надо расставить все ящики именно так как задумано создателем уровня, если можно будет ставить их как хочешь, то сложность сразу падает.

Если ты думаешь, что эта игра - модель жизненной ситуации, тогда ты должен знать, что на складе куда сказали поставить, туда и надо ставить, нельзя поставить где хочется! Жизненная ситуация =)

По поводу активного элемента редактирования уровня, выделено по-умолчанию обрамлением при помощи тонкой линии, можешь выбрать что угодно для этого =) Делай так, как ты считаешь нужным в своей версии Сокобана, я вот вношу коррективы и описываю что было сделано дополнительно в пройденном уроке.


  • Отчёт оценивали:
    Посетитель+1  

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





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

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

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

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


Научился: Понравился метод "toolWall.Checked = CurrentCell == Cell.wall;". После перехода с Visual Basic догадывался о существовании "private string IsGoodLevel()". )))



Научился: Закрепил пройденное
Отличный урок, стараюсь пока особо не модифицировать код, будет ещё такая возможность =)