# 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. ## Écriture de tests - **erreurs précédemment manquées** : - Les `require` appropriés non faits. - Les fonctions `init` du constructeur de Plateau utilise des variables non encore instanciées. - Les fonctions `init` pour les pièces jouables ne sont pas correctement implémentés : correction à la main. - __toString() de Plateau non implémenté. - **corrections** : - La classe ArrayPiece permet d'utiliser la variable plateau de Plateau comme un tableau 2D : simplification de l'accès à plateau dans certaines méthodes - reculePièce et jouePièce ont été corrigées. - Les tests ont été écrits et fonctionnent correctement. - Génération de la documentation PHPDoc pour les classes Plateau et Action. ---------------------------------------------------------------------------------------------------------------------------- # README - Étape 2 ## Premier prompt - Étape 2 - Pour l'instant, le résultat n'est pas satisfaisant. Des recalibrations sont nécessaires et il est essentiel d'améliorer la compréhension des tâches à effectuer de mon côté. --- ## Deuxième prompt - Étape 2 Nous avons trouvé une meilleure proposition générée par GPT. Ainsi, les classes `PieceSquadroUI` et `TestSquadroUI` ont été modifiées en conséquence. - Dans la nouvelle classe (`TestPieceSquadroUI`), l'IA utilise des méthodes non définies dans `PieceSquadroUI`. Il faut les remplacer par les méthodes appropriées. --- ## Rédaction de SquadroUIGenerator - Les méthodes d'entête et de pied ont été écrites manuellement. - Les 3 méthodes d'affichage de page ont été générées par l'IA, après lui avoir précisé qu'il est préférable d'utiliser une méthode d'entête et de fin, plutôt que de les écrire en dur dans une autre méthode.