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 :
- Jouer vous même ou à deux (avec des pièces, pâtes, allumettes, ...), pour trouver comment calculer le nombre d'objets à retirer pour gagner,
- Ecrire sous forme de diagramme de flux (ou logigramme) ou pseudo-code l'algorithme correspondant
- 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"
- Puis examiner avec attention le canevas d'application fourni pour bien comprendre ces mécanismes et leur utilisation.
- 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