Skip to content
This repository has been archived by the owner on Jun 14, 2023. It is now read-only.

Yu-Leo/snake-game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Snake game

license last release last commit commit activity

preview

Навигация

📄 Описание проекта

Классическая игра "Змейка".

Игрок управляет длинным, тонким существом, напоминающим змею, которое ползает по плоскости, собирая яблоки и избегая столкновения с собственным хвостом и стенами. Каждый раз, когда змейка съедает яблоко, она становится длиннее, что постепенно усложняет игру. Игра заканчивается, когда голова змейки сталкивается с хвостом змейки или врезается в стену.

В игре присутствует 2 вида яблок: красные и желтые. Съедание красного яблока увеличивает длину змейки на одну клетку, а съедание желтого – на две.

🔨 Как начать

  1. Установить Visual Studio 2019
  2. Скачать SFML
  3. Скачать данный репозиторий
    • Вариант 1
      1. Установить Git
      2. Клонировать репозиторий
      git clone https://github.com/Yu-Leo/snake-game.git
      cd snake-game
    • Вариант 2 - Скачать ZIP
  4. Подключить SFML к проекту (мой туториал)
  5. Скомпилировать и запустить ./snake-game/main.cpp

📷 Интерфейс

🎥 Видео-демонстрация

Превью-ссылка

Меню

Навигация по меню осуществляется при помощи стрелок вверх и вниз. Выбор пункта меню – Enter. Изменение значений в настройках – стрелками влево и вправо.

📑 Главное меню

main_menu

  • Start new game - начать новую игру.
  • Settings - переход в меню настроек.
  • Quit - выход из игры.

📑 Меню паузы

pause_menu

  • Resume new game - возобновить игру.
  • Settings - переход в меню настроек.
  • Quit - выход из игры.

🔧 Меню настроек

settings

  • Back to main menu - вернуться в главное меню / меню паузы.
  • Volume: 10 - уровень громкости внутриигровых звуков. Изменяется от 0% до 100% с шагом 5%.
  • Speed: Auto - режим скорости: автоматический (Auto) либо ручной (значение от 1 до 6).
  • Map: 2 - номер карты игрового поля (от 0 до 4).

🎮 Игровое поле

game field

snake-body-cell - тело змейки

snake-head-cell - голова змейки

apple-cell - яблоко

super-apple-cell - супер яблоко

wall-cell - стена

Управление происходит при помощи стрелок вверх, вниз, вправо, и влево на клавиатуре. При нажатии Escape во время игры активируется пауза и открывается меню паузы. При нажатии Escape в режиме паузы игра продолжается.

В случае проигрыша выводится надпись "Game over", после чего происходит переход в главное меню игры

game over

💻 Код

Техническая документация

📁 Папки

snake-game - исходный код проекта.

tests - unit-тесты.

🔧 Настройки

  1. Генерация яблок в случайных (true) или псевдо-случайных (false) местах
// main.cpp

#define RANDOM_GENERATING false

При установке false стартовое значение для псевдо-случайной генерации задаётся в строчке

// main.cpp

    srand(0); // Set seed for pseudorandom number generator
  1. Шанс генерации супер-яблока (в процентах)
// GameField.h

#define CHANCE_OF_GENERATING_SUPER_APPLE 15

☕ Тесты

Запуск:

tests

👐 Лицензия

Используете мой код - ставьте звёздочку ⭐️ на репозиторий

Автор: Yu-Leo

GNU General Public License v3.0

Полный текст в LICENSE