Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

Snakegame

Snake game written in pascal

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

SnakeGame

Классическая змейка на Pascal с графикой через BGI и сборкой в Lazarus.

О проекте

Этот проект реализует аркадную игру Snake для Windows. Игра использует библиотеку Graph, хранит таблицу рекордов в текстовом файле, поддерживает бонусную еду, уровни, ускорение по мере роста счёта и ИИ-соперника, который охотится за тем же яблоком, что и игрок.

Возможности

  • Управление стрелками
  • Автоматическая змейка-соперник с отдельным счётом
  • Рост змейки при поедании еды
  • Бонусная еда с ограниченным временем жизни
  • Повышение уровня и ускорение игры
  • Сохранение лучших результатов в highscores.txt
  • Более отзывчивое управление за счёт частого опроса клавиш и буфера поворота
  • Опасные столкновения с соперником

Стек

  • Pascal
  • Lazarus / Free Pascal
  • BGI Graphics (Graph)
  • Windows API (GetAsyncKeyState, GetTickCount)

Структура проекта

text
.
|-- snakegame.lpr        # основной исходный файл
|-- snakegame.lpi        # проект Lazarus
|-- highscores.txt       # таблица рекордов
|-- EGAVGA.BGI           # BGI-драйвер для графики
|-- lib/                 # артефакты сборки Lazarus
`-- backup/              # резервные копии файлов проекта

Требования

  • Windows
  • Установленный Lazarus или Free Pascal
  • Доступная библиотека Graph
  • Файл EGAVGA.BGI рядом с исполняемым файлом или в рабочей директории проекта

Быстрый старт

Вариант 1. Запуск через Lazarus

  1. Откройте snakegame.lpi в Lazarus.
  2. Убедитесь, что проект собирается под Windows.
  3. Соберите и запустите проект через Run -> Run или клавишей F9.

Вариант 2. Сборка через Free Pascal

Если у вас настроен fpc и доступен модуль Graph, можно попробовать собрать проект из терминала:

powershell
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

Лицензия в репозитории пока не указана.