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

Commit

Permalink
Merge branch 'v3.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
Yu-Leo committed Aug 4, 2021
2 parents 5949fcd + 3c8b4ac commit 75d5129
Show file tree
Hide file tree
Showing 47 changed files with 699 additions and 229 deletions.
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,9 @@
Debug/
Release/

docs/*.docx
docs/*.docx

docs/social-preview.png
snake-game/settings.txt

docs/demo.mp4
52 changes: 41 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@

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

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

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


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

<a id="chapter-1"></a>

Expand All @@ -31,16 +35,21 @@
cd snake-game
```
* Вариант 2 - [Скачать ZIP](https://github.com/Yu-Leo/snake-game/archive/refs/heads/master.zip)
4. [Подключить SFML к проекту](https://www.sfml-dev.org/tutorials/2.5/start-vc.php)
4. Подключить SFML к проекту ([как это сделать](https://www.sfml-dev.org/tutorials/2.5/start-vc.php))
5. Скомпилировать и запустить `./snake-game/main.cpp`

<a id="chapter-2"></a>

## :camera: Интерфейс

### :movie_camera: Видео-демонстрация
[![Превью-ссылка](./docs/img/demo.jpg)](https://disk.yandex.ru/i/PuxMgxuU7IuQ9w)


### Меню

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


#### :bookmark_tabs: Главное меню
![main_menu](./docs/img/main-menu.jpg)
Expand All @@ -62,22 +71,28 @@

![settings](./docs/img/settings-menu.jpg)

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


### :video_game: Игровое поле

![game field](./docs/img/game-field.jpg)

![snake-cell](./snake-game/img/textures/snake.png) - тело змейки
![snake-body-cell](./snake-game/img/textures/snake_body.png) - тело змейки

![snake-head-cell](./snake-game/img/textures/snake_head.png) - голова змейки

![apple-cell](./snake-game/img/textures/apple.png) - яблоко

![super-apple-cell](./snake-game/img/textures/super_apple.png) - супер яблоко

![wall-cell](./snake-game/img/textures/wall.png) - стена


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

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

Expand All @@ -91,20 +106,35 @@
[Техническая документация](./docs/technical-documentation.pdf)

### :file_folder: Папки
**snake-game** - папка проекта с исходным кодом.
**snake-game** - исходный код проекта.

**tests** - папка проекта с unit-тестами.
**tests** - unit-тесты.

### :wrench: Настройки


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

При установке `false` стартовое значение для псевдо-случайной генерации задаётся в строчке
```cpp
// main.cpp
srand(0); // Set seed for pseudorandom number generator
```

2. Шанс генерации супер-яблока (в процентах)

```cpp
// GameField.h
#define CHANCE_OF_GENERATING_SUPER_APPLE 15
```

### :coffee: Тесты

Запуск:
Expand Down
1 change: 1 addition & 0 deletions docs/dependency-diagram.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<mxfile host="app.diagrams.net" modified="2021-08-04T11:31:53.748Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36" etag="4ksGP_cu9wVnvtI9Ixzw" version="14.9.4" type="device"><diagram id="df-srQ5kwh-tbFeSWbxu" name="Page-1">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</diagram></mxfile>
Binary file added docs/dependency-diagram.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/dependency-diagram.pdf
Binary file not shown.
Binary file added docs/img/demo.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/img/game-field.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/img/game-over.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/img/main-menu.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/img/pause-menu.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/img/settings-menu.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/technical-documentation.pdf
Binary file not shown.
Loading

0 comments on commit 75d5129

Please sign in to comment.