Console Snake
Lei Mao
Introduction
The Console Snake game with background music was implemented using C++ and the libraries libncurses
and libcplayer
. libncurses
(new curses) is a programming library providing an application programming interface (API) that allows the programmer to write text-based user interfaces in a terminal-independent manner. libcplayer
(console player) is a C++ library for playing background audios asynchronously in C++ programs.
Dependencies
- CMake 3.13.0+
- libncurses 6.1+
libsndfile
libasound
libcplayer
Files
.
โโโ audios
โย ย โโโ bgm.wav
โโโ CMakeLists.txt
โโโ demo
โย ย โโโ console_snake_demo.gif
โย ย โโโ console_snake_demo.mp4
โย ย โโโ mp42gif.sh
โโโ LICENSE.md
โโโ modules
โย ย โโโ Console-Player
โโโ README.md
โโโ src
โโโ CMakeLists.txt
โโโ game.cpp
โโโ game.h
โโโ main.cpp
โโโ snake.cpp
โโโ snake.h
Installation
Build Docker Image
$ docker build -f docker/snake.Dockerfile --no-cache --tag=snake:0.0.1 .
Run Docker Container
$ docker run -it --rm --device /dev/snd -v $(pwd):/mnt snake:0.0.1
Install CMake
Check out the installation guide from Kitware.
Install Dependencies
$ sudo apt-get install libncurses-dev libsndfile-dev libasound2-dev
Install Game
Because the installation requires to use git submodule
, please git clone
instead of download
the repository.
$ git clone https://github.com/leimao/Console-Snake.git
$ cd Console-Snake
$ git submodule update --init --recursive
$ cmake -B build
$ cmake --build build --target install --config Release
Usages
Game Rules
Control the snake to eat food as much as possible. You get one point for every food your snake eat. The level of difficulty would increase every 5 points you get.
Play Game Using Default BGM
$ cd bin/
$ ./main
Play Game Using Custom BGM
The user is also allowed to use custom BGMs.
$ cd bin/
$ ./main [bgm_sound_file]
Currently the game only supports wav
, ogg
, and flac
audio formats.
Demo
For full demo with sound, please click the demo image and watch the YouTube video.
Feedbacks
If you have encountered any bug, or have any suggestions for improvements, please open an issue ticket in the repository.
References
To-Do List
- Add leader board
- Add background music
- Allow user to save player name to the leader board