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

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

Микроигры / 2048 - Логика

  • На этом уроке мы реализуем класс с логикой игры.
    Далее напишем функции для смещения клеток и для их объединения.
    Ещё раз сыграем, чтобы протестировать созданную программу.
  • Дата отправки отчёта: 2 июля 2015 г.
  • Задание выполнено: за 2 час. 10 мин.
  • Чему научился: Немного приблизился к пониманию рекурсии
  • Что было сложным: Понять алгоритм, подогнать размеры
  • Комментарии: Из-за того, что я делал все в ПикчерБоксах, то пришлось динамически менять размер шрифта и его положение в зависимости от размера таблицы. Программу скорее всего буду доделывать - хочу сделать, чтобы плашки ездили при ходе, добавить счетчик очков, ну и написать бота хорошего тоже нужно (чтобы хотя бы 2048 набирал). Да, и в сравнении с моей старой программой, эта получилась гораздо элегантнее и красивее как внешне, так и с точки зрения кода - спасибо автору и его стараниям!
  • Оценка видео-уроку:
Отчёт от 4362 за Микроигры / 2048 - Логика




Оцени работу

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

2146. Иван
Иван
ответить
→  Сергей  # Микроигры / 2048 - Логика / 2015-07-02 23:43

Получилось очень красиво.


24. Оля
Оля
ответить
→  Сергей  # Микроигры / 2048 - Логика / 2015-07-02 23:37

Сергей, ух ты! А ты профи в этой игре, супер результат! И очень хорошую прокачку навыков сделал! Молодец! :)


  • Отчёт оценивали:
    5027Руслан+1   1947Denis+1  

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




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

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

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

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