MasterMind en spécialité i.s.n.

download MasterMind en spécialité i.s.n.

If you can't read please download the document

description

MasterMind en spécialité i.s.n. Projet pour la spécialité ISN en terminale S, juin 2012 S. Zimmerman – A. Morouche – S. Gentilhomme. Pourquoi ce sujet ?. - PowerPoint PPT Presentation

Transcript of MasterMind en spécialité i.s.n.

  • MasterMinden spcialit i.s.n.Projet pour la spcialit ISN en terminale S, juin 2012S. Zimmerman A. Morouche S. Gentilhomme

  • Pourquoi ce sujet ?Retenant lide de J.C. Routier, proposer aux lves des projets axs sur la cration dun jeu ou dune application autour de limage ne sera pas vcu comme ne faire que des maths ou de la physique ! Mme si on fait appelle des notions mathmatiques, elles ne seront pas vcues comme telles par les lves, et le travail semblera ainsi plus ludique.

    Nous retenons lide des jeux un ou deux joueurs, et nous viennent lesprit quelques jeux assez simples :

  • Le jeu du nombre mystreExemple :Lordinateur choisit un nombre compris entre 1 et 9999. chaque tour : le joueur propose un nombreLordinateur donne une indication (suprieur ou infrieur).Obj : trouver le nombre mystre en un minimum de propositions. Le jeu est assez basique, il est possible de demander la programmation de la solution idale afin que le joueur compare son rsultat et cette dernire (sans toutefois lui indiquer la mthode).

  • Le jeu de Nim (qui existe sous diffrentes variantes)Exemple : Version de baseau dpart : un tas de 21 allumettes tour de rle : Chaque joueur retire une trois allumettes du tasObjectif : ne pas tre celui-qui retire la dernire allumette.Afin damener les lves crer une version un peu moins basique, il est possible de moduler le jeu avec 3 paramtres :le nombre dallumettes initiales (par ex. de 20 50)le nombre dallumettes que lon peut retirer (3 6)choisir le niveau dintelligence de lordinateur (choix alatoire, avec une mthode infaillible 100% ou avec un taux de 50%).

  • Le penduArchiclassique, cest la recherche dun mot ou dune expression, qui pourrait tre une bonne occasion de manipuler des chaines de caractres.

    Les tours de HanoUn jeu sans doute intressant et peu connu de nos lves, qui consiste faire passer une pile de disques classs par tailles croissantes, dun piquet vers un autre avec un piquet intermdiaire, en conservant toujours un empilement ordonn.

  • Lobjectif est atteindre en un minimum de coups, en respectant deux rgles : on ne peut dplacer plus d'un disque la fois,on ne peut placer un disque que sur un autre disque plus grand que lui ou sur un emplacement vide.

  • Le MastermindExemple :Lordinateur choisit P pions de couleurs diffrentes parmi C couleurs possibles, avec un placement particulier (C > P mais infrieur 10). chaque tour : le joueur propose P pions disposs avec prcision.Lordinateur donne deux indications : - le nombre de jetons prsents dans la combinaison- le nombre de jetons correctement placsObjectif du joueur : Trouver la combinaison gagnante.

  • Le jeu nous semble assez simple programmer, et fera intervenir la manipulation de nombres, dimages, etc.

    nous retenons donc ce projet, dabord deux membres, avec un largissement avec la venue dAbdelkrim Morouche nous proposant sa collaboration, trouvant le projet intressant, avec un rle de membre ressource.

  • Premire phase de dveloppement

  • Objectifs: Dfinir les caractristiques du jeu. Rechercher les algorithmes les plus pertinents afin dvaluer le niveau de complexit. Dvelopper un programme de test relativement simple afin de tester les solutions algorithmiques retenues.

  • Les variables qui caractrisent le jeu// La grille du jeu n'est rien d'autre qu'un tableau 2 dimensionsvar NbrLignes = 10;// Correspond aussi au nombre maximum d'essais possibles pour // trouver la combinaison (10 par dfaut).var NbrColonnes = 4;// Correspond aussi au nombre de pions dans la combinaison // (4 par dfaut)var NbrMaxiCouleurs = 6; // On limitera le jeu 6 couleurs au maximum var NbrCouleurs = 4; // Nombre de couleurs choisies par le joueur pour sa partie // (4 par dfaut et sera
  • Les variables pour grer la partievar Gagne = false; // Passe true si le joueur trouve la bonne combinaison.var Proposition = new Array(); // Tableau pour mmoriser la proposition du joueur.var NbrEssais = 0; // Mmorise le nombre de propositions faites par l'utilisateur. var NbrCoulPlacees = 0; // Nombre de couleurs bien places dans la propositionvar NbrCoulBonnes = 0; // Nombre de couleurs bonnes mais mal places

  • Algorithme Tirage alatoire dune combinaison secrte

    for(var i=0 ; i < NbrColonnes ; i++){ Combinaison[i] = Math.round(Math.random()*(NbrCouleurs - 1) + 1)}

    Cet algorithme va gnre la combinaison gagnante avec des pions qui peuvent tre de mme couleur.

  • Dans une premire bauche, nous avions imagin une combinaison secrte avec des pions diffrents, ce qui avait amen un algorithme de cette forme :POUR i ALLANT DE 0 A NbPions 1TestCouleurValide = 0// VARIABLE BOOLEENNETANT QUE TestCouleurValide = 0 FAIRECombGagn [i] = PartieEntire (NbreAlatoire () * NbCouleurs)TestCouleurValide = 1POUR j ALLANT DE 0 A i 1SI CombGagn [i] == CombGagn [j]TestCouleurValide =0FIN SIFIN POURFIN TANT QUEFIN POURfor(var i=0 ; i < NbrColonnes ; i++){TestCoulValide = TRUE;while (TestCoulValide = TRUE) { Combinaison[i] = Math.round(Math.random()*(NbrCouleurs - 1) + 1); for (var j = 0 ; j < i-1 ; j ++) {TestCoulValide=(Combinaison[i]==Combinaison[j]);

    }}}

  • Algorithme Tester la proposition du joueur par rapport la combinaison secrte // Une copie de la Proposition et de la combinaison secrte qu'on pourra modifier var CopieS = new Array() ;var CopieP = new Array() ;

    for (var i=0 ; i

  • // 1er test : On teste si des couleurs sont bonnes (cest--dire bien places). for ( i=0 ; i
  • // 2nd test: On teste si une couleur est bonne mais mal place

    for ( i = 0; i < NbrColonnes; i++ ){for (j =0; j < NbrColonnes; j++ ){if(CopieS[i] == CopieP[j]){NbrCoulBonnes++; // Une couleur bonneCopieS[i] = 'x'; // on crase cette couleurCopieP[j] = 'y; // on ne la compte plus}}}

    // On conclut sur les testsif(NbrCoulPlacees == NbrColonnes) // Si toutes les couleurs sont bien places, Gagne = true;// la partie est gagne. NbrEssais++; // Le joueur a test une fois de plus une proposition

  • Une premire version en mode texte nous a permis de tester et de mettre au point lalgorithme qui est au cur du jeu, savoir la comparaison dune proposition par rapport la combinaison secrte ; la proposition rentre au clavier sous la forme dune chaine de caractres est convertie en tableau.

    Cette premire version est disponible dans le dossier nomm MASTERMIND_ver1.

  • Deuxime phase de dveloppement

  • Objectifs : Dvelopper une couche graphique et lintgrer au programme

    Sparation des lments selon leur nature dans des fichiers diffrents :Les variables dans un fichier JSLes fonctions dans un fichier JSLe programme principal dans un fichier JSPage HTML basique permettant de tester le programme

  • ConclusionUne exprience enrichissante sur le plan informatique avec rinvestissement de nombreuses connaissances acquises au cours des squences Algorithmique & Programmation , avec un apport bnfique pour toutes les ressources mises en uvre par AbdelkrimUne association qui a amen maturit un projet raliste pour des lves de lyceUn bnfice personnel quand au travail par projet, encore quelque peu loign de nos modes denseignement plus classique en lyce, pour des disciplines gnrales (mathmatiques, sciences physiques).