Terminal version of the game "2048" written in C++.
๐ Featured on GitHub's Twitter and Facebook pages! ๐
The game and code is made to run natively on the GNU/Linux and MacOS platforms, but cross-platform compatibility for Windows has been added too.
- C++11 compiler (e.g. 
g++,clang++,pgc++,icpc, etc.) - Virtually any platform including:
- Linux
 - MacOS
 - Windows (via Cygwin or Windows Subsystem for Linux)
 
 - CMake or Meson
 
- Open your terminal in your preferred directory and clone this project:
 
git clone https://github.com/plibither8/2048.cpp- Enter the project's build directory:
 
cd 2048.cpp/buildFor both CMake and Meson, the default C++ compiler on your system will be used.
If you wish to manually select a C++ compiler, optionally add CXX=clang++ cmake or CXX=clang++ meson etc.
- Generate build configuration
 
cmake ../- Build the executable
 
cmake --build .- Install the program (optional)
 
cmake --build . --target install- Run the program and play the game! ๐
 
2048    # run `./2048` if game is not installedOR
- Generate build configuration
 
meson ../- Build the executable
 
ninja- Install the program (optional)
 
meson configure --prefix=$HOME/.local
ninja install- Run the program and play the game! ๐
 
2048    # run `./2048` if game is not installedFirst of all, thank you for contributing ๐! A few things to note:
- 
If you have found a bug, or have a feature that you'd like implemented, raise an issue.
 - 
If you have proposed a pull request, make sure that you run
clang-formaton the source code (both,.cppand.hpp) files if you've made changes there. - 
In your local repository, run
git update-index --skip-worktree ./data/*.txtto ensure that changes to the data files are not tracked by git, and thus are not staged. 
I deeply appreciate the help of the following people:
- Michael Hirsch
- cleaned up the code,
 - organised the header files in a better way for a more efficient build,
 - added the AppVeyor CI,
 - added the Meson build system and, fixed CMake and added install feature.
 
 - Aiman Ismail added support for Vim keybinding.
 - Patrik Huber fixed a typo in the Readme.
 - zestze changed 
cstdlib randto C++ random int generator. - Pascal J. Bourguignon added support for ANSI arrow keys.
 - Jean-Michaรซl Celerier added 
CMakeLists.txtfile. - comwrg made the duration in the statistics and highscores human-readable, wrapping seconds to minutes and hours.
 - Christian Bundy replaced the ugly -, + and | with box-drawing characters.
 - Tor E Hagemann fixed issue #10, causing unwanted character 
1to be printed. - farazxameer implemented feature to save a game state and continue from a saved game state, refined game logic.
 - drodil implemented checks to ascertain existence of data files, fixed issue #12
 - Aviskar KC added arrow keys to game instructions.
 - Peter Squicciarini fixed readme instructions.
 - Mark Fischer, Jr. fixed a typo.
 - Hugo Brandรฃo completely reorganised the existing project structure and updated the build method to enfore CMake.
 - Alton Alvarez fixed a typo.
 - cawvyoct made the source code much, much easier to read: removed most magic numbers, replacing them with variables to ease maintenance. Implemented 
clang-format. - Cong edited the 
Gameclass constructor. - Tien Do added the 'exit' option in the main menu, updated the 
CMakeLists.txtfile and madeColorenum to a scoped enum. - ScorrMorr made many methods 
consts. - tangmengqiu fixed an error-causing instruction step in the readme.
 
[GameBoard].getTile(2,0) refers to the 0th tile (or column) in 2nd row as in this case, x = 0 and y = 2. The specific tile is denoted the by '@' symbol in the following gameboard:
Note:
rowandcolumnindexing starts at 0.
โโโโโโโโฌโโโโโโโฌโโโโโโโฌโโโโโโโ
โ      โ      โ      โ      โ
โโโโโโโโผโโโโโโโผโโโโโโโผโโโโโโโค
โ      โ      โ      โ      โ
โโโโโโโโผโโโโโโโผโโโโโโโผโโโโโโโค
โ   @  โ      โ      โ      โ
โโโโโโโโผโโโโโโโผโโโโโโโผโโโโโโโค
โ      โ      โ      โ      โ
โโโโโโโโดโโโโโโโดโโโโโโโดโโโโโโโ
- Add start menu [19/04/2018]
 - Save highscore / score [21/04/2018]
 - Save a game state and play from a saved game state
 -  
AI(Abandoned indefinitely) 
Copyright (c) Mihir Chaturvedi. All rights reserved.
Licensed under the MIT License.
