nSnake is a replica of the most popular old classic snake game that was developed using ncurses C library by Alexandre Dantas. The game can be played at command-line with textual interface in almost all GNU/Linux distributions.
The game is highly customizable and includes gameplay modes, keybindings, and even the GUI-like appearance of the application. There is only one difficulty, that you will have to compile it from source, unless you’re using Arch Linux system.
Features
- Clean GUI-like interface with nifty animations.
- Two games modes, with speed controls.
- Customizable gameplay, appearance and keybindings.
Install nSnake Old Classic Snake Game in Linux
A nSnake is available for almost all modern Linux distributions. In Ubuntu and other similar distributions it can be easily installed using apt-get command via PPA’s, but you will get version 1.5.
But, if you’re looking for a most recent version (i.e. 2.0.0), then you will need to compile it from source. So, here in this article we’re going to see how to compile the game in Ubuntu and Red Hat based systems.
Go to the official nSanke site and download the latest source tarball (i.e version 2.0.0) using below link.
Alternatively, we can also do a wget to download most recent source tarball.
# wget http://kaz.dl.sourceforge.net/project/nsnake/GNU-Linux/nsnake-2.0.0.tar.gz
Before compiling, make sure we’ve the ‘ncurses dev‘ installed on our system. To get it, simple use the following command.
$ sudo apt-get install libncurses5-dev [On Ubuntu based systems]
$ sudo yum install ncurses ncurses-devel [On Red Hat based systems]
Next, extract downloaded package and compile it as shown below.
$ tar -xvf nsnake-2.0.0.tar.gz $ cd nsnake-2.0.0 $ make $ sudo make install
By default, ‘make install‘ command installs the packages under following directories.
/usr/games/ Executable file ~/.local/share/nsnake/ Settings and Score files
But you can also define a custom directory for the installation. For example, the following ‘make install‘ will install packages under ‘/home/tecmint‘ directory.
# make install DESTDIR=/home/tecmint
How do I Play nSnake game
The instructions are the same of any snake game. You manage a hungry snake and the mission is to eat as many fruits (means $) you can. Each eaten fruit boosts it’s size by two units. When snake collides with itself or walls the game ends.
There are currently, two modes: with borders and without borders. The mission is to earn points by eating as many fruits as you can to create biggest score.
You can start the game using the following command in the terminal.
# nsnake
Once, the game starts in the terminal, you will see a screen similar to below.
While starting game, you can On/Off borders as well as you can choose the speed of the game level. Snake can be controlled using arrow keys.
Game Controls
The game can be controlled and customizable using the following keybindings.
Arrow Keys Moves the snake q Quits the game at any time p Pauses/Unpauses the game h Show help during game m Return to Main Menu
Uninstall Game
If you’ve installed the game via apt-get, you can simple use the apt-get command to remove it completely from the system.
$ sudo apt-get remove nsnake
If incase, you’ve compiled from source, you need to run the following command from the source installation directory to remove the files from the system.
# make uninstall
If you’ve specified a custom directory for installation, then define a path of installation directory along with `make` to uninstall properly.
# make uninstall DESTDIR=path-to-directory/
What’s your opinion about nSnake? Have you ever played it before? What other similar terminal games you play? Do share your views via our comment section.
how do i install on fedora 20
Fedora is Red Hat based distro, so the steps given in the article will also work for Fedora..
Hi, I’m the creator of nSnake!
Apparently this error is due to old versions of compilers.
You have to update GCC to 4.8.X.
I’m trying to work around it, because nSnake uses features
from the latest version of C++ and some compilers don’t
support it.
Dear Alex,
Thanks for updating our fellow users, will definetly compile it again using latest GCC as you suggested.
Great article!
A small correction in the article though.
In the how to play nSnake section, it should be nsnake not snake.
It doesn’t compile on Ubuntu 12.04.
Make ends with “Error 1”:
…
# Compiling src/Interface/Menu/MenuItemTextbox.cpp…
src/Interface/Menu/MenuItemTextbox.cpp: In member function ‘virtual void MenuItemTextbox::handleInput()’:
src/Interface/Menu/MenuItemTextbox.cpp:53:21: error: ‘std::string’ has no member named ‘pop_back’
make: *** [src/Interface/Menu/MenuItemTextbox.o] Error 1
$
i have error when i tryin to make command like :
# Compiling src/Game/Score.cpp…
# Compiling src/Game/Game.cpp…
# Compiling src/Game/Board.cpp…
# Compiling src/Game/FruitManager.cpp…
# Compiling src/Game/Player.cpp…
# Compiling src/Interface/LayoutMainMenu.cpp…
# Compiling src/Interface/Ncurses.cpp…
# Compiling src/Interface/Layout.cpp…
# Compiling src/Interface/LayoutFirstTime.cpp…
# Compiling src/Interface/Menu/MenuItemNumberbox.cpp…
# Compiling src/Interface/Menu/MenuItemCheckbox.cpp…
# Compiling src/Interface/Menu/MenuItem.cpp…
# Compiling src/Interface/Menu/MenuItemTextbox.cpp…
src/Interface/Menu/MenuItemTextbox.cpp: ‘virtual void MenuItemTextbox::handleInput()’ üye fonksiyonunda:
src/Interface/Menu/MenuItemTextbox.cpp:53:21: hata: ‘std::string’ ‘pop_back’ isimli üyeye sahip değil
make: *** [src/Interface/Menu/MenuItemTextbox.o] Hata 1
when run #make on centOS 5_32 bit getting following error:
[root@wizn nsnake-2.0.0]# make
# Compiling src/Misc/Utils.cpp…
cc1plus: error: unrecognized command line option “-std=c++0x”
make: *** [src/Misc/Utils.o] Error 1
[root@wizn nsnake-2.0.0]# gcc -v
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –enable-shared –enable-threads=posix –enable-checking=release –with-system-zlib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-libgcj-multifile –enable-languages=c,c++,objc,obj-c++,java,fortran,ada –enable-java-awt=gtk –disable-dssi –disable-plugin –with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre –with-cpu=generic –host=i386-redhat-linux
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)
when run #make on centos 6_x64 bit getting following error:
[root@t-server nsnake-2.0.0]# make
# Compiling src/Misc/Utils.cpp…
src/Misc/Utils.cpp: In function ‘void Utils::Random::seed()’:
src/Misc/Utils.cpp:46: error: ‘nullptr’ was not declared in this scope
src/Misc/Utils.cpp: In function ‘int Utils::Random::between(int, int)’:
src/Misc/Utils.cpp:51: error: ‘uniform_int_distribution’ is not a member of ‘std’
src/Misc/Utils.cpp:51: error: expected primary-expression before ‘int’
src/Misc/Utils.cpp:51: error: expected ‘;’ before ‘int’
src/Misc/Utils.cpp:52: error: no matching function for call to ‘distance(std::mt19937&)’
src/Misc/Utils.cpp: At global scope:
src/Misc/Utils.cpp:49: warning: unused parameter ‘min’
src/Misc/Utils.cpp:49: warning: unused parameter ‘max’
src/Misc/Utils.cpp: In function ‘float Utils::Random::fbetween(float, float)’:
src/Misc/Utils.cpp:57: error: ‘uniform_real_distribution’ is not a member of ‘std’
src/Misc/Utils.cpp:57: error: expected primary-expression before ‘float’
src/Misc/Utils.cpp:57: error: expected ‘;’ before ‘float’
src/Misc/Utils.cpp:58: error: no matching function for call to ‘distance(std::mt19937&)’
src/Misc/Utils.cpp: At global scope:
src/Misc/Utils.cpp:55: warning: unused parameter ‘min’
src/Misc/Utils.cpp:55: warning: unused parameter ‘max’
src/Misc/Utils.cpp: In function ‘bool Utils::Random::boolean()’:
src/Misc/Utils.cpp:63: error: ‘uniform_int_distribution’ is not a member of ‘std’
src/Misc/Utils.cpp:63: error: expected primary-expression before ‘int’
src/Misc/Utils.cpp:63: error: expected ‘;’ before ‘int’
src/Misc/Utils.cpp:65: error: no matching function for call to ‘distance(std::mt19937&)’
src/Misc/Utils.cpp: In function ‘void Utils::File::mkdir_p(std::string)’:
src/Misc/Utils.cpp:105: error: ‘struct std::string’ has no member named ‘back’
src/Misc/Utils.cpp: In function ‘std::vector<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > > Utils::File::ls(std::string)’:
src/Misc/Utils.cpp:207: error: ‘struct std::string’ has no member named ‘back’
src/Misc/Utils.cpp: In function ‘std::string Utils::File::getHome()’:
src/Misc/Utils.cpp:233: error: ‘struct std::string’ has no member named ‘back’
src/Misc/Utils.cpp: In function ‘std::string Utils::File::getUser()’:
src/Misc/Utils.cpp:245: error: ‘struct std::string’ has no member named ‘pop_back’
make: *** [src/Misc/Utils.o] Error 1