An Elm version of Gabriele Cirulli's 2048 game
Deployed to Github Pages: https://stepheneb.github.io/elm-2048/
MIT License
I wrote this to learn more about Elm.
Possibly helpful/useful/interesting features:
- Save game state to local storage.
- JSON Encoding of
Int
,Bool
,Union Type
, andList
ofTile
records. - Send game state to JavaScript where it is saved in local storage.
- Load game state on application startup.
- JavaScript extracts game state from local storage, converts to JSON and passes to application via
flags
. - Handle successful or failed JSON decoding of game state.
- Model
Tiles
usingHtml.Keyed
to allow CSS animations to work effectively. - Use
Events.onKeyDown
andSubscriptions
to handle arrow keys forTile
movement.- Additional JavaScript code to prevent arrow keyboard events bubbling and causing page scroll.
- Use JavaScript and incoming
Port
to turn touch interface swipes intoTile
movements. - Game state record is nested one-level deep in Model.
- Helper functions work with
Update Msg
branches to cleanly handle game state record manipulation and updates.
- Helper functions work with
This project is bootstrapped with Create Elm App. Readme generated by elm-app
: elm-app-readme.md).
Build dependencies:
To build locally:
$ git clone https://github.com/stepheneb/elm-2048
$ cd elm-2048
$ nvm use
$ yarn
$ yarn build-css
$ elm-app start
Local development: open two shells and run:
$ elm-app start
$ yarn watch-css
Deploy to Github Pages:
$ yarn run build-deploy