2048 avec WinDev et TDD / ATDD (Introduction)
Dans ce cours, nous allons voir le développement complet d'un jeu 2048 avec WinDev. Je vous présenterai pas à pas la méthode que j'utilise pour parvenir à développer ce jeu avec un code de très bonne qualité.
Présentation du jeu
Si vous ne connaissez pas ce jeu, je vous invite à le découvrir en effectuant une petite recherche google.
Le principe est simple, vous avez une grille de 4 par 4. A chaque étape, un nombre apparait de manière aléatoire. En utilisant les flèches du clavier, on déplace les nombres de la grille dans la direction correspondante. Si un nombre touche un autre nombre de même valeurs, les deux s'additionnent pour former un nouveau nombre.
L'objectif du jeu est de créer le nombre 2048 en additionnant deux nombres 1024 ( lui même créé à partir de 512 puis 256, 128, 64, 32, 16, 8, 4, 2, 1).
Développement du jeu
Introduction
Afin de développer ce jeu, nous allons utiliser la POO (Programmation Orientée Objet), TDD (Test Driven Development - Le développement dirigé par les tests) et ATDD (Acceptance Test Driven Developpement - Le développement dirigé par les tests d'acceptation) .
Chacun de ces concepts vont nous permettre de développer le jeu avec un code de grande qualité.
ATDD va nous permettre de savoir lorsque le développement a atteint le résultat attendu ;
TDD va nous permettre d'écrire un code propre et fiable ;
La POO va nous permettre d'utiliser pleinement les possibilités de TDD en rendant le code modulaire, en diminuant les dépendances et en séparant les responsabilités.
ATDD et TDD - Plus que des tests, ce sont des spécifications
ATDD n'est pas très connu, à l'inverse de TDD. Quand on parle de TDD, les développeurs pensent que l'on parle de tests unitaires. Dans un sens, c'est vrai, TDD utilise des tests unitaires, mais il ne faut pas considérer TDD comme un simple test. C'est beaucoup plus que cela.
TDD - Spécification de vos fonctionnalités
Cet article résume bien l'essence de TDD.
Les tests unitaires mis en place dans la pratique TDD correspondent plutôt à des spécifications de la fonctionnalité que l'on développe. De fait, lorsque le test passe au vert, on sait que notre fonctionnalité répond à la spécification attendue.
De plus, la pratique de TDD nous guide dans le choix du code. Chaque étape donne une forme au code. D'abord, le néant, puis un prémice de la fonctionnalité, puis celle-ci va grandir et s'améliorer jusqu'à correspondre à la fonctionnalité que nous attendons.
En bonus, TDD vous permet de couvrir votre code à 100 % et vous permet d'effectuer les phases de refactoring qui manquent cruellement à nos projets.
ATDD - Spécification de votre application
Ce livret décrit bien la notion de test d'acceptation.
Si TDD permet d'écrire les spécifications de vos fonctionnalités, alors ATDD vous permet d'écrire les spécifications de votre application.
En effet, lorsque les tests ATDD passent au vert, on sait que notre application a atteint le résultat escompté. On peut alors livrer ou ajouter d'autres tests d'acceptation.
Démarrons le développement
Maintenant que nous avons présenté toutes ces notions, nous allons pouvoir les découvrir en lisant la première partie de ce cours.