nSnake: A Clone of Old Classic Snake Game – Play in Linux Terminal

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.

  1. Clean GUI-like interface with nifty animations.
  2. Two games modes, with speed controls.
  3. 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.

  1. http://alexdantas.net/projects/nsnake/

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.

Install nSnake Game

Run nSnake

Play nSnake Game

Play nSnake Game

Random Walls nSnake

Random Walls nSnake

nSnake GameOver

Game Over

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.

Best Affordable Linux and WordPress Services For Your Business
Outsource Your Linux and WordPress Project and Get it Promptly Completed Remotely and Delivered Online.

If You Appreciate What We Do Here On TecMint, You Should Consider:

  1. Stay Connected to: Twitter | Facebook | Google Plus
  2. Subscribe to our email updates: Sign Up Now
  3. Get your own self-hosted blog with a Free Domain at ($3.45/month).
  4. Become a Supporter - Make a contribution via PayPal
  5. Support us by purchasing our premium books in PDF format.
  6. Support us by taking our online Linux courses

We are thankful for your never ending support.

Ravi Saive

I am Ravi Saive, creator of TecMint. A Computer Geek and Linux Guru who loves to share tricks and tips on Internet. Most Of My Servers runs on Open Source Platform called Linux. Follow Me: Twitter, Facebook and Google+

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

9 Responses

  1. william derington says:

    how do i install on fedora 20

  2. Alexandre Dantas says:

    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.

    • Ravi Saive says:

      Dear Alex,

      Thanks for updating our fellow users, will definetly compile it again using latest GCC as you suggested.

  3. Abhilash Anandan says:

    Great article!

    A small correction in the article though.

    In the how to play nSnake section, it should be nsnake not snake.

  4. Hugo Lía says:

    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

  5. plazma says:

    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

  6. Rmahfuj says:

    when run #make on centOS 5_32 bit getting following error:

    [[email protected] 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

    [[email protected] 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- –with-cpu=generic –host=i386-redhat-linux
    Thread model: posix
    gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)

  7. Rmahfuj says:

    when run #make on centos 6_x64 bit getting following error:

    [[email protected] 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

Got something to say? Join the discussion.

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.