Snakegame
Snake game written in pascal
- Active · last change 3-27-2026
- ★ 1 on GitHub
README
SnakeGame
Классическая змейка на Pascal с графикой через BGI и сборкой в Lazarus.
О проекте
Этот проект реализует аркадную игру Snake для Windows. Игра использует библиотеку Graph, хранит таблицу рекордов в текстовом файле, поддерживает бонусную еду, уровни, ускорение по мере роста счёта и ИИ-соперника, который охотится за тем же яблоком, что и игрок.
Возможности
- Управление стрелками
- Автоматическая змейка-соперник с отдельным счётом
- Рост змейки при поедании еды
- Бонусная еда с ограниченным временем жизни
- Повышение уровня и ускорение игры
- Сохранение лучших результатов в
highscores.txt - Более отзывчивое управление за счёт частого опроса клавиш и буфера поворота
- Опасные столкновения с соперником
Стек
- Pascal
- Lazarus / Free Pascal
- BGI Graphics (
Graph) - Windows API (
GetAsyncKeyState,GetTickCount)
Структура проекта
.
|-- snakegame.lpr # основной исходный файл
|-- snakegame.lpi # проект Lazarus
|-- highscores.txt # таблица рекордов
|-- EGAVGA.BGI # BGI-драйвер для графики
|-- lib/ # артефакты сборки Lazarus
`-- backup/ # резервные копии файлов проектаТребования
- Windows
- Установленный Lazarus или Free Pascal
- Доступная библиотека
Graph - Файл
EGAVGA.BGIрядом с исполняемым файлом или в рабочей директории проекта
Быстрый старт
Вариант 1. Запуск через Lazarus
- Откройте
snakegame.lpiв Lazarus. - Убедитесь, что проект собирается под Windows.
- Соберите и запустите проект через
Run->Runили клавишейF9.
Вариант 2. Сборка через Free Pascal
Если у вас настроен fpc и доступен модуль Graph, можно попробовать собрать проект из терминала:
fpc snakegame.lprЕсли компилятор не находит Graph или графический драйвер, используйте Lazarus: для этого проекта это самый простой путь.
Управление
Up/Down/Left/Right— движение змейки игрокаR— рестарт после завершения раундаEsc— выход после завершения раунда
Правила игры
- Обычная еда даёт
10очков. - Бонусная еда даёт
30очков. - Игрок и соперник соревнуются за одно и то же яблоко.
- У игрока и соперника раздельный счёт.
- Новый уровень повышается каждые
50очков. - С ростом уровня уменьшается интервал движения игрока и соперника.
- Раунд заканчивается, если игрок или соперник сталкиваются и проигрывают.
- После завершения игры на экране показывается, кто именно проиграл или кто победил.
- Матч также завершается, когда одна из змеек достигает
1000очков.
Хранение рекордов
Лучшие результаты сохраняются в файле highscores.txt. По умолчанию хранится до 5 результатов.
В таблицу рекордов сохраняется только счёт игрока.
Возможные проблемы
Ошибка графики при запуске
Проверьте:
- что
EGAVGA.BGIнаходится в рабочей директории; - что среда Lazarus/Free Pascal собрана с поддержкой
Graph; - что проект запускается под Windows.
Компилятор не находит Graph
Это зависит от вашей установки Free Pascal. В таком случае лучше открывать и собирать проект через Lazarus, где зависимости проекта обычно настраиваются проще.
Планы по развитию
- Экран стартового меню
- Пауза и перезапуск без перезапуска приложения
- Несколько уровней сложности
- Улучшение визуального оформления
- Звуковые эффекты
- Более умный алгоритм движения для змейки-соперника
Contributing
Pull request'ы и улучшения приветствуются. Если хотите развивать проект, лучше оформлять изменения небольшими и изолированными шагами: отдельно геймплей, отдельно UI, отдельно рефакторинг.
License
Лицензия в репозитории пока не указана.

