Date : 15/06/2003, 22:41:33 Auteur : Xavier Crégut Titre : -------------------------------------------------------------------------------- Cette dernière semaine ne contient pas de cours mais seulement un exercice de synthèse. Il s'agit de programmer un jeu de puissance 4 qui permet à deux joueurs de faire plusieurs parties l'un contre l'autre. Chaque joueur peut être soit la machine soit un joueur humain. Un programme en C est donné mais il ne contient que la gestion des joueurs et des parties. Il manque ce qui concerne les règles du jeu de puissance 4 et qui fait l'objet des questions listées dans le sujet de la semaine 4. Il vous est donc demandé de le compléter. Les parties à compléter sont repérées par un commentaire /* ... À FAIRE ... */. Avant de le compléter, il peut être intéressant de regarder le programme fourni, de voir comment il est structuré, comme est représenté un joueur, comment sont gérées les parties, etc. La question 1 propose de définir l'aire de jeu. Elle est en fait définie dans le programme donnée. L'idée est de définir un tableau de cases avec une bordure supplémentaire. Ceci évite, dans de nombreux cas, à avoir à vérifier que les indices sont valides. Le sujet contient 8 questions. La dernière doit être considérée comme optionnelle. La question la plus difficile est certainement la question 6 qui consiste à compter le nombre de pions alignés en incluant le pion d'une case donnée. Il s'agit donc de regarder dans les trois directions (horizontale, verticale et en diagonale). On peut alors modéliser la direction par deux variables dir_x et dir_y qui indiquent le déplacement suivant les x et y pour trouver les cases suivantes à tester. Partant de la case considérée, il suffit d'ajouter dir_x et dir_y à ligne et colonne et de regarder que la couleur est toujours la même. Repartant de la case initiale, il faut compter également dans la direction inverse en enlevant dir_x et dir_y. La question 3 propose d'afficher la grille. On ne dispose pas de fonctions pour se positionner n'importe où sur l'écran. En conséquence, il faut afficher la grille ligne par ligne (en commençant par le haut). Les exercices 2, 4, 5 et 7 sont très courts. Ils peuvent tous s'écrire en quelques lignes. Attention, pour que le programme fourni compile, j'ai été obligé d'écrire une condition de manière un peu étrange : else if ( /*{ le coup colonne est impossible }*/ /* ... À FAIRE ... */ true ) { printf("Il est impossible de jouer dans la colonne %d !\n", colonne); } Il faut remplacer true par la condition qui dit si le coup est impossible. Le programme fourni devrait provoquer un message d'avertissement lors de la compilation car la variable grille n'est pas utilisée. C'est parce que c'est à vous d'écrire le code qui la concerne... -------------------------------------------------------------------------------- $Log$