Aller au contenu

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: