Lulu,
dseligo, thanks!

It works, but certainly can be improved. 
I am missing sound, although I see in code that there should be sound.
Используется
OpenAL, и как я понимаю вы проверяли на
Windows. Попробуйте установить
OpenAL и проверить.
В дальнейшем мне надо будет делать проверку внутри программы, работает
OpenAL или нет, и если нет, то переключаться на
DXSound.
Вы можете попробовать зайти в файл конфигурации "zgl_config.cfg" и отключить определение для
Windows{$DEFINE USE_OPENAL}.
---------------------------------------------
Google translate:
OpenAL is used, and as I understand you checked on
Windows. Try installing
OpenAL and check.
In the future, I will need to check inside the program whether
OpenAL works or not, and if not, switch to
DXSound.
You can try to go to the configuration file "zgl_config.cfg" and disable the definition for
Windows{$DEFINE USE_OPENAL}.
Also, when game is started again after collision, after eating apple some square appears for split second at random place.
And 'Back' button could be removed from game screen.
P.S.: I looked at the 'glitch' which shows after eating apple. Problem is when you increase snake's length (after eating apple), coordinates in lenSnake array are not initialized for new tail addition.
Problem arises because snake is drawn before new coordinates are calculated. When program is first started, these coordinates are 0, and glitch doesn't show because you draw stone (kamen) over it.
When game is over and started again, there are some coordinates in the array already. This time when snake is enlarged the tail is drawn in the wrong position.
You could either avoid drawing longer tail immediately after eating apple with some check or you could put coordinates for new tail after each increase.
I see you commented lines 277 and 278 in game_functions.pas which does the later, you should just uncomment these lines:
// Snake.lenSnake[Snake.len].X := Snake.lenSnake[Snake.len - 1].X;
// Snake.lenSnake[Snake.len].Y := Snake.lenSnake[Snake.len - 1].Y;
Я не проверял игру на Windows и возможно из-за этого некоторые проблемы выползают. Я больше основывался на Linux, но да, я был в сомненьях, надо раскомментировать этот код или нет. Потому что я проблем не видел. Я больше занимался "Меню" и мало самой игрой.
Кнопка "Назад" висит как тестовая. Игровой экран должен занимать не всё поле и кнопка должна находиться вне поля игры и должна быть ещё дополнительная информация по игре, так что да, делать ещё много всего. )))
Благодарю за информацию и тесты!
---------------------------------
Google translate:
I haven't tested the game on Windows and maybe that's why some problems are creeping out. I was more based on Linux, but yes, I was in doubt whether I should uncomment this code or not. Because I didn't see any problems. I was more involved in the "Menu" and little in the game itself. The "Back" button hangs as a test. The game screen should not take up the entire field and the button should be outside the game field and there should be additional information about the game, so yes, there is still a lot to do. )))
Thanks for the information and tests!