Titre SAE : SAE 1.01 implémentation d'un besoin client

▶︎ Les apprentissages critiques

1. AC11.01 | Implémenter des conceptions simples 2. AC11.02 | Élaborer des conceptions simples **** 3. AC11.03 | Faire des essais et évaluer leurs résultats en regard des spécifications

▶︎ Analyse et réflexivité sur vos actions (à compléter max 1 page par question)

<aside> 💡

Quelles ont été vos démarchesprises de décisions, degré d'implication et d'autonomie ?

</aside>

J'ai commencé par analyser le sujet en détail pour identifier toutes les fonctions nécessaires avant d'écrire la moindre ligne de code. J'ai décidé de décomposer le programme en méthodes claires et indépendantes : création du plateau, calcul des coups possibles, retournement des pions, gestion du tour, affichage et score. Les principales décisions techniques — représenter le plateau en char[][], identifier les coups valides en parcourant les 8 directions depuis chaque pion du joueur, gérer le bot par le premier coup valide — ont toutes été prises de façon autonome après réflexion et tests sur papier.

<aside> 💡

Quelles ressources avez vous choisies et combinées pour réaliser vos tâches et résoudre les problèmes rencontrés dans cette SAé ?

</aside>

J'ai principalement utilisé les ressources du cours R1.01 (tableaux, boucles, méthodes, SimpleInput) ainsi que les TD et TP comme base. Pour bien comprendre les règles du Reversi, j'ai consulté la vidéo fournie dans le sujet et la page Wikipédia du jeu. Pour les problèmes rencontrés — notamment le dédoublonnage des coups possibles et la logique de retournement dans les 8 directions — je les ai résolus en simulant des cas sur papier avant de les coder, ce qui m'a permis de valider l'algorithme avant de me lancer dans le débogage.

<aside> 💡

En vous appuyant sur vos traces, justifiez la maitrise des apprentissages visés, ainsi que la prise en compte des composantes essentielles pour le développement de vos compétences.

</aside>

Cette SAÉ m'a permis de mettre en pratique les trois apprentissages critiques. Pour AC1, le code est fonctionnel : détection des coups dans les 8 directions, retournement correct des pions, gestion de fin de partie. Pour AC2, j'ai pensé la décomposition en méthodes indépendantes avant de coder, ce qui rend le programme lisible et maintenable. Pour AC3, j'ai écrit des tests automatisés sur inBounds couvrant les cas nominaux, les coins et les valeurs hors plateau, exécutés avant chaque lancement de partie. La robustesse a aussi été traitée : toute saisie invalide est redemandée sans interrompre le programme.

<aside> 💡

Quelles ressources vous manquent pour atteindre la compétence abordée par cette SAé ? Si c'était à refaire que changeriez-vous ?

</aside>

L'absence d'ArrayList au S1 m'a obligé à gérer les coups valides manuellement avec des valeurs à -1 puis un filtre, ce qui alourdit inutilement le code. Si c'était à refaire, j'aurais rédigé les tests plus tôt dans le développement pour détecter les bugs logiques plus rapidement, mieux commenté au fil de l'écriture plutôt qu'en fin de projet, et implémenté un bot plus intelligent — par exemple en choisissant le coup qui retourne le plus de pions — plutôt que de me contenter du premier coup valide.

▶︎ Les traces

SAE_Othello_Sujet.pdf

Reversi_Boeffard.java

▶︎ Les travaux réalisés

Implémentation complète du jeu de Reversi en Java, en console, avec :