Недавно при разговоре возник вопрос — просто ли воплотить Тетрис. Мой собеседник считал, что сложно, но я думал иначе. Мне стало интересно, и я решил его написать.
Поскольку я хотел минимизировать время создания, мне нужен был простой набор библиотек. В памяти всплыла информация об игровом движке Love для языка Lua. И хотя до сих пор практики работы как с библиотекой, так и языком у меня не было, общее представление о них я имел.
Приблизительно через 8 часов первая играбельная версия в 300 строк была готова. Ещё где-то столько же времени я потратил на улучшение кода в сторону понятности и переиспользуемости. В результате код был разнесён по трём модулям и увеличился до 400 строк.
В целом, Love оправдал надежды на простоту, а Lua как для сценарного языка преподнёс не так уж и много неожиданностей. Но да, динамическая типизация вкупе с другими прелестями скриптовой сущности ощутимо затрудняют отлов ошибок.
Код: https://github.com/ComdivByZero/tetris
Получение и запуск:
$ git clone https://github.com/ComdivByZero/tetris.git
$ love tetris/lua/tetris
Управление - интуитивное: стрелки, p, n, esc
Продолжение — перенос на HTML5
Поскольку я хотел минимизировать время создания, мне нужен был простой набор библиотек. В памяти всплыла информация об игровом движке Love для языка Lua. И хотя до сих пор практики работы как с библиотекой, так и языком у меня не было, общее представление о них я имел.
Приблизительно через 8 часов первая играбельная версия в 300 строк была готова. Ещё где-то столько же времени я потратил на улучшение кода в сторону понятности и переиспользуемости. В результате код был разнесён по трём модулям и увеличился до 400 строк.
В целом, Love оправдал надежды на простоту, а Lua как для сценарного языка преподнёс не так уж и много неожиданностей. Но да, динамическая типизация вкупе с другими прелестями скриптовой сущности ощутимо затрудняют отлов ошибок.
Код: https://github.com/ComdivByZero/tetris
Получение и запуск:
$ git clone https://github.com/ComdivByZero/tetris.git
$ love tetris/lua/tetris
Управление - интуитивное: стрелки, p, n, esc
Продолжение — перенос на HTML5
Комментариев нет:
Отправить комментарий