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

Формула программиста
основатель — Волосатов Евгений Витольдович
Большой Новогодний подарок от Игромистра
Безденежный доступ к видеокурсам за Мегахеши
Вебинар «Предновогодние обещания» начнётся через 1  день 9 час. 53 мин.

Микроигры / 2048 - Смещение

  • На этом уроке мы реализуем класс с логикой игры.
    Далее, напишем заглушки для функций смещения клеток
    и функцию проверки окончания игры game_over().
  • Дата отправки отчёта: 8 июля 2015 г.
  • Задание выполнено: за 2 час. 30 мин.
  • Чему научился: Еще раз повторил ее величество РЕКУРСИЮ и классы. Научился грабить designer'а для динамического создания элементов формы. Уже сходу была понятна ВСЯ логика программы, так что опыт потихоньку растет - ура!
  • Что было сложным: Да как-то ничего не вызвало затруднения.
  • Комментарии: Просто отличный урок - мастерский) Все очень логично, под каждый финт программы сразу сделан был скелет функций. Ничего лишнего, элегантное решение. Брюки превращаются!) Восторг! Спасибо)
  • Оценка видео-уроку:
Отчёт от 1295 за Микроигры / 2048 - Смещение




Оцени работу

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

1. Евгений Волосатов
Евгений Волосатов
ответить
→  Дмитрий Че  # Микроигры / 2048 - Логика / 2015-07-08 14:00

Дима, спасибо.


24. Олюшка
Олюшка
ответить
→  Дмитрий Че  # Микроигры / 2048 - Логика / 2015-07-08 13:53

Дмитрий, я очень рада твоим ростом и прогрессом, работа очень хорошая получилась! Молодец! :)



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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Delegate, dictionary, повторил функции нажатия клавиш с использованием метода KeyDown.
Достойный пример для МиниИгр.
Научился: использовать рекурсию
Трудности: переписать логику игры
Мне сразу не понравилось разделение передвижения плашек и их объединения. У меня изначально был другой алгоритм в голове, который я и реализовал. Если при движении влево по уроку мы шли справа налево, то я же шел слева направо. Мне так показалось логичнее. Полный алгоритм можно увидеть на скриншоте. Не претендую на оптимальность, но хотя бы не вызываются лишний раз функции перемещения (как мне кажется). Перерисовка tableLayoutPanel происходила очень долго (Изначально думал, что это у меня комп слабый). Оказалось, что это из-за свойства CellBorderStyle. Когда поставил его в положение None, игра просто полетела. Остаточное моргание формы частично решал еще в Сокобане. Перед вызовом функции логики убирал видимость tableLayoutPanel, а после всех передвижений, возвращал обратно. Осталось одно общее мигание всех лейблов на долю секунды, но оно решилось установкой свойства DoubleBuffered. Визуально больше ничего не моргает. В игру от себя добавил подсчет очков (по правилам с википедии). А также возможность возврата на 1 шаг назад (сохранение предыдущего состояния матрицы map, и перерисовка значений в лейблах по ней).