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

Формула программиста
основатель — Волосатов Евгений Витольдович

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

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


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




Оцени работу

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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


  • Отчёт оценивали:
    4004Елена+1   8275Tekashnik+1   3664данила+1   8Василевская Елена0   8005Александр+1   6925Артём+1   1Евгений Витольдович+1   7645Александр Львович+1   459Сергей Сергеевич+1   5649Максим Лапшинов+1   6644valerys Nikola+1   2146Иван+1   6203Николай (nick27m)+1   1710Степан+1   6452Lik_Kirill+1   4732Sergey+1   6484Вячеслав+1   6458Илья+1   5760Мариша +1   4354Руслан+1   2639Морозов Юрий Александрович+1   24Оля+1  

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




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: двигать игрока
Трудности: перерисовывать объекты
игрок ходит по стенам. так и должно пока быть?
Трудности: как ни странно, добавление поздравительного экрана (наверно, из-за того, что уже полчетвертого;-))
очень интересно создавать настоящую игру, хотя и трудоемко. но усилия приложены не зря!