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

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

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

Простой WPF / WPF. Простая змейка. VIP урок. Поймай хвост!

  • На этом уроке мы узнаем, как поместить в объект эллипса координаты каждой части туловища.
    А потом сделаем проверку на "самоедство". При попытке поймать хвост игра должна заканчиваться.
    Однако хвост поймать ещё не так просто будет :)
    Придумайте, что ещё можно добавить в эту игру и сделайте это!
  • Дата отправки отчёта: 8 февраля 2018 г.
  • Задание выполнено: за 1 день 2 мин.
  • Чему научился: Сделал, чтобы змейка не могла сама себя съесть, от себя добавил количество съеденного.
  • Что было сложным: Набрать 50 очков еды
  • Оценка видео-уроку:
Отчёт от 8275 за Простой WPF  / WPF. Простая змейка. VIP урок. Поймай хвост!




Оцени работу

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

9014. --
Николай Денисов
Николай Денисов
ответить
→  Tekashnik  # Запуск пакета / WPF. Простая змейка. VIP урок. Поймай хвост! / 2018-02-09 08:51

Молодец, клёво получилось. Так держать и всё получится.


10558. --
Иван Воронин
Иван Воронин
ответить
→  Tekashnik  # Запуск пакета / WPF. Простая змейка. VIP урок. Поймай хвост! / 2018-02-09 11:40

Молодец, хорошо поработал.


  • Отчёт оценивали:
    9752chokayes+1   1Евгений Волосатов+1   17093jin+1   6452Кирилл Шмойлов+1   4395Денис+1   10167Игорь+1   16218Дмитрий+1   9014Николай Денисов+1   16533Андрей Шевченко+1   11582Родион+1   8707Володимир+1   10494Алексей В.+1   10558Иван Воронин+1   8877gorynych+1   5502Антон Кравченко0   16989Денис Корнеев+1  

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





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

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

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

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


Научился: Я научилась в эллипсе хранить текущие координаты с помощью поля Tag.
Трудности: Ничего сложного.)



Научился: Так как я изначально стал делать Змейку под Android, то реализовать методом опроса Children в Canvas. Более того, я делал Змейку под голый Xamarin без всяких фреймворков, а прямая работа с полотном там очень неудобная и требует держать часть логики в основной Activity, а часть реализовать в отдельном View, где и создаётся Canvas. Разумеется, так как делал я делать не надо, а надо использовать какой-нибудь фреймворк для создания игр, а ещё лучше Unity. Сама Змейка была у меня уже давно сделана, но я захотел доделать курс и реализовать "самоедение". Какие были сложности: 1) Из-за прямой работы с Canvas пришлось разнести логику игры отдельно в Activity и отдельно во View. По хорошему, надо в MainActivity держать меню игры, а из него вызывать отдельную Activity для игрового поля и из него управлять состоянием View с Canvas внутри. Впрочем, у меня и так получилось, что во View происходит весь расчёт картинки, который по таймеру в MainActivity перерисовывается и запрашивается для проверки съедения хвоста, выхода за границы или выигрыша. Возможно, есть более эффективный и прямой способ, и если я решусь ещё раз на подобный эксперимент, то я буду делать немного по другому 2) Для отрисовки необходимо запрашивать UIThread, иначе на экране ничего не появится, что немного похоже на WPF, так что просто надо посмотреть, как это правильно вызывается :) (Подсказка: RunOnUiThread(() => SomeMethod());) 3) Так как у Canvas нет Children, то все части змейки надо держать в какой-то своей коллекции. Я для этого использовать Dictionary, куда записывал части змейки для отрисовки с крутящимся по кругу счётчиком в качестве ключа. Конечно, можно было использовать LinkedList или поколдовать над обычным List, чтобы он работал как Queue, но это не эффективно, потому что постоянно нужно добавлять/убавлять объекты. 4) Код сложно дебажить, так как обратной связи от Visual Studio гораздо меньше, чем если просто писать под .NET и не всегда срабатывают Breakpoint, так что без опыта написания под Android придётся страдать (как мне :)). 5) Очень мало информации по тонкостям написания под Android - такое ощущение, что программисты для мобильных устройств это какая-то тайная секта! А руководства по Xamarin по своей сухости сравнимы со списком сносок в конце научных статей, а по понятности с инструкциями по сборке вида "деталь А16, вставьте в деталь Д07 и закрепите шурупом Ф71". 6) Для реализации "самоедения" я по достижении определённой длины змейки, пропуская несколько сегментов, отправлял остальные сегменты на проверку пересечения головой (получилось использовать ранее написанный метод проверки пересечения с едой), но не сразу удалось сообразить в каком направлении крутить счётчик для опроса Dictionary с сегментами тела змейки (да, жаль что нельзя обходить Queue по индексу - жизнь была бы проще). В любом случае я рад, что решил пойти сложным путём и делать Змейку именно под Android. После этого WPF уже вообще кажется по сложности чем-то для начальных классов. Так как опыта у меня мало, это был для меня серьёзный вызов и тем более приятно, что я сним справился (вообще я обычно скромный :)).
Трудности: Ответить на вопрос "Зачем я это делаю?"