Outils pour utilisateurs

Outils du site


wiki:ateliers:arduino:3

LE JEU DE NIM

Objectif de la séance

Implémenter une version simple du jeu de Nim sur Arduino, et faire jouer deux arduinos sans fil via Xbee.

Template à récupérer

Début du jeu

Il y a N bâtonnets (N=100 par défaut).

But du jeu

Ne pas être celui qui va retirer le dernier bâtonnet

Comment jouer

  • La partie se joue à deux joueurs.
  • Le premier joueur retire 1 ou 2 ou 3 bâtonnets.
  • Le second joueur joue à son tour en respectant la même règle.
  • La partie continue jusqu'à ce qu'un joueur retire le dernier bâtonnet.

Implémentation

Phase 1 : Connexion à l'arbitre.

  1. Les joueurs doivent envoyer la lettre d'identification et l'adresse de leur XBee.

Phase 2 : Déroulement du jeu.

  1. Un joueur en attente reçoit X (valeur aléatoire défini par l'arbitre) bâtonnets.
  2. Il retire 1, 2 ou 3 bâtonnets au total.
  3. Il envoie le résultat à l'arbitre.
  4. L'autre joueur reprend à l'étape 1 jusqu'à qu'il ne reste plus qu'un bâtonnet.

:!: Celui qui prend le dernier bâtonnet à perdu.

Approche du module XBee

Configuration

Après avoir correctement connecté le shield et le module XBee à votre Arduino il faut lui affecter un réseau. Pour ce TP, vous configurerez votre Xbee sur le même réseau que celui de votre adversaire.

Ensuite, il faut affecter à votre Xbee une adresse (l'équivalent d'une IP) afin qu'on puisse le contacter, et définir l'adresse de son destinataire. Mettez vous d'accord avec votre adversaire afin de configurer correctement la connexion.

Validation de la configuration

Afin de valider votre configuration, nous avons un XBee branché sur notre ordinateur et celui-ci devra recevoir votre message. Notre Xbee se situe sur le réseau 42, et possède l'adresse 1337.

Vous avez maintenant tous les outils pour commencer l'implémentation de la version simple du jeu de Nim.

Bonus

<spoiler | Jeu arbitré>

Pour ceux ayant fini en avance, voici de quoi vous occuper un peu plus longtemps.
  • *Bonus.1 : Arbitre simple Deux arduinos jouent de la même manière que précédemment, sauf qu'ils envoient toutes les opérations à la fois à leur adversaire ainsi qu'à un arbitre (3ème arduino). Cet arbitre vérifie que chaque chaopération est valide du point de vue des règles, et affiche sur son terminal série le déroulement de la partie, ainsi que le vainqueur. En cas de triche / timeout, il donne la victoire à l'autre joueur, et le signifie aux deux joueurs. Bonus.2 : Arbitre Multi Joueurs**

Maintenant, nous souhaitons faire en sorte que tout un tournoi de ce jeu se déroule de manière automatisée, géré par un seul arbitre. Cet arbitre annoncerait les matchs, gèrerait les parties, puis annoncerait les matchs suivant, à la manière d'une ronde suisse (log2(nb joueurs) matchs).

Pour cela, il faut donc définir un protocole de broadcast (tous les joueurs parlent à l'arbitre, et l'arbitre parle à tous les joueurs) afin que l'arbitre gère chaque partie indépendamment les unes des autres, sans conflit, et que chaque joueur puisse savoir quel message de l'arbitre lui est destiné.

</spoiler>

wiki/ateliers/arduino/3.txt · Dernière modification: 2020/10/05 16:39 (modification externe)