Jun 09, 2020 18:16
программерские радости. Тетрис
продолжение дневника бывшего программиста, вспоминающего программирование и изучающего новое.
несколько дней ничего не писал..
то есть писал.
но не в блог. а код.
за эти несколько дней сделал работающий прототип Тетриса.
задачка была интересной, но не такой простой, как казалось.
кстати, писал не совсем Тетрис как игру для человека-пользователя, - я писал, как сейчас модно, робота, искусственный интелект или просто программу, которая сама играет в Тетрис, принимает решения и зарабатывает очки.
что получилось?
сначала писал собственно ту часть игры, которая игра, без робота.
два раза переписывал код в творческом порыве и для оптимизации.
вчера думал над всякими decision trees, сегодня дописал, чтобы в режиме прототипа заработало все вместе: и игра, и робот.
итак:
- в стакан падают фигуры (пока только палки),
- игра идет, пока идет, заканчивается, когда стакан наполнился (и даже вбок уже не получается на верхней строчке),
- фигуры можно поворачивать,
- когда горизонталь заполнена (неважно, внизу или выше), она схлопывается вниз, а если их несколько, - то же самое,
- при этом начисляются очки,
- робот выискивает некоторые (не все) паттерны, где выгода максимальна, крутит фигуру (если нужно), двигает ее в сторону (если нужно) и бросает вниз, чтобы либо схлопнулась новая линия (или несколько), либо это приблизило к большей выгоде.
как-то так.
что можно развить?
- работает без графики, - можно было бы сделать красиво.
- пока работает с фигурами типа палка (но фреймворк позволяет добавлять новые типы фигур, поворачивать и бросать вниз без существенной переделки классов и алгоритмов),
- сейчас всего несколько стратегий выбора и принятия решений, - там масса для творчества и усиления возможностей интеллекта.
на этом пока остановлюсь, потому что цели сделать все-все-все не было.
важно было сделать
1) фреймворк, с готовностью быстрой доработки и
2) добиться работоспособного прототипа, который реализует минимальную версию базовой функциональности.
да! кому интересно, сделано все на Python.
теперь можно отдохнуть. тем более, что самоизоляцию в Москве отменили.
и-или запрограммировать что-то новенькое (уже есть несколько идей).
Удачи!
P.S. на этот раз без громких выводов или красивой морали. просто прикольный опыт и интересные впечатления.
P.P.S. кстати, на днях была годовщина выпуска первого Тетриса. забавное совпадение.
software development,
программирование,
роботы,
развитие личности,
software,
it