Тетрис на РНР

Вполне себе пятничная новость. Под впечатлением от фильма "Тетрис", энтузиаст решил написать эту игру на РНР, чтобы попрактиковаться в работе с терминалом.

Получилось неплохо, хотя на по-настоящему терминальную игру не тянет - по SSH на достаточно удалённом сервере ожидаемо мерцает.

Лично для меня код оказался интересным в плане работы с пользовательским вводом в терминале, в частности, функция readline_callback_handler_install(), которая подменяет стандартный механизм ввода. Соответственно, передав в неё пустой callback можно получить "игровой" вариант ввода, когда не требуется подтверждение через Enter. Ну и убрав блокировку потока, получаем неблокирующий ввод:

readline_callback_handler_install('', function() {});
stream_set_blocking(STDIN, false);

Теперь обращения к fgetc() будут сразу возвращать введённый символ, если он был, а скрипт продолжит выполнение.

@FanatPHP
15.08.2025 16:08 UTC
Первоисточник

Комментарии

@
15.08.2025 11:55 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
@Wesha
15.08.2025 15:01 UTC
+2

в DOS же такое было сделано, а тут какие-то скобки...

К чёрту ваш новомодный DOS! Только классика!
17.08.2025 11:44 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
17.08.2025 19:46 UTC
+1

на дворе 2025 год и нет никакого повода делать игры со скобками

@DuhaTheBest, уходи с баркаса! @Zara6502сказал!

14.09.2025 16:57 UTC
0

))

@IgnatF
15.08.2025 12:06 UTC
0

Можно на рабочем ПК думаю денвер запустить и в нем запустить. А так день два, там люди думаю добавят и внесут изменения. Тем более выходные наступают.

@FanatPHP
15.08.2025 12:23 UTC
+1

Ну, Денвер-то тут не нужен от слова совсем. Это же консольная игра, то есть достаточно скачать и распаковать зип-архив c PHP. Другое дело, что игра под виндой не запустится, поскольку использует функции, не поддерживаемые в этой ОС...

15.08.2025 15:03 UTC
0

Для этого придумали WSL

15.08.2025 15:08 UTC
+1

Сорян, не разбираюсь в виндовых прибамбасах :) Денвер - помню, было такое лет 20 назад. WSL уже не застал.

15.08.2025 21:43 UTC
0

Денвер был, давно не актуален. Его подменил другой набор, а WSL это линукс в винде. Хочешь, ставь прямо в него, хочешь через докер

16.08.2025 05:21 UTC
+2

У меня линукс прямо в линуксе :)
Но спасибо за информацию, может быть, когда-нибудь пригодится.

15.08.2025 15:05 UTC
+1

Денвер, винда о.О

Я думал сейчас люди докер используют в работе

@Metotron0
15.08.2025 18:24 UTC
0

В php встроен свой web-сервер: php -S 0.0.0.0:8888