For rules on the game itself, see the Wikipedia article or the original paper published in the American Journal of Physics.
This implementation is written in ClojureScript and ReactJS, and has three front-ends written using different UI libraries:
And, additionally in this fork, a port to React Native, based on the Om binding. (See the section at the bottom.)
Note: QTTT depends on a library, com.cognitect/contextual
that may not yet
be in public repositories. If not, you can install the dependency locally by cloning
https://github.com/levand/contextual.git
and running lein install
in that repository.
First, compile the ClojureScript:
lein cljsbuild
Then, visit the HTML page at resources/public/dev.html
.
You will need to select which UI library to view by passing a lib
URL parameter. For example:
dev.html?lib=om
dev.html?lib=reagent
dev.html?lib=quiescent
Play proceeds in turns. There is no win condition detection, yet, but all the other rules of the game are in place.
Ideas for future expansion include:
- Win condition detection
- Network multiplayer
- AI
- From the top level run
lein cljsbuild once ios
. cd iOS/QTTT
npm install
pod install
open QTTT.xcworkspace
- Run on a simulator (iPhone 6 works great)
If you'd like to connect to the iOS app using a REPL, run script/ambly-repl
.
Watch a quick demo of it running on iOS: