info3_enonce_be_2015.pdf

5
Université Paul Sabatier 2014-2015 L1 Info3 Algorithmique et programmation Informatique 3 – TP 9 Jeu Contamination L'objectif est de réfléchir à la représentation de données et à la décomposition en sous-programmes d'un algorithme de haut niveau. Les types utilisateurs nécessaires à la mise en œuvre seront définis. 1. Règles jeu Contamination Le jeu Contamination est un jeu de pions joué sur un plateau dans lequel deux joueurs s'affrontent, représentés chacun par une couleur (les noirs et les blancs). Il se joue sur un plateau carré 8x8. Le ga- gnant est celui qui termine la partie en ayant plus de pions que l'adversaire. Position de départ : Chaque joueur démarre avec huit pions, ces huit pions étant initialement placés sur une rangée en haut ou en bas du plateau, selon la couleur : ☻☻☻☻☻☻☻ ☺☺☺☺☺☺☺☺ Coups possibles : En utilisant les déplacements horizontaux, verticaux et en diagonale, chaque pion peut être soit : copié : c'est-à-dire copié dans l'une des cases adjacentes libres, (au maximum 8 cases sont pos- sibles) ; déplacé : en sautant (sans être dédoublé) dans une case libre à une distance de 2 (c'est à dire ap- partenant au carré de 16 cases entourant le carré adjacent à la case initiale). Illustration ci dessous : à partir de la position de gauche, le pion situé à l'intersection de la ligne 5 et de la colonne 3 peut soit être copié dans une des 4 positions avec un C soit être déplacé en une des 5 positions marquées avec un S. ☺☻☻ ☺☺ ☻☻☻☺☺☺☺ ☻☻ ☺☺☻☻☻☻ ☻☻☻ ☺☺☺☻ ☻☻☺ ☺☻☻ ☻☺ ☺☻☻ ☺☺ ☻☻☻☺☺☺☺ ☻☻C C S S ☺☺☻☻☻☻ S ☺C C S ☻☻☻ ☺☺☺☻S ☻☻☺ ☺☻☻ ☻☺ Jeu Contamination

Upload: timothy-holland

Post on 29-Sep-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

  • Universit Paul Sabatier 2014-2015 L1 Info3 Algorithmique et programmation

    Informatique 3 TP 9Jeu Contamination

    L'objectif est de rflchir la reprsentation de donnes et la dcomposition en sous-programmesd'un algorithme de haut niveau. Les types utilisateurs ncessaires la mise en uvre seront dfinis.

    1. Rgles jeu ContaminationLe jeu Contamination est un jeu de pions jou sur un plateau dans lequel deux joueurs s'affrontent,reprsents chacun par une couleur (les noirs et les blancs). Il se joue sur un plateau carr 8x8. Le ga-gnant est celui qui termine la partie en ayant plus de pions que l'adversaire. Position de dpart :Chaque joueur dmarre avec huit pions, ces huit pions tant initialement placs sur une range en haut ou enbas du plateau, selon la couleur :

    Coups possibles :En utilisant les dplacements horizontaux, verticaux et en diagonale, chaque pion peut tre soit :copi : c'est--dire copi dans l'une des cases adjacentes libres, (au maximum 8 cases sont pos-sibles) ;dplac : en sautant (sans tre ddoubl) dans une case libre une distance de 2 (c'est dire ap-partenant au carr de 16 cases entourant le carr adjacent la case initiale).Illustration ci dessous : partir de la position de gauche, le pion situ l'intersection de la ligne 5 etde la colonne 3 peut soit tre copi dans une des 4 positions avec un C soit tre dplac en une des 5positions marques avec un S.

    C C S

    S

    S C C S

    S

    Jeu Contamination

  • Universit Paul Sabatier 2014-2015 L1 Info3 Algorithmique et programmation

    dans les deux cas (que le pion soit copi ou dplac), tous les pions de l'adversaire qui sont ad-jacents la case de destination changent de couleur, et donc de camp.

    C

    Blanc joue le pion en ligne 5 etcolonne 3 vers le haut dans lacase marque C.

    Il est copi vers le haut et sa co-pie contamine ses voisins ad-verses.

    Situation finale

    Blanc copie un pion

    S

    Blanc joue le pion en ligne 5 etcolonne 3 vers la case marqueS.

    Il se retrouve dans la nouvelleposition et contamine ses voi-sins adverses .

    Situation finale

    Blanc dplace un pion

    Chacun joue tour de rle son tour en effectuant une copie ou un saut, en jouant un pion de sa couleur.On ne peut passer son tour que lorsqu'on n'a plus aucune possibilit de mouvement. Fin de partie :La partie se termine lorsque le plateau est rempli. Le gagnant est alors celui qui a le plus de pions de sacouleur.La partie peut se terminer plus tt si un joueur n'a plus de pion jouer puisque les cases encore videspeuvent tre conquises par (et donc attribues ) son adversaire.En fin de partie, il est parfois possible que les adversaires puissent jouer en boucle les mmes positions sansrussir terminer la partie. Aucune rgle permettant de lutter contre cet tat de fait n'a t nonce. Ce casest heureusement assez rare.

    Jeu Contamination

  • Universit Paul Sabatier 2014-2015 L1 Info3 Algorithmique et programmation

    2. Travail demand (3 sances de TP complt par du travail personnel)Il sagit de mettre en uvre un jeu Contamination o lutilisateur devra pouvoir jouer dans un premier tempscontre un autre joueur et dans un deuxime temps contre l'ordinateur. L'affichage du plateau de jeu sera fait grce des affichages de caractres. Exemple :

    1 2 3 4 5 6 7 8 ----------------- A |X| | | | | |O| | ----------------- B | |X| | | | |O| | ----------------- C | |X| | | | | | | ----------------- D | | | | | | | | | ----------------- E |O|O| | | | | | | ----------------- F |O| | | | |X| | | ----------------- G |O| | | | | |X| | ----------------- H | | | | | | | | | -----------------Veuillez entrer le coup que vous voulez jouer. Entrez d'abord la case dedpart sous la forme : ligne dpart colonne dpartPar exemple : A1 (N.B. les lignes sont des lettres majuscules) C2Entrez maintenant la case d'arrive sous la mme forme (p.ex. B3) :D1 1 2 3 4 5 6 7 8 ----------------- A |X| | | | | |O| | ----------------- B | |X| | | | |O| | ----------------- C | |X| | | | | | | ----------------- D |X| | | | | | | | ----------------- E |X|X| | | | | | | ----------------- F |O| | | | |X| | | ----------------- G |O| | | | | |X| | ----------------- H | | | | | | | | | -----------------

    Jeu Contamination

  • Universit Paul Sabatier 2014-2015 L1 Info3 Algorithmique et programmation

    Dans tous les cas, le programme devra vrifier la validit des coups jous (respect des rgles du jeu) et dtec-ter les situations finales.

    2.1. Travail prliminaire ( faire avant la 1re sance de TP)1.Dfinir les donnes et types utilisateurs ncessaires l'criture de votre programme (constantes et struc-tures de donnes). Parmi les objets qu'il faut reprsenter au sein du programme, on peut citer : le plateau dejeu, les (couleurs des) pions, les joueurs (pour savoir qui est le tour, par exemple); il faut reprsenter lescoups et donc aussi les (coordonnes des) cases du plateau. Commencer par lister les oprations que l'on seraamener effectuer sur chacun de ces objets avant de choisir leurs types en consquence. (N.B. La reprsenta -tion interne d'un objet est souvent diffrente de sa reprsentation lors de l'affichage.) 2.Ecrire un algorithme de haut niveau permettant de jouer 2 joueurs, chacun plaant un pion son tour.Chaque joueur joue son tour selon le principe suivant : choix d'un pion de sa couleur (case de dpart) etchoix de la case d'arrive. Selon la distance entre la case de dpart et la case d'arrive, le programme dter-mine le type d'action (copie ou dplacement), effectue le coup en modifiant le plateau et affiche le rsultat. 3.A partir de l'algorithme de premier niveau, dduire les sous-programmes (fonctions et procdures) nces-saires, ainsi que leurs en-ttes respectives, en prcisant le mode de liaison de chaque paramtre (in, out ou inout). 4.Vous devez commencer par crire les sous-programmes permettant de crer, initialiser et afficher le pla -teau de jeu sous la forme d'un tableau deux dimensions dont les lments reprsentent les cases vides, lescases occupes par un pion blanc et les cases occupes par un pion noir. 5.Ecrivez le programme principal Ada permettant de tester les sous-programmes que vous avez crits.

    2.2. Version 1 : 2 joueurs sans vrifications1.Ecrivez le code des sous-programmes permettant de jouer 2 joueurs, sans faire de vrifications (on consi -dre que les joueurs ne se trompent pas !).2.Testez le code.

    2.3. Version 2 : 2 joueurs avec vrification de la validit des coupsAttention : travaillez sur une copie de votre code pour dvelopper une nouvelle version, pour conserver lesversions prcdentes qui fonctionnent.A chaque coup, le programme devra vrifier la validit des coups avant qu'ils soient jous (respect des rglesdu jeu). 1.Modifiez votre algorithme de jeu afin de vrifier la validit d'un coup (cases de dpart et d'arrive valides).S'il est correct, le coup est jou et le plateau modifi est affich, sinon, un message est affich pour prvenirl'utilisateur que le coup est invalide et qu'il doit modifier son choix.2.Modifiez votre code pour prendre en compte la vrification.3.Testez le code.

    2.4. Version 3 : 2 joueurs et vrification de la terminaison du jeu1.Modifiez votre algorithme pour dtecter les situations finales aprs qu'un coup ait t jou et arrter la par -tie si elle est termine.2.Modifiez votre code pour prendre en compte la vrification.3.Testez le code.

    2.5. Version 4 : 1 joueur contre la machine niveau 11.Ecrivez un algorithme permettant au programme de jouer contre un joueur au niveau 1. Dans ce cas, le pro -gramme choisit un pion de sa couleur et une action (copie ou dplacement) au hasard (ou dans une versionencore plus simple programmer, le programme choisit le premier coup possible qu'il trouve). 2.Ecrivez le code du ou des sous-programmes ncessaires pour faire jouer un joueur contre la machine au ni-veau 1.3.Testez le code.

    Jeu Contamination

  • Universit Paul Sabatier 2014-2015 L1 Info3 Algorithmique et programmation

    2.6. Version 5 : 1 joueur contre la machine niveau 21.Ecrire un algorithme permettant la machine de jouer contre un joueur au niveau 2, en choisissant unestratgie pour le coup jouer de faon augmenter ses chances de gagner. Vous tes libre de choisir unestratgie en vous inspirant de celles listes ci-dessous. Dans un premier temps, le programme pourrait choisirle coup qui maximise la diffrence (nombre de mes pions)-(nombres de pions de l'adversaire).2.Ecrivez le code du ou des sous-programmes ncessaires pour faire jouer un joueur contre la machine au ni-veau 2.

    3.Testez le code.

    3. lments de stratgie

    Contrler les rebondissements... Par la rgle qui consiste s'approprier les pions adverses adjacents la case de destination, chaque partie estl'objet de rebondissements multiples et spectaculaires qui font d'ailleurs tout l'intrt de ce jeu. Une situationn'est jamais acquise ni dfinitive, et rares sont les cases qui, la fin d'une partie, n'auront pas t conquisespuis reconquises plusieurs fois par chacun des adversaires. Le joueur est sans cesse confront un choix stra-tgique entre copie et saut, qui peut tre lourd de consquences, et il est assez difficile d'valuer la situationdeux ou trois coups l'avance. Blocages : La prsence de plusieurs pions d'une mme couleur peut engendrer le blocage de certaines zones. Il faut ap -prendre en profiter. Inversement, prenez garde ne pas vous laisser enfermer : ou bien vous devez sauter etlibrer une case trs vulnrable, ou bien vous ne pouvez plus jouer si toutes les cases libres sont plus dedeux cases de vos pions. L'adversaire remplit alors tranquillement toutes les cases restantes.

    Jouer le dernier On doit souvent faire en sorte de jouer le dernier, si possible en perdant peu de pions et en rempor-tant beaucoup. Le diffrentiel peut tre important et bien des parties se gagnent sur ce dernier coup.Pour cela, en fin de partie, il faut appliquer au mieux les rgles suivantes en essayant de les concilier :

    refuser de jouer par copie dans le dernier espace lorsqu'il est constitu de 2 cases ; on prfrera sauterpour dplacer cet espace,

    inversement, obliger l'adversaire jouer par copie dans le dernier espace de 2 cases, condition de lematriser en y accdant par copie (si on doit y sauter, on risque de se dgarnir ailleurs),

    obliger l'adversaire sauter dans le dernier espace d'une case peu entoure, tout en lui faisant librerune case trs entoure par ses pions, laquelle on accde par copie.

    Jeu Contamination

    1. Rgles jeu Contamination2. Travail demand (3 sances de TP complt par du travail personnel)2.1. Travail prliminaire ( faire avant la 1re sance de TP)2.2. Version 1 : 2 joueurs sans vrifications2.3. Version 2 : 2 joueurs avec vrification de la validit des coups2.4. Version 3 : 2 joueurs et vrification de la terminaison du jeu2.5. Version 4 : 1 joueur contre la machine niveau 12.6. Version 5 : 1 joueur contre la machine niveau 2

    3. lments de stratgie