->Analyse: * Joueur 1: pose un pion ou c'est possible (jouer un coup parmi les coups possibles) si aucun coup n'est possible, alors on passe au joueur suivant * Mettre à jour l'othellier (retourner les pions de l'adversaire en fonction du pion posé) * Passer au joueur suivant (tant que partie non finie) * Partie finie: - othellier plein - les deux joueurs "passent" ->Liste des taches: 1) Affichage de l'othellier 2) Saisie d'un coup 3) Détection othellier plein 4) Boucle de jeu (+ affichage scores, le vainqueur, etc) 5) Mettre à jour l'othellier (retournement pions de l'adversaire suite à un coup joué) 6) Coups jouables (calcul liste, affichage des coups jouables, test si coup saisi est dans la liste) 7) Jeu 2 joueurs humains 8) IA: MinMax + stratégies 9) IHM graphique ->Stratégie de jeu (fonction d'évalution de l'algo MinMax): * Nombre de pions de la même couleur * Position/valeur des cases * Diminuer les coups possibles de l'adversaire * "S'augmenter" les possibilités de jeu ->Initialisation: toutes les cases sont initialisées à VIDE ->Structures de données: - Othellier: tableau à deux dimensions - Coups jouables: liste chainée de coup - Constantes: NOIR 1 |N (nord) BLANC 2 |S (sud) VIDE 0 |E (est) ... |O (ouest) JOUEUR_NOIR ? JOUEUR_BLANC ? ->Modules: main: othello.{c,h} ia: ia.{c,h} (MinMax, fcts d'évaluation, ...) IHM: ihm.{c,h} (affichage de l'othellier, saisie d'un coup, entrée au clavier, ...) coups: coups.{c.h} (coups jouables) regle: regle.{c,h} (implantation des règles du jeu) constantes: constantes.{c,h} (les constantes) ->Exploration dans une direction (i, j): Si hors_othellier ou case vide alors Rien; Sinon si case contient un pion adverse alors continuer l'exploration dans la même direction; Sinon si case contient pion du joueur alors les pions adverses vus précédement doivent être retournés explorer(i, j, dir) Si Vide ou Dehors Rien à faire Sinon Si PionAdverse explorer CaseSuivante Sinon RetournerPionsRencontrés