Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Змейка (C + ncurses)

Классическая игра «Змейка», реализованная на C с использованием библиотеки ncurses. Управляйте змейкой, ешьте яблоки и избегайте столкновений со стенами и собственным хвостом.

✨ Возможности

  • Отрисовка в терминале через ncurses
  • Плавное движение змейки (стрелки или WASD)
  • Подсчёт очков
  • Пауза (клавиша p)
  • Экран «Игра окончена» с финальным счётом
  • Рост змейки после поедания яблока
  • Размер поля: 20×20
  • Обработка столкновений со стенами

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

.
├── Makefile
├── main.c
├── source/
│   ├── simple_list.c       # Двусвязный список для тела змейки
│   ├── snake_graphics.c    # Функции рисования
│   ├── snake_input.c       # Обработка ввода с клавиатуры
│   └── snake_logic.c       # Основная логика игры
├── include/
│   ├── enums.h             # Перечисления (Status, Cells, Move)
│   ├── data_types.h        # Структуры (Snake, Game, Apple, List...)
│   ├── simple_list.h
│   ├── snake_graphics.h
│   ├── snake_input.h
│   └── snake_logic.h
└── README.md

🛠️ Сборка и запуск

Зависимости

  • Библиотека ncurses (разработочная версия)
  • GCC (или любой C99-совместимый компилятор)

Установка ncurses (если отсутствует)

  • Debian/Ubuntu:
    sudo apt install libncurses-dev
  • Arch Linux:
    sudo pacman -S ncurses
  • macOS (через Homebrew):
    brew install ncurses
  • Windows (рекомендуется WSL или Cygwin)

Компиляция

Просто выполните make в корневой директории проекта:

make

Будет создан исполняемый файл game.

Запуск

./game

Очистка

make clean

🎮 Как играть

  • Управление:
    / a – влево
    / w – вверх
    / d – вправо
    / s – вниз

  • Пауза: нажмите p (повторное нажатие возобновляет игру)

  • Цель:
    Съедайте яблоко (@), чтобы увеличить счёт на 10 очков. Каждое яблоко делает змейку длиннее. Избегайте столкновения с границей (#) и собственным телом.

  • Конец игры:
    При столкновении появляется надпись «GAME OVER!» и финальный счёт. Нажмите любую клавишу для выхода.

🔧 Особенности реализации

  • Тело змейки хранится в двусвязном списке (голова = первый элемент, хвост = последний).
  • Игровое поле — двумерный массив enum Cells (Space, Border, Apple, Snake).
  • Движение обновляется с фиксированной задержкой 320 мс (скорость не увеличивается).
  • Новое яблоко не появляется на теле змейки.
  • Используется stdscr (стандартный экран ncurses) — без отдельных окон.

🧪 Возможные улучшения

  • Увеличение скорости после каждого яблока
  • Сохранение рекорда
  • Препятствия или разные уровни
  • Более отзывчивое управление без блокировки движения
  • Цвета и улучшенная графика

📄 Лицензия

Этот проект можно свободно использовать и изменять в образовательных целях.


Автор: Марушко Максим
Создан: 2024
Язык: C (C99) + ncurses

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages