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

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

Материалы мастер класса "Люди на карте"


Вебинар «Мы начинаем PHP + Yii2» начнётся через 18 час. 50 мин.

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

  • На этом уроке мы реализуем класс с логикой игры.
    Далее, напишем заглушки для функций смещения клеток
    и функцию проверки окончания игры game_over().
  • Дата отправки отчёта: 11 июля 2015 г.
  • Задание выполнено: за 2 час. 00 мин.
  • Чему научился: Глубже вникать в алгоритм программы.
  • Что было сложным: Рекурсивная функция, наверное.
  • Комментарии: Самое главное в этой программе - правильно подобрать цвета ячеек, тогда затягивает еще сильнее=)
  • Оценка видео-уроку:
Отчёт от 5575 за Микроигры / 2048 - Смещение




Оцени работу

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

24. Олюшка
Олюшка
ответить
→  Антон  # Микроигры / 2048 - Логика / 2015-07-11 20:46

Антон, мне нравится твоя цветовая палитра! Молодец! :)


1. Евгений Волосатов
Евгений Волосатов
ответить
→  Антон  # Микроигры / 2048 - Логика / 2015-07-11 10:37

Да, Антон. Это очень важно.
Но после того, как программа правильно заработала.



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




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

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

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

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


Научился: Delegate, dictionary, повторил функции нажатия клавиш с использованием метода KeyDown.
Достойный пример для МиниИгр.


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