tc_info:tpa1

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tc_info:tpa1 [2018/10/23 12:23] edaucetc_info:tpa1 [2019/12/09 16:49] (Version actuelle) cjazzar
Ligne 1: Ligne 1:
 +====TPA2 : Tic tac toe ====
 +
 +
 +Le but de ce TP en autonomie est programmer le jeu du Tic tac toe : un joueur contre l'ordinateur.
 +<note>
 +Nous allons progresser pas à pas :
 +  * tout d'abord : les fonctions de base
 +  * puis la stratégie et les fonctions associées
 +  * le programme principal
 +</note>
 +<note>
 +<color #ed1c24>Le jeu est représenté dans le programme par une liste  de 10 ' '.
 +Les neuf cases du jeu se trouvent aux indices de 1 à 9, l'indice 0 ne sert pas.</color>
 +</note>
 +===Affichage===
 +<note>
 +voilà ce qu'on doit afficher comme représentation du jeu:
 +{{:tc_info:capture.png?400|}}
 +* les cases sont numérotées comme sur le clavier: jeu[1] en bas à gauche ... jeu[9] en haut à droite
 +{{:tc_info:capture3.png?400|}}
 +</note>  
 +===Fonctions de base===
 +<code python>
 +def trace_jeu(jeu):
 +'''cette fonction affiche le jeu passé en paramètre'''
 +</code>
 +<code python>
 +def saisie_lettre_joueur():
 +'''saisie au clavier de la lettre choisie par le joueur 'X' ou 'O'
 +retourne une liste avec en premier la lettre du joueur puis en second la lettre de l'ordinateur'''
 +</code>
 +<code python>
 +def qui_commence():
 +''' choisit par un random qui commence à jouer '''
 +</code>
 +<code python>
 +def rejoue():
 +'''cette fonction retourne True si le joueur veut rejouer, False sinon'''
 +</code>
 +<code python>
 +def joue(jeu,lettre,lieu):
 +'''met dans la liste jeu la lettre à la place lieu'''
 +</code>
 +<code python>
 +def a_gagne(jeu, lettre):
 +'''retourne True si le joueur représenté par la lettre agané le jeu'''
 +</code>
 +<code python>
 +def copieJeu(jeu):
 +'''retourne une copie de la liste jeu'''
 +</code>
 +<code python>
 +def place_libre(jeu,place):
 +''' retourne True si la place est libre sur le jeu'''
 +</code>
 +<code python>
 +def saisie_coup_suivant(jeu):
 +''' saisit le coup suivant du joueur'''
 +</code>
 +<code python>
 +def choix_coup_dans_ liste(jeu,liste_coups):
 +'''retourne un coup possible de la liste liste_coups (choisi au hasard si plusieurs possibles)'''
 +</code>
 +<code python>
 +def jeu_complet(jeu):
 +''' retourne True s'il n'y a plus de place dans le jeu'''
 +</code>
 +===Stratégie===
 +<note>
 +Stratégie de l'ordinateur
 +  * regarde d'abord si il y a un coup qui peut le faire gagner
 +  * sinon si il y a un coup qui peut faire gagner le joueur alors il le bloque
 +  * sinon, s'il y a un coin de libre, y joue
 +  * sinon, si le centre est libre, y joue
 +  * sinon joue sur un des côtés
 +</note>
 +<code python>
 +def coup_ordinateur(jeu, lettre_ordinateur):
 +'''détermine quel coup doit jouer l'ordinateur'''
 +</code>
 +===Programme principal===
 +<note>
 +Algo général:
 +
 +* <color #ff7f27>BOUCLE EXTERNE:</color> 
 +  * demande au joueur quelle lettre il veut
 +  * décide qui commence
 +  * <color #ffc90e>BOUCLE</color>
 +    * si c'est le joueur
 +        *  montre le jeu
 +        * saisit le coup du joueur
 +        * place la lettre du joueur dans le jeu
 +        * regarde si le joueur a gagné : partie finie
 +        * regarde si le jeu est plein : match nul et partie finie
 +        * si ni l'un ni l'autre c'est au tour de l'ordinateur: on recommence la BOUCLE
 +    * sinon ( ordinateur)
 +        * détermine quel coup doit jouer l'ordinateur
 +        * place la lettre de l'ordinateur dans le jeu
 +        * regarde si l'ordinateur a gagné partie finie
 +        * regarde si le jeu est plein : match nul et partie finie
 +        * si ni l'un ni l'autre c'est au tour du joueur: on recommence la BOUCLE
 +    * si partie finie: demande au joueur s'il veut faire une autre partie: 
 +      * si oui on recommence la BOUCLE EXTERNE
 +      * sinon on s'arrête
 +</note>
 +
 +