Le fonctionnel par la pratique: Live coding d'un jeu web
Vous trouverez ici les slides de la présentation donnée à la Devoxx 2017 intitulée "Le fonctionnel par la pratique: Live coding d'un jeu web" dans laquelle Quentin Duval et Guillaume Eveillard ont implémenté en ClojureScript un jeu de Tic Tac Toe en live.
http://cfp.devoxx.fr/2017/talk/XHN-2510/Le_fonctionnel_par_la_pratique_:_live_coding_d’un_jeu_web
Intitulé de la présentation
Découvrez la simplicité élégante de la programmation fonctionnelle au travers d’un live coding, en duo, d’un Tic-Tac-Toe web.
- 45 minutes de code
- 4 lignes d’effets de bord
- Un Ctrl-Z en 1 ligne
- Une architecture testable
Nous programmerons en Clojurescript, une variante de Clojure qui transcompile en Javascript.
Durant la présentation, nous expliquerons nos choix de design et d'implémentation. Ce faisant, nous aborderons concrètement plusieurs notions centrales du paradigme fonctionnel. L'universalité de ces concepts les rend utiles dans le monde du développement en général, y compris en entreprise.
Le code final sera mis à disposition sur GitHub. Nous y ajouterons tout le nécessaire pour vous lancer sur un premier projet.
Aucune connaissance en Clojure ou Clojurescript n'est requise.
Liens et resources
Vous trouverez le code complet du jeu dans le repository GitHub suivant: https://github.com/QuentinDuval/tictactoe/tree/master/src/cljs/tictactoe
Vous pouvez jouer au jeu en ligne à l'adresse suivante: https://quentinduval.github.io/tictactoe/
Vous pouvez aller plus loin et découvrir comment bâtir un jeu plus imposant dans les blog posts suivants:
- Description of the game: https://deque.blog/2017/02/27/building-a-clojurescript-game
- Architecture POC with Tic Tac Toe: https://deque.blog/2017/03/03/building-a-clojurescript-game-architecture-poc/
- Implementing a game logic: https://deque.blog/2017/03/10/building-a-clojurescript-game-tribolo-game-logic/
- Thoughts on how to use spec: https://deque.blog/2017/03/14/building-a-clojurescript-game-toughts-on-spec/
- Implementing the rendering: https://deque.blog/2017/03/18/building-a-clojurescript-game-rendering/
- How to manage time and state: https://deque.blog/2017/03/21/building-a-clojurescript-game-application-state/
- How to build an decent AI: https://deque.blog/2017/03/28/building-a-clojurescript-game-ai/
Librairies utilisées
Reagent (sur-courche sur React): https://reagent-project.github.io
Figwheel (mis à jour temps réel du navigateur web): https://github.com/bhauman/lein-figwheel