Le jeu du Roi
Règle du jeu
- Sur un échiquier carré de taille donnée, deux joueurs déplacent chacun leur tour un Roi.
- Trois types de mouvement sur l'échiquier sont autorisés :
- ← : une case vers la gauche,
- ↑ : une case vers le haut,
- ↖ : une case en diagonale, en haut à gauche.
- Il y a aussi des pions sur l'échiquier ; des obstacles.
- Le joueur qui ne peut plus jouer a perdu.
Définitions
L'échiquier est carré et de taille quelconque n.
Les cases sont identifiées avec leur ligne puis leur colonne : (i, j).
Ainsi, on aura 1 <= i <= n et 1 <= j <= n pour toute case (i, j) de l'échiquier de taille n. L'indice 0 correspond à un bord de l'échiquier, soit à gauche, soit en haut.
Une position perdante est une position du Roi qui n'autorise aucun nouveau mouvement.
Il ne peut pas y avoir de match nul.
Une position gagnante est une position du Roi qui garantit à un joueur stratège qui commence de pouvoir gagner.
Exemple
- Le coin en haut à gauche
(1, 1)est une position perdante. Un joueur qui commence là a perdu, il ne peut plus jouer ! On a marqué une croix. - Les cases
(2, 1)et(1, 3)sont des obstacles, avec des pions. - La case
(3, 1)est perdante, un joueur qui commence là est bloqué. - Les cases
(1, 2)et(2, 2)sont gagnantes. Un joueur qui commence là peut jouer en(1, 1)et le joueur suivant perd ! - La case
(3, 2)est gagnante. On peut jouer en(3, 1)et le suivant perd ! - La case
(3, 3)est gagnante. On peut jouer en(2, 3)et le suivant perd ! C'est ce mouvement qui est représenté par la flèche.
Modélisation
Un échiquier est modélisé par une liste de ses lignes.
Chacune de ses lignes est une liste de caractères, où :
'0': indique une position perdante,'1': indique une position gagnante,'#': indique le bord en haut ou le bord à gauche de l'échiquier,'P': indique un pion.
⚠️ La ligne et la colonne d'indice 0 modélisent le bord en haut et à gauche de l'échiquier, une zone hors jeu.
jeu = [
['#', '#', '#', '#', ],
['#', '0', '1', 'P', ],
['#', 'P', '1', '0', ],
['#', '0', '1', '1', ],
]
Exercice
Coder une fonction jeu_roi :
- qui prend en paramètres :
- un entier
n: la taille de l'échiquier carré, - une liste
pos_pionsde tuple donnant la ligneiet la colonnejde chaque pion.- On garantit
1 <= i <= net1 <= j <= n, pour chaque pion.
- On garantit
- un entier
- et qui renvoie l'échiquier modélisé comme indiqué ci-dessus.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)