Вполне себе пятничная новость. Под впечатлением от фильма "Тетрис", энтузиаст решил написать эту игру на РНР, чтобы попрактиковаться в работе с терминалом.
Получилось неплохо, хотя на по-настоящему терминальную игру не тянет - по SSH на достаточно удалённом сервере ожидаемо мерцает.
Лично для меня код оказался интересным в плане работы с пользовательским вводом в терминале, в частности, функция readline_callback_handler_install(), которая подменяет стандартный механизм ввода. Соответственно, передав в неё пустой callback можно получить "игровой" вариант ввода, когда не требуется подтверждение через Enter. Ну и убрав блокировку потока, получаем неблокирующий ввод:readline_callback_handler_install('', function() {}); stream_set_blocking(STDIN, false);
Теперь обращения к fgetc() будут сразу возвращать введённый символ, если он был, а скрипт продолжит выполнение.
Источник новости: habr.com