Fonctions - Introduction#

Déplacement des pièces#

Aux échecs, chaque pièce se déplace différemment:

  • La tour se déplace d'un nombre quelconque de cases horizontalement ou verticalement.

  • Le roi se déplace d'une seule case dans toutes les directions.

  • La dame se déplace d'un nombre quelconque de cases verticalement, horizontalement ou en diagonale sans pouvoir sauter une pièce.

  • Le fou se déplace d'un nombre quelconque de cases en diagonale sans pouvoir sauter une pièce.

  • Le cavalier se déplace en L, c'est-à-dire de deux cases dans une direction (horizontalement ou verticalement), puis d'une case perpendiculairement. Il est le seul à pouvoir sauter par-dessus une pièce lors de son mouvement.

  • Le pion avance d'une case à la fois. Il se déplace d'une case en diagonale en prenant une pièce adverse. S'il n'a pas encore bougé, il peut avancer de deux cases d'un coup, sans pouvoir sauter une pièce.

Exercice 1#

  1. Essayez de comprendre le programme en comparant le programme et le résultat.

  2. Modifiez le programme pour que le roi suive les numéros.

nord()
est()
nord()
nord()
ouest()

Exercice 2#

Écrivez le programme qui permet à la tour de prendre tous les pions noirs en un minimum de coups.

# Écrivez le programme ici

Exercice 3#

Le programme de l'exercice précédent contient des répétitions de suites d'instructions (nord() suivi de est()), mais il n'est pas possible d'utiliser une boucle for, car il y a d'autres instructions entre. La solution est de définir une nouvelle fonction diagonale().

Résolvez l'exercice précédent en appelant la fonction diagonale à la place de répéter du programme.

De cette manière le programme est plus lisible!

# définition de la fonction diagonale
def diagonale():
  est()
  nord()

# appel de la fonction
diagonale()

Exercice 4#

Pour avoir des pièces qui se déplacent vraiment en diagonale comme le roi, de nouvelles fonctions ont été définies.

  1. Essayez de comprendre le programme en comparant le programme et le résultat.

  2. Modifiez le programme pour que le roi suive les numéros.

nord_ouest()
nord()
nord_est()
sud_ouest()

Exercice 5#

Modifiez le programme pour que la tour suive les numéros.

for _ in range(3):
  nord()

Exercice 6#

On constate qu'il y a beaucoup de répétitions malgré l'utilisation de boucles for et cela ne représente pas réellement le déplacement de la tour qui se déplace en général de plusieurs cases en un coup.

Il serait mieux de pouvoir indiquer entre parenthèse le nombre de cases desquelles on veut déplacer la tour. Pour cela, il faut définir une nouvelle fonction.

  1. Définissez de la même manière les autres fonctions aller_est, aller_ouest et aller_sud.

  2. Résolvez l'exercice précédent en appeler les fonctions.

# définition de la fonction aller_nord qui prend le nombre de cases en paramètre
def aller_nord(nb_cases):
  for _ in range(nb_cases):
    nord()

# appel de la fonction pour que le programme effectue l'action demandée
aller_nord(3)

Exercice 7#

En utilisant les fonctions nord(nb_cases), sud(nb_cases), est(nb_cases) et ouest(nb_cases), écrivez le programme pour que la tour prenne tous les pions noirs en un minimum de coups.

# Écrivez le programme ici

Exercice 8#

La fonction deplace(x, y) a été définie.

  1. Essayez de comprendre le programme en comparant le programme et le résultat.

  2. Modifiez le programme pour que le roi suive les numéros.

deplace(2, 0)
deplace(-4, 4)
deplace(0, -3)

Exercice 9#

En utilisant la fonction deplace(x, y), définissez une fonction deplace_fou(direction, nb_cases) où le premier paramètre est la direction du mouvement ("ne", "se", "so" ou "no") et le deuxième est le nombre de cases.

def deplace_fou(direction, nb_cases):
  # Complétez la définition de la fonction
  pass

# programme principale qui déplace le fou en suivant les numéros
deplace_fou("no", 2)

Exercice 10#

En utilisant la fonction deplace_fou(direction, nb_cases) définie à l'exercice précédent, déplace le fou prendre le pion noir.

# Écrivez le programme ici

Exercice 11#

En utilisant la fonction deplace(x, y), définissez une fonction deplace_roi. Quels paramètres sont nécessaires?

# Écrivez le programme ici

Exercice 12#

En utilisant la fonction deplace(x, y), définissez une fonction deplace_cavalier qui permet depuis le centre d'atteindre chacun des pions noirs. Quels paramètres sont nécessaires?

# Écrivez le programme ici

Exercice 13#

En utilisant la fonction deplace_cavalier(direction) définie à l'exercice précédent, déplacez le cavalier pour prendre tous les pions noirs en un minimum de coups.

# Écrivez le programme ici

Exercice 14#

En utilisant la fonction deplace(x, y), définissez une fonction deplace_dame. Quels paramètres sont nécessaires?

# Écrivez le programme ici

Exercice 15#

En utilisant la fonction deplace_dame(direction, nb_cases) définie à l'exercice précédent, déplacez la dame pour prendre tous les pions noirs en un minimum de coups.

# Écrivez le programme ici

Exercice 16#

En utilisant la fonction deplace_cavalier(direction) définie à l'exercice précédent, déplacez le cavalier pour prendre tous les pions noirs en un minimum de coups.

# Écrivez le programme ici

Exercice 17#

En utilisant la fonction deplace_cavalier(direction) définie à l'exercice précédent, déplacez le cavalier pour prendre tous les pions noirs en un minimum de coups.

# Écrivez le programme ici