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

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

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

Бинарная жизнь / VIP урок. Игра Жизнь

  • Я познакомился с этой игрой в дестве, когда даже компьютеров не было, играть в неё можно было только на листке бумаги в клетку. На уроке я расскажу правила игры, потом мы создадим класс по реализации логики игры, затем, используя метод динамического программирования, я покажу, как можно в 10 разу ускорить расчёт нового поколения (это по желанию), и, под конец, подключив созданный класс мы напишем саму игру.

    Продолжительность урока 1 час 22 минуты,
    Это программа - отличный тренажёр для начинающих программистов и хорошая программа в копилку вашего портфолио.
  • Дата отправки отчёта: 9 сентября 2018 г.
  • Задание выполнено: за 8 дней 24 мин.
  • Чему научился: Не смотрел часть видео связанную с отрисовкой, т.к. там юзается winForm, у меня вообще другая технология, пилил на kotlin под javafx. поработал с canvas'ом. Попользовался SimpleBooleanProperty - пригодилось для трека нажатых кнопок и обработки событий связанных с ними. Заюзал рефлексию для получения списка цветов из класса javafx.scene.paint.Color. Узнал про FadeTransition и затухающую анимацию (юзал для текста уведомлений о изменении размера поля, интервала отрисовки, установки в паузу). Не знаю, как реализована визуализация на winForms была, от себя добавил пару фишек:
    - изменение цвета на случайный по нажатию на Q
    - изменение цвета на предыдущий (пока есть) при нажатии на Shift + Q
    - изменение типа клеток с квадратов на кружочки и обратно при нажатии на W
    - паузу при нажатии на Space
    - уменьшение интервала репродукции - ускорение анимации при нажатии на →
    - увеличение интервала репродукции - ускорение анимации при нажатии на ←
    - увеличение размера клеток при нажатии на ↑
    - уменьшение размера клеток при нажатии на ↓
    - перемещение по полю (если имеется за границами окна программы) при зажатой клавише ctrl и движении мыши с зажатой ЛКМ
    - добавил очистку поля при нажатии Ctrl + L
    - добавил сплеш при рисовании на поле - заполнение рандомных клеток в радиусе 5 клеток от нажатия при зажатой клавише Shift и нажатии ЛКМ
    Много всякого почитал пока делал, stackoverflow прям помогал очень временами
  • Что было сложным: В самом начале отрисовки возникала проблема, когда программа зависала после нескольких итерация без каких-либо исключений и вообще не реагировала на действия, пошуршув немного узнал, что дело в отрисовке элементов, в javaFx они должны рисоваться только в JavaFx Platform Thread, похоже, что получалось так, что временами итерации отрисовки приходились на другие потоки и Platform.runLater выручил. Еще сложно было разобраться с координатами при изменении размера окна (чтобы "камера" не двигалась, пока не достигнет какого-нибудь края) и с перемещением "камеры" по полю если есть куда - тоже было сложновато. но потом нарисовал на листике, пометил все переменные и координаты что и как должно считаться - и оказалось, что всё намного проще чем было в моей голове)
    Классный курс, не думал, что можно столько всего выучить за такую простую игру)
  • Оценка видео-уроку:
  • Видеозапись: https://youtu.be/rilOVTw6C4o
Отчёт от 986 за Бинарная жизнь / VIP урок. Игра Жизнь


Отчёт от 986 за Бинарная жизнь / VIP урок. Игра Жизнь




Оцени работу

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

3922. --
Александр
Александр
ответить
→  Антон Лазарец  # Бинарная жизнь / VIP урок. Игра Жизнь / 2018-09-09 00:13

Молодец, Антон! Это что-то невероятное, можно смотреть и смотреть не отрываясь на это чудо! Немного с делами разгребусь, обязательно тоже поэкспериментирую с этой штукой. Но, ты молодец, ещё и на Котлине прошёл этот курс, а там наверно ещё много своих интересных фишек удалось изучить. Желаю успехов в дальнейших экспериментах и в изучении программирования!


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


18493. --
Evgenii Kudriavtcev
Evgenii Kudriavtcev
ответить
→  Антон Лазарец  # Бинарная жизнь / VIP урок. Игра Жизнь / 2018-09-09 07:21

Антон, поздравляю с завершением данного курса!
Насчет видеоролика - действительно впечатляет масштабностью проделанной работы (читал об добавления новых функций вне самого курса). Про то, что Интернет помогает в поисках решения или двигает в "правильное русло" действительно так. Сейчас уже удивляюсь, как раньше первооткрыватели-программисты все это создавали )
PS: сам застал только книги, которые писали не так много, но сами алгоритмы найти можно было (потом уже переделывалось под свой ЯП)...


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Антон Лазарец  # Бинарная жизнь / VIP урок. Игра Жизнь / 2018-09-09 09:30

"Рука Бога" постоянно вносит драйв в жизнь бинарных существ :)


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Антон Лазарец  # Бинарная жизнь / VIP урок. Игра Жизнь / 2018-09-09 09:34

Антон, пришли, пожалуйста, исходный код программы.
Хотелось бы создать курс на Java по твоим наработкам.


986. --
Антон Лазарец
Антон Лазарец
ответить
→  Евгений Волосатов  # Бинарная жизнь / VIP урок. Игра Жизнь / 2018-09-09 12:53

Хорошо, на гит залью и ссылку в телегу кину)


9913. --
vip
vip
ответить
→  Антон Лазарец  # Бинарная жизнь / VIP урок. Игра Жизнь / 2018-09-10 11:29

Да впечатляет!


  • Отчёт оценивали:
    11019Trira+1   3922Александр+1   4814Дмитрий+1   1295Дмитрий Че+1   17606Виктор+1   9752chokayes+1   18493Evgenii Kudriavtcev+1   9014Николай Денисов+1   16396Денис+1   7119Новопашин Владимир+1   19525Александр Балбашов+1   19022Олег Чудновский+1   1Евгений Волосатов+1   17947Dmitry Sinitsin+1   7652Петя+1   6452Кирилл Шмойлов+1   16218Дмитрий+1   9913vip+1   16548Hofflin+1  

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





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

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

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

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


Научился: Написал с помощью преподавателя игру "Жизнь", о которой много слышал! Узнал о принципах и использовании динамического программирования в решении задач.
Трудности: В основном, все понятно. Алгоритм динамического программирования в применении к данной задаче понял на 80%.
Большое спасибо! Замечаний нет. Жаль, что урок такой длинный – хорошо бы разделить его на 2 части.


Научился: Классный урок! Разобрал алгоритм поиска в значения в соседних координатах
Трудности: Разобраться с функцией Around2