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

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

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

Нано-игры / Арканоид - Шарик и кирпичики

  • Делаем движение шарика, отскок его от стен и ракетки, а также выбивание кирпичиков.
  • Дата отправки отчёта: 8 декабря 2017 г.
  • Задание выполнено: за 17 дней 8 час.
  • Чему научился: Делал в WPF, так что научился двигать шарик высчитывая координаты и назначая новые для его положения в Canvas. Также научился пользоваться Dictionary,  в который внёс смещения для 8 углов шарика относительно его Canvas.Left и Canvas.Top с ключами по enum, чтобы не запутаться от каких углов в каких направлениях делать проверку столкновения и делал проверку столкновения по левому верхнему углу с примевлением смещения из Dictionary в зависимости от направления движения шарика.
    Ещё научился работать с углами и внёс небольшой рандомизатор отскока шарика.
  • Что было сложным: Так как я хотел попробовать сам и сделать сразу универсальный способ, то специально не смотрел урок до конца и прошёл через несколько вариантов, начиная от самого простого с углом в пределах 0-90, вычислением смещения через Sin и Cos, указанием направления через enum (отличный простой способ для отскока от границ, но требует много преобразований для проверки пересечения граней кирпичиков) и вычислением пересечения через вычисление гипотенузы через исходное положение шарика и перпендикуляра к грани, до более универсального с Sin и Cos от углов в пределах 0 +- 360 и вычислением пересечения через перемножение векторов.

    Если интересно, то архив Arkanoid.rar доступен по ссылке drive.google.com/open?id=0B3ZnPiwGG8zpSVpXdmNsWndmSGM

    Код проверки столкновений у меня там не оптимизирован, а вот реализация градиента на кирппичиках в WPF может кому-то пригодиться :)
  • Оценка видео-уроку:
  • Видеозапись: https://youtu.be/MWa-5SHSI8Y
Отчёт от 10080 за Нано-игры / Арканоид - Шарик и кирпичики


Отчёт от 10080 за Нано-игры / Арканоид - Шарик и кирпичики




Оцени работу

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

4814. --
Дмитрий
Дмитрий
ответить

8275. --
Tekashnik
Tekashnik
ответить

7119. --
Новопашин Владимир
Новопашин Владимир
ответить
→  FireWolf  # Наноигры / Арканоид - Шарик и кирпичики / 2017-12-09 09:55

Классно получилось. Для меня WPF пока темный лес.


10167. --
Игорь
Игорь
ответить
→  FireWolf  # Наноигры / Арканоид - Шарик и кирпичики / 2017-12-09 12:55

Не догнал)))


7119. --
Новопашин Владимир
Новопашин Владимир
ответить
→  Игорь  # Наноигры / Арканоид - Шарик и кирпичики / 2017-12-09 17:55

Это не тебе


  • Отчёт оценивали:
    3922Александр+1   16533Андрей Шевченко+1   16066Bodrik_torf+1   10895Danil42Russia+1   16548Hofflin0   4814Дмитрий+1   6452Кирилл Шмойлов+1   8275Tekashnik+1   16017Sergej Šugajev+1   7119Новопашин Владимир+1   11868Андрей Суслов+1   10167Игорь+1   1Евгений Волосатов+1   9096Александр Р.+1   2912Игорь+1   2146Иван+1  

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





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

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

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

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


Научился: Обрабатывать отскоки шарика от стен и кирпичиков
Трудности: Не получилось перенести количество жизней из одного уровня в другой. Пробовала сделать через глобальную переменную, но что-то тоже не дало результатов. Либо я просто неправильно делала
- Добавила возможность постановки игры на паузу путем нажатия на клавишу "P" - Добавила второй уровень, где увеличилось число кирпичиков и скорость - Добавила подсчет жизней, но не получилось перенести количество жизней из одного уровня в другой. Т.е. если на первом уровне например осталось 3 жизни, то на втором их снова становится 5. Слишком много копипаста, второй уровень фактически повторяет первый, за малым исключением. Принципиально ничего нового не добавилось в логику работы программы. Поэтому думаю, что надо как-то менять структуру программы, добавлять классы, методы, но пока не знаю как это делать


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