# PARTIE MATHEO : ## Analyse du code produit par ChatGPT par rapport au code attendu : ### Pour PieceSquadro - Le code généré par l'IA a omis d'ajouter les constantes en les déclarant comme `public` et en utilisant `static`. - Après des tests, nous avons constaté que : - `const` est effectivement `static` par défaut. - Si aucun modificateur d'accès n'est précisé pour une variable ou une méthode, celles-ci sont considérées comme `public` par défaut. Il n'y a donc rien à signaler ici. - Dans le diagramme UML, les attributs `couleur` et `direction` sont indiqués comme étant `protected`. Cependant, dans la première version du code générée et déposée par l'IA, ces attributs ont été déclarés en `private`. On a donc corrigé cette erreur. - Une nouvelle version de la méthode `toString` a été ajoutée pour représenter la direction d'une pièce par une flèche, afin de faciliter l'affichage des pièces. Un prompt demandant cette fonctionnalité a été donné à l'IA, et elle a su discerner les 4 cas suivants : - `>` pour l'Est - `<` pour l'Ouest - `^` pour le Nord - `v` pour le Sud > **Après test de la classe :** tout fonctionne correctement, pas de nouvelle erreur. --- ### Pour ArrayPieceSquadro - J'avais demandé de ne coder que les méthodes définies dans le schéma UML. L'IA a cependant ajouté les méthodes des deux interfaces qu'elle a redéfinies. Cela peut être vu comme une initiative positive, mais ce n'était pas explicitement demandé. - Les messages d'erreur des exceptions générées sont en anglais, alors que le projet est spécifiquement en français. Nous avons donc corrigé ceci en mettant les commentaires en français. --- ## Pour les tests - En demandant simplement à ChatGPT de tester la classe `PieceSquadro`, il a utilisé par défaut **PHPUnit**. Il s'agit d'une erreur provenant de mon prompt, car je n'avais pas précisé de tester simplement sans PHPUnit. - J'ai corrigé cela en modifiant le prompt et en ajoutant une nouvelle classe de test sur la forge, sans utiliser PHPUnit. - Lorsqu'il m'a redonné une version sans PHPUnit, il a effectivement testé l'ensemble des fonctionnalités, en les organisant dans des méthodes séparées. - Ces tests ont montré la robustesse de la classe `PieceSquadro`. - Même constat pour les tests de la classe `ArrayPieceSquadro`. --- ## Pour la PHPDoc - L'IA n'a pas ajouté de PHPDoc par défaut. - J'ai donc dû les ajouter manuellement, un par un, aux classes que j'avais déjà écrites. --- # PARTIE DARYL : ## Plateau Squadro (prompt 1) - **Visibilité des constantes non précisées :** elle devrait être `public`. - RAS, quand la visibilité n'est pas précisée, elle est `public` par défaut. - **Types des variables d'instances non précisés de même que le retour des fonctions :** - Évidemment, j'ai oublié de le préciser dans mon prompt. - **Getters des lignes et colonnes jouables non faits :** - ChatGPT est nul ? Probablement prompt pas correctement fait. - **Méthodes `toJson`, `fromJson` et `__toString()` non implémentées :** - ChatGPT est nul ? Probablement prompt pas correct... Sérieusement ? ## Action Squadro (prompt 1) - **Méthode `reculePiece` semble incorrecte :** - La remise à zéro est censée mettre les pièces se dirigeant vers l'est à l'est, vers l'ouest à l'ouest, ainsi de suite... ce qui n'est pas fait : toutes les pièces est-ouest sont remises à l'ouest et toutes les pièces nord-sud sont remises au nord. - **Méthode à tester** une fois les tests implémentés. - **Méthode `gererSautsAdversaires` venue de nulle part.** - **Méthode `jouePiece` à réécrire** puisqu'elle est censée utiliser `reculePiece` pour déplacer les pièces adversaires conformément aux règles du jeu. ## Prompt 2 - **Prompt** : j'ai demandé à ChatGPT de corriger les codes de Plateau et Action en s'assurant que les diagrammes UML et les instructions soient respectées - **résultat :** - Les fonctions non implémentées le sont maintenant. - Les paramètres des fonctions et leurs retours sont typés. - Je crois que je corrigerai reculePièce et jouePièce à la main.