Теперь мы создадим класс логики игры Game, используя который, мы реализуем управление человечком курсорными клавишами клавиатуры. А также сделаем переход на следующий уровень.
Дата отправки отчёта:
7 января 2016 г.
Задание выполнено: за
2 час. 40 мин.
Чему научился:
Идея использовать два массива: статичных и динамичных объектов.
Что было сложным:
Насколько знаю, в C# операция присваивания для объектов означает просто копирование ссылки. Я привык (привет, C++ где бОльший контроль над объектами), что если адекватный автор неполиморфного класса разрешил и перегрузил конструктор копирования и оператор присваивания по lvalue reference, то при копировании выполняется deep copy содержимого. Напоролся на разницу в семантике двух языков, в своем написанном коде минут 15 думал, почему же данные затираются. Все работает, а данные кривые. Опять-таки, помог отладчик. Наверняка в C# есть встроенные возможности по копированию, deep или shallow, пока что не сталкивался и не изучал, двоечник)
Комментарии:
Мне понравилась идея использовать два массива, один для неподвижных объектов, другой для подвижных. Написал все по уроку, понравился класс Game, все аккуратно. Уже в конце урока пошли дополнения, разные варианты, с чата предлагали решение проверки на доступность уровней. Код проверки, на мой взгляд, оказался не в том месте, этим должен заниматься класс Game, поэтому переделывал по себя. Попутно взялся за свой класс загрузчика уровня, наконец, довел его до состояния, с которым мне удобнее работать. Позже изменю метод save, он у меня не ахти - длинный, некрасивый и дублирует код. Все-таки здорово, когда уже есть функционал, которым можно крутить как угодно. Писать с нуля сложнее, надо много думать об интерфейсе клиента и прочее. Интерфейс игры пока что не менял, есть где вести доработки, например фон Белки, когда она стоит на плитке-кладовке. Данила предложил подумать над плитками. Ждем разбора полетов на следующем вебинаре) Игра понравилась, здорово, спасибо Евгений Витольдович, база отличная, теперь идем дальше, к улучшениям и триксам)
Архив проекта:Ссылка доступна после самостоятельного выполнения этого урока
Хорошо двигаешься, молодец. Да, в C++ большой контроль, можно обращаться к памяти напрямую, но к хорошему это не приводит. Может не в тему, но все-равно интересное видео www.youtube.com/watch?v=MO-YxN8G-1A
а я и не зная с++, все ошибаюсь. Пишу иногда array1 = array2 и тоже потом ищу ошибку :) Да, массивы ссылочный тип. одномерные массивы удобно копировать с методом CopyTo(); еще знаю про такой базовый метод Clone() . все идёт от интерфейса ICloneable Но там нюансы :) буду изучать
Всегда интересно читать ваши отчеты! А про белку - можно в самой картинке сделать прозрачный фон и сохранить в png. Тогда будет всегда виден фон под белкой.
Данила, посмотрел видео. Не совсем согласен с тем, что он сказал. На C++ тоже можно писать код, используя все указанные парадигмы, просто полученное решение не так явно выражено в коде и прямо поддерживается языком, как в C#, его сложнее понять, потому что применяются трюки. Например, даже на старом-добром языке С можно писать ООП программы (имитируя классы), но это сложно, требует дисциплины. В остальном согласен, хорошо объяснил. C# удобный, продуманный, нравится его тесная интеграция с библиотекой. Спасибо за видео, интересный ресурс)
Евгений Витольдович просто предложил добавить новую картинку - "Белка стоит на кладовке", я тоже к этому решению шел. Можно применить ваше решение, но тогда код обработки усложнится, появятся условия наложения картинки на картинку. Спасибо)
Научился: Да много чему..
Интересная реализация с двумя матрицами - map и top, очень понравилось. Трудности: Самое сложное - переосмыслить это еще раз. Отличный урок!
Научился: Прошу простить мою вспыльчивость. Времени реально очень мало и терять его в пустую непозволительная роскошь. Трудности: Срастить два проекта.