| 1 | ->Analyse: |
| 2 | * Joueur 1: pose un pion ou c'est possible (jouer un coup parmi les coups possibles) |
| 3 | si aucun coup n'est possible, alors on passe au joueur suivant |
| 4 | |
| 5 | * Mettre à jour l'othellier (retourner les pions de l'adversaire en fonction du pion posé) |
| 6 | |
| 7 | * Passer au joueur suivant (tant que partie non finie) |
| 8 | |
| 9 | * Partie finie: - othellier plein |
| 10 | - les deux joueurs "passent" |
| 11 | |
| 12 | ->Liste des taches: |
| 13 | 1) Affichage de l'othellier |
| 14 | 2) Saisie d'un coup |
| 15 | 3) Détection othellier plein |
| 16 | 4) Boucle de jeu (+ affichage scores, le vainqueur, etc) |
| 17 | 5) Mettre à jour l'othellier (retournement pions de l'adversaire suite à un coup joué) |
| 18 | 6) Coups jouables (calcul liste, affichage des coups jouables, test si coup saisi est dans la liste) |
| 19 | 7) Jeu 2 joueurs humains |
| 20 | 8) IA: MinMax + stratégies |
| 21 | 9) IHM graphique |
| 22 | |
| 23 | ->Stratégie de jeu (fonction d'évalution de l'algo MinMax): |
| 24 | * Nombre de pions de la même couleur |
| 25 | * Position/valeur des cases |
| 26 | * Diminuer les coups possibles de l'adversaire |
| 27 | * "S'augmenter" les possibilités de jeu |
| 28 | |
| 29 | ->Initialisation: toutes les cases sont initialisées à VIDE |
| 30 | |
| 31 | ->Structures de données: |
| 32 | - Othellier: tableau à deux dimensions |
| 33 | - Coups jouables: liste chainée de coup |
| 34 | - Constantes: NOIR 1 |N (nord) |
| 35 | BLANC 2 |S (sud) |
| 36 | VIDE 0 |E (est) |
| 37 | ... |O (ouest) |
| 38 | JOUEUR_NOIR ? |
| 39 | JOUEUR_BLANC ? |
| 40 | |
| 41 | ->Modules: |
| 42 | main: othello.{c,h} |
| 43 | ia: ia.{c,h} (MinMax, fcts d'évaluation, ...) |
| 44 | IHM: ihm.{c,h} (affichage de l'othellier, saisie d'un coup, entrée au clavier, ...) |
| 45 | coups: coups.{c.h} (coups jouables) |
| 46 | regle: regle.{c,h} (implantation des règles du jeu) |
| 47 | constantes: constantes.{c,h} (les constantes) |
| 48 | |
| 49 | ->Exploration dans une direction (i, j): |
| 50 | Si hors_othellier ou case vide |
| 51 | alors Rien; |
| 52 | Sinon si case contient un pion adverse |
| 53 | alors continuer l'exploration dans la même direction; |
| 54 | Sinon si case contient pion du joueur |
| 55 | alors les pions adverses vus précédement doivent être retournés |
| 56 | |
| 57 | explorer(i, j, dir) |
| 58 | Si Vide ou Dehors |
| 59 | Rien à faire |
| 60 | Sinon |
| 61 | Si PionAdverse |
| 62 | explorer CaseSuivante |
| 63 | Sinon |
| 64 | RetournerPionsRencontrés |