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

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

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

Сокобан / Сокобан - Игра - Управление

  • Теперь мы создадим класс логики игры Game,
    используя который, мы реализуем управление человечком
    курсорными клавишами клавиатуры.
    А также сделаем переход на следующий уровень.
  • Дата отправки отчёта: 7 января 2016 г.
  • Задание выполнено: за 2 час. 40 мин.
  • Чему научился: Идея использовать два массива: статичных и динамичных объектов.
  • Что было сложным: Насколько знаю, в C# операция присваивания для объектов означает просто копирование ссылки. Я привык (привет, C++ где бОльший контроль над объектами), что если адекватный автор неполиморфного класса разрешил и перегрузил конструктор копирования и оператор присваивания по lvalue reference, то при копировании выполняется deep copy содержимого. Напоролся на разницу в семантике двух языков, в своем написанном коде минут 15 думал, почему же данные затираются. Все работает, а данные кривые. Опять-таки, помог отладчик. Наверняка в C# есть встроенные возможности по копированию, deep или shallow, пока что не сталкивался и не изучал, двоечник)
  • Комментарии: Мне понравилась идея использовать два массива, один для неподвижных объектов, другой для подвижных. Написал все по уроку, понравился класс Game, все аккуратно. Уже в конце урока пошли дополнения, разные варианты, с чата предлагали решение проверки на доступность уровней. Код проверки, на мой взгляд, оказался не в том месте, этим должен заниматься класс Game, поэтому переделывал по себя. Попутно взялся за свой класс загрузчика уровня, наконец, довел его до состояния, с которым мне удобнее работать. Позже изменю метод save, он у меня не ахти - длинный, некрасивый и дублирует код. Все-таки здорово, когда уже есть функционал, которым можно крутить как угодно. Писать с нуля сложнее, надо много думать об интерфейсе клиента и прочее.
    Интерфейс игры пока что не менял, есть где вести доработки, например фон Белки, когда она стоит на плитке-кладовке. Данила предложил подумать над плитками. Ждем разбора полетов на следующем вебинаре)
    Игра понравилась, здорово, спасибо Евгений Витольдович, база отличная, теперь идем дальше, к улучшениям и триксам)
  • Архив проекта: Ссылка доступна после самостоятельного выполнения этого урока
  • Оценка видео-уроку:
Отчёт от 7276 за Сокобан / Сокобан - Игра - Управление


Отчёт от 7276 за Сокобан / Сокобан - Игра - Управление




Оцени работу

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

3664. --
данила
данила
ответить
→  Ильшат  # Игра Сокобан / Сокобан - Игра - Управление / 2016-01-07 09:32

Хорошо двигаешься, молодец. Да, в C++ большой контроль, можно обращаться к памяти напрямую, но к хорошему это не приводит. Может не в тему, но все-равно интересное видео www.youtube.com/watch?v=MO-YxN8G-1A


8005. --
Александр
Александр
ответить
→  Ильшат  # Игра Сокобан / Сокобан - Игра - Управление / 2016-01-07 09:57

а я и не зная с++, все ошибаюсь. Пишу иногда array1 = array2 и тоже потом ищу ошибку :)  Да, массивы ссылочный тип.
одномерные массивы удобно копировать с методом CopyTo();
еще знаю про такой базовый метод Clone() . все идёт от интерфейса ICloneable
Но там нюансы :) буду изучать


2146. --
Иван
Иван
ответить
→  Ильшат  # Игра Сокобан / Сокобан - Игра - Управление / 2016-01-07 15:18

Всегда интересно читать ваши отчеты! А про белку - можно в самой картинке сделать прозрачный фон и сохранить в png. Тогда будет всегда виден фон под белкой.


7276. --
Ильшат
Ильшат
ответить
→  данила  # Игра Сокобан / Сокобан - Игра - Управление / 2016-01-07 16:56

Данила, посмотрел видео. Не совсем согласен с тем, что он сказал. На C++ тоже можно писать код, используя все указанные парадигмы, просто полученное решение не так явно выражено в коде и прямо поддерживается языком, как в C#, его сложнее понять, потому что применяются трюки. Например, даже на старом-добром языке С можно писать ООП программы (имитируя классы), но это сложно, требует дисциплины.
В остальном согласен, хорошо объяснил. C# удобный, продуманный, нравится его тесная интеграция с библиотекой. Спасибо за видео, интересный ресурс)


7276. --
Ильшат
Ильшат
ответить
→  Александр  # Игра Сокобан / Сокобан - Игра - Управление / 2016-01-07 16:58

Да, Александр, спасибо, мельком читал про CopyTo и интерфейсы для копирования, надо изучать)


7276. --
Ильшат
Ильшат
ответить
→  Иван  # Игра Сокобан / Сокобан - Игра - Управление / 2016-01-07 17:00

Евгений Витольдович просто предложил добавить новую картинку - "Белка стоит на кладовке", я тоже к этому решению шел. Можно применить ваше решение, но тогда код обработки усложнится, появятся условия наложения картинки на картинку. Спасибо)


6458. --
Александр
Александр
ответить
→  Ильшат  # Игра Сокобан / Сокобан - Игра - Управление / 2016-01-07 19:27

может сетку убрать ещё, хм? )


7276. --
Ильшат
Ильшат
ответить
→  Александр  # Игра Сокобан / Сокобан - Игра - Управление / 2016-01-07 20:36

Да, Илья, Данила предложил что-нибудь придумать с сеткой, позже займусь)


24. --
Олюшка
Олюшка
ответить
→  Ильшат  # Игра Сокобан / Сокобан - Игра - Управление / 2016-01-07 22:34

Ильшат, отличник ты наш!!! Молодец! Я радуюсь твоей работе! :)


7276. --
Ильшат
Ильшат
ответить
→  Олюшка  # Игра Сокобан / Сокобан - Игра - Управление / 2016-01-08 01:33

Спасибо, Оля)



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





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

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

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

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


Научился: Да много чему.. Интересная реализация с двумя матрицами - map и top, очень понравилось.
Трудности: Самое сложное - переосмыслить это еще раз.
Отличный урок!


Научился: Прошу простить мою вспыльчивость. Времени реально очень мало и терять его в пустую непозволительная роскошь.
Трудности: Срастить два проекта.