Exercices Projets guidés Simuler une partie complete
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Simuler une partie complete

Pour finir, on va écrire une fonction qui simule une partie complete a partir d'une liste de coups. Ca ressemble a ce que ferait la classe Game du livre, mais en version simplifiee et testable.

Chaque coup est un tuple (symbole, ligne, colonne). Les joueurs alternent : X joue en premier, puis O, etc. La fonction doit jouer tous les coups dans l'ordre et renvoyer le résultat de la partie.

La fonction doit s'arreter des qu'un gagnant est detecte ou que la grille est pleine. Elle renvoie un dictionnaire avec :
- 'gagnant' : 'X', 'O' ou None
- 'coups_joues' : le nombre de coups effectivement joues
- 'grille' : l'état final de la grille

Écris une fonction jouer_partie(coups) qui prend une liste de tuples et simule la partie.

Exemple :
coups = [('X',0,0), ('O',1,1), ('X',0,1), ('O',1,0), ('X',0,2)]
r = jouer_partie(coups)
r['gagnant'] renvoie 'X'
r['coups_joues'] renvoie 5

Tests (4/5)

X gagne en ligne
coups = [('X',0,0),('O',1,0),('X',0,1),('O',1,1),('X',0,2)]
r = jouer_partie(coups)
assert r['gagnant'] == 'X'
5 coups joues
coups = [('X',0,0),('O',1,0),('X',0,1),('O',1,1),('X',0,2)]
r = jouer_partie(coups)
assert r['coups_joues'] == 5
Match nul
coups = [('X',0,0),('O',0,1),('X',0,2),('O',1,0),('X',1,1),('O',2,0),('X',1,2),('O',2,2),('X',2,1)]
r = jouer_partie(coups)
assert r['gagnant'] is None
O gagne en diagonale
coups = [('X',0,0),('O',0,2),('X',1,0),('O',1,1),('X',2,1),('O',2,0)]
r = jouer_partie(coups)
assert r['gagnant'] == 'O'

+ 0 tests cachés

Indices (3 disponibles)

solution.py