Clojure
Reagent Mastermind
One of these days, a friend of mine posted about his experience writing the “Mastermind” game in React (in portuguese only). The game is quite simple:
- You have six possible colors
- A combination of 4 colors is chosen randomly (they can be repeated – for example, blue,blue,blue,blue is a valid combination) – you have to guess that number
- You have up to 10 guesses of 4 colors. For each color on the right position, you win a “black” point. For each color in the wrong position, you win a “white” point
- If you can’t guess on the 10th try, you loose.
So, first, we’ll create a shadow-cljs app – create a package.json
file, fill it with {"name": "Mastermind"}
, then run npm install shadow-cljs
. Traditional stuff.
Then, we’ll create the shadow-cljs.edn file. It’ll only contain a single target (:browser
), opening up a dev-http server so we can serve our code, and we’ll add reagent
library dependency. I also added the material-ui dependency, but you don’t really need it for the code. Now, running npx shadow-cljs watch browser
will start a webserver at port 3000
, and we can start to develop things.
(more…)