Mini Projet : Tic-Tac-Toe – avec solutions
Le dépôt LempekPL/GoTicTacToe sur github implémente le jeu du Tic-Tac-Toe en Go. Le programme est assez court (~260 lignes de code) et il utilise la bibliothèque de jeu 2D Ebitengine.
Voici les tâches que vous devez faire à partir de ce projet
Tests de la version actuelle
Clonez ce projet sur votre machine et testez-le.
Mise à jour
Faites en sorte d’utiliser les dernières versions des dépendances et vérifiez que le programme fonctionne toujours.
Refactoring
Le code n’est pas très propre et il ne respecte pas les bonnes pratiques. Faites un “refactoring” du code en remplaçant les nombres magiques, en supprimant les copier/coller de code, etc.
Vérifiez que le programme fonctionne correctement
Assurez-vous que le programme fonctionne correctement. Vérifiez en particulier que le programme trouve bien le vainqueur dès qu’un joueur aligne 3 pièces. Si vous constatez une erreur, réfléchissez comment vous pourriez implémenter un test unitaire qui détecte ce genre de problème.
Génération des images
Dans la version actuelle, les images sont des fichiers png lus par le programme. Pour plus de flexibilité, remplacez les images statiques par des images que vous générez avec la bibliothèque fogleman/gg.
Laisser l’ordinateur jouer
Modifier le programme pour que l’on puisse jouer contre l’ordinateur. Commencez par un algorithme simple (random) et codez ensuite un algorithme imbattable.
Architecture du code source
Avec l’algorithme de jeu, le code est probablement plus long. Restructurez le programme en utilisant plusieurs fichiers et/ou plusieurs packages.
Utilisez toute la puissance de votre PC (Optionel)
Si ce n’est pas déjà fait, modifiez votre algorithme de jeu pour qu’il utilise tous les cœurs de votre PC. Faites appel aux goroutines de manière optimale.
Implémentez des tests unitaires
Complétez le projet avec des tests unitaires et assurez-vous de couvrir (code coverage) la plus grande partie de code possible
Utilisez le CI/CD
Faites en sorte que les tests soient faits à chaque push
Analyse statique de code et règles de pre-commit
Utilisez les outils d’analyse statique de code, définissez des règles de pre-commit et appliquez-les dans la chaîne de CI/CD
Compilation WebAssembly
Implémentez une version Javascript/WebAssembly du jeu et publiez-la sur une page de votre dépôt (avec le CI/CD).
Documentez
Écrivez une documentation adéquate
(Optionnel) Implémentez une variante du Tic-Tac-Toe ou implémentez un autre jeu
Quelques idées et liens:
- Tic-Tac-Toe Variants
- Tic-Tac-Toe 3D
- Ultimate Tic-Tac-Toe
- Tic-Tac-Toe Bolt
- Puissance 4
- Othello/Reversi
- Master Mind
- Awalé