Nim Introduction

Présentation :

Les jeux de Nim sont des jeux de stratégie pure, à deux joueurs. Il en existe plusieurs variantes. Ils se jouent avec des graines, des billes, des jetons, des allumettes ou tout autre objet facilement manipulable.
Ce jeu consiste à enlever 1, 2 ou 3 objets à chaque tour. Le vainqueur est celui qui peut jouer en dernier. Voici un exemple de partie : 20 -> 19 -> 16 -> 13 -> 12 -> 10 -> 8 -> 5 -> 4 -> 3 -> 0

(source Wikipedia)

Pour ce jeu, c'est vous qui devrez trouver la la bonne stratégie pour gagner. Vous pourrez ensuite écrire l'algorithme puis le coder et l'ajouter à un canevas d'application Scratch qui vous est fourni.

Ce que vous allez faire :

  1. Jouer vous même ou à deux (avec des pièces, pâtes, allumettes, ...), pour trouver comment calculer le nombre d'objets à retirer pour gagner,
  2. Ecrire sous forme de diagramme de flux (ou logigramme) ou pseudo-code l'algorithme correspondant
  3. Voir dans Scratch (avant de passer au code) :
    • la notion de liste pour gérer dans une variable une liste de valeurs,
    • la création de clones d'un objet original (notion d'objet et d'instance)
    • la différence entre variable globale et locale (pour un sprite seulement)
    • l'utilisation des messages pour synchroniser des actions avec l'évènement "quand je reçois"
  4. Puis examiner avec attention le canevas d'application fourni pour bien comprendre ces mécanismes et leur utilisation.
  5. Puis coder et tester votre algorithme en modifiant la procédure qui calcule le nombre de nims à retirer en fonction du nombre de nims encore présents.

Ce que vous allez apprendre (notions abordées) :

  • L'analyse et l'écriture d'un algorithme en diagramme de flux (logigramme) ou pseudo code
  • La notion de liste qui est une variable avec plusieurs valeurs accessibles par leur numéro (index ou indice).
  • La notion d'objet et d'instance d'objet (qui hérite des fonctions et propriétés du modèle ou de sa classe)
  • La différence entre variable globale (pour tous les sprites) et variable locale (pour un sprite ou un clone seulement)
  • l'utilisation des messages pour synchroniser des comportements

Ressources en entrée :

https://onvaessayer.org/vaucanson?sb=nimStart