2048 is a game created by Gabriele Cirulli. The objective is to combine tiles with the same numbers to reach the 2048 tile.
This repo contains my own implementation from scratch.
- Supports keyboard controls (arrow keys).
- Supports swipe motions for touch devices (mouse or finger).
- Remembers game progress even if browser is closed.
- Variation of the MVC pattern.
- Promises are used to ensure that animations complete properly and to prevent multiple moves before the animations finish.
Although the current UI features the classic 2048 game, we can easily edit the code to create a custom game or even add some of the options below directly to the UI.
Read more here.
The project is written in HTML, CSS, JavaScript. Install the required dependencies via npm install
.
Run the development version:
npm run dev
Build the project:
npm run build
Build & serve the production version:
npm run serve
Navigate to /colors.html
to see all possible tile colors.
Vitest is used for testing.
The current tests cover most of the core functionality of the game model.
Run the tests:
npm run test
or, if you prefer access to the browser UI:
npm run test:ui
How to deploy to Github Pages:
- Select GitHub Actions from Settings > Pages > Build and deployment.
- Add a classic protection rule in Settings > Branches. Select Require status checks to pass before merging and add build-test.
Now, each time there’s a pull request or push, the project will be built, the tests will run, and if everything goes well, the project will be deployed to <your-username>.github.io/2048-game/
.
See screenshots.