Conception préalable à la réalisation

Version textuelle

Présentation :

Nous allons voir comment concevoir un jeu de nim avec Scratch. Nous ne verrons pas pour l'instant comment calculer le nombre de nims à retirer pour gagner. Ce calcul sera fait plus tard dans la procédure calculerLeNombreARetirer.

Ce que vous allez faire :

  • Décrire et analyser le jeu,
  • identifier les objets et les variables qui décrivent l'état des objets et du jeu,
  • identifier les évènements et décrire les comportements (algorithmes) associés à chacun de ces évènements,
  • établir un diagramme de flux ou logigramme pour représenter l'ensemble des ces comprtements et leur enchaînement.

Ce que vous allez apprendre ou approfondir :

  • la méthode d'analyse ou de décomposition fonctionnelle d'un projet,
  • la représentation du fonctionnement d'une application sous forme de diagramme de flux ou logigramme,
  • la notion d'objet, et d'instances d'objet sous forme de clones,
  • les listes qui permettent de stocker une liste de valeurs et d'y accéder en lecture ou écriture par leur index.

Ressources en entrée :

  • un crayon, un papier et une gomme,
  • la règle du jeu : chacun retire à son tour entre un trois nims et c'est celui qui retre le dernier qui a gagné.

Réalisation :

La réalisation comprend les étapes suivantes :

  1. descrire le jeu
  2. identifier les objets (sprites) intervenant dans le jeu
  3. identifier les variables descriptives des objets et du jeu
  4. identifier les évènements externes à prendre en compte
  5. réaliser un diagramme de flux ou logigramme de l'application

Description du jeu

  • A l'ouverture, les nims sont affichés à l'écran. Le joueur doit sélectionner entre 1 et 3 nims. Les nims sélectionnés changent alors de couleur.
  • Si le joueur clique à sur un nim sélectionné, il est dé-selectionné et revient à sa couleur originale.
  • Le joueur confirme ensuite son choix en cliquant sur le bouton "jouer" et ce choix est validé si le nombre de nims sélectionnés est compris entre 1 et 3. Ces nims sont supprimés et c'est à l'ordinateur de jouer.
  • L'ordinateur calcule le nombre de nims à retirer, les sélectionne pour changer leur couleur et les supprime. C'est à nouveau au joueur de jouer.
  • Le jeu se termine quand il n'y a plus de Nim. Le gagnant qui a supprimé le dernier nim est affiché.

Objets (sprites) intervenant dans le jeu

  • Sur un fond de scène, le jeu comprend autant d'objets que de Nims et un bouton affiché quand c'est au joueur de jouer.
  • Tous les nims sont identiques et on pourra les définir comme une liste de clones d'un objet original.
  • Le bouton correspond au sprite qui est le moteur de l'application. Un clic sur le bouton va déclencher l'exécution du choix de l'utilisateur, suivie de l'éxécution de l'algorithme qui correspond au choix de l'ordinateur.

Variables descriptives de l'état des objets et du jeu

  • Chaque nim est caractérisé par un numéro et son état (actif/on, sélectionné/select, effacé/off). Il est affiché au départ à une position en x et y qui dépend de son numéro ou index.
  • A tout moment, l'état du jeu peut être caractérisé par :
    • le nombre de nims
    • le nombre de nims actifs
    • le nombre de nims sélectionnés
    • une variable qui indique si c'est au joueur ou à l'ordinateur de jouer : joueurPeutJouer?

Evènements externes à prendre en compte

  • Clic sur le drapeau vert : démarrage du jeu
    • définir le nombre de nims (nombreDeNims)
    • créer les nims à partir d'un modèle et
      • affecter un index à chaque nim
      • enregistrer l'état de chaque nim (actif/on) das une liste
      • placer ces nims au bon endroit et à la bonne taille sur l'écran
      • (et masquer le modèle original)
  • Clic sur un nim pour le sélectionner ou le déselectionner
    • Ce nim est sélectionné s'il ne l'est pas : l'état de ce nim passe de on à select dans la liste et sa couleur change
    • Ce nim est dé-sélectionné s'il l'est déjà : l'état de ce nim passe de select à on dans la liste et sa couleur revient à la couleur initiale
  • Clic sur le bouton jouer pour valider le choix de l'utilisateur
    • vérifier que le nombre de nims sélectionnés est compris entre 1 et 3,
      si non : message d'alerte
      si oui :
      • empêcher le joueur de continuer àjouer : joueurPeutJouer = non
      • supprimer ces nims : leur état passe de select à off dans la liste
      • tester si le nombre de nims actifs est agal à 0
        si oui : le joueur a gagné
        si non : appel de la procédure qui va faire jouer l'ordinateur
  • La procédure qui va faire jouer l'ordinateur va
    • calculer le nombre de nims à effacer : calculerLeNombreDeNimsARetirer
    • sélectionner le nombre de nims correspondant :selectionnerLesNimsARetirer
    • effacer ces nims en appelant
    • tester si le nombre de nims actifs est agal à 0
    • si oui : l'ordinateur a gagné
    • sinon : autoriser le joueur à jouer : "joueurPeutjouer?" = oui

Diagrame de flux ou logigramme correspondant

Quiz / auto contrôle:

à compléter ou supprimer

Extensions possibles / pour votre portfolio

à compléter ou supprimer