ну в принципе надо для выигрыша, чтобы места все были закрыты ящиками... хотя... в жизненной ситуации может быть и по-другому... вопрос - есть обработка "неравенства" в практике разработки Сокобана?
У тебя в SetCurrentCell() много дублирующего кода, а когда ты пытаешься цвет фона изменить, то почему меняешь только у одной и той же кнопки? Если не получается пока сделать самому, следи за учителем и позже поймёшь.
по поводу IsGoodLevel() там учитель просто опечатался, позже он поймёт, что ошибся и исправит, когда будет пытаться проверить этот момент и ничего не будет получаться. Это лишний раз показывается, что если чтолибо делаешь в коде, сразу же надо проверять, а не ПОТОМ, когда уже кучу строчек кода изменил.
По поводу того, что число мест всегда равно числу ящиков, таковые правила, придуманные автором данной игры. Если хочешь, можешь изменить код и сделать так, чтобы число мест могло быть больше, тогда игра будет проще, сразу скажу. В этом и фишка, что надо расставить все ящики именно так как задумано создателем уровня, если можно будет ставить их как хочешь, то сложность сразу падает.
Если ты думаешь, что эта игра - модель жизненной ситуации, тогда ты должен знать, что на складе куда сказали поставить, туда и надо ставить, нельзя поставить где хочется! Жизненная ситуация =)
По поводу активного элемента редактирования уровня, выделено по-умолчанию обрамлением при помощи тонкой линии, можешь выбрать что угодно для этого =) Делай так, как ты считаешь нужным в своей версии Сокобана, я вот вношу коррективы и описываю что было сделано дополнительно в пройденном уроке.