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

Slides:



Advertisements
Présentations similaires
Résolution Graphique d'un Programme Linéaire
Advertisements

Tris.
Probabilités et statistiques au lycée
Règles de base en formule classique.
La Gestion de la Configuration
REGLEMENTATION ET INGENIERIE
Algorithmes et structures de données avancés
DTD Sylvain Salvati
Ce que nous dit le BO BO n°20 du 20 mai 2010
Courbes de fonctions avec Excel
Du graphisme à l’écriture
GEF 435 Principes des systèmes d’exploitation
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Collecte de données F. Kohler.
CHAPITRE 2. Les critères de décision en univers mesurable
Outils chimiques pour létude des biomolécules 2 ème partie : Outils chimiques théorique : Modélisation Moléculaire 2) La modélisation moléculaire : optimisation.
(Classes prédéfinies – API Java)
La fonction « Méthodes d’usinage »
C.
Équations et Résolution d’équations en classe de 4ème. Le B. O
Mesure et Instrumentation
Statistique et probabilités au collège
Le logarithme décimal : quelques exemples (introduction, utilisation)
8. Les tableaux P. Costamagna – ISEN N1.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Programmes de calculs en 3ème
Initiation à la programmation et algorithmique cours 3
Utilisation des tableaux
Améliorer les performances du chiffrage à flot SYND
Coupe de France de Robotique 2007 Candidat n°4 – Steven LY BTS IRIS – PROMOTION
Structures de données linéaires
Récursivité.
Démarche de résolution de problèmes
Recherche d’un thème de projet Identification d’un besoin
Algorithmique et Programmation
Collège Pierre-Auguste Renoir Ferrières-en-Gâtinais
Proto jeu Garnoul V.4 – Octobre 2012 Aperçu du matériel.
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Algorithmes Branch & Bound
Python La structure itérative
Biologie : jeu de cartes plastifiées « mitose-méiose » L
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Création et Innovation Technologique
Comprendre la variation dans les données: Notions de base
FICHIERS : Définition : Algorithme général:
Activités mathématiques et supports d’enseignement
Présentation Structures de Données et TDA
1 CSI 4506: Introduction à lintelligence artificielle La recherche adversairiale.
8PRO107 Éléments de programmation
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Récursion IFT1025: Programmation 2 Jian-Yun Nie. Définition Le fait pour un programme ou une méthode de s'appeler lui-même. Par exemple –Définir la notion.
Patrons de conceptions de créations
Python Fonction et procédure
Quelle spécialité en Terminale S ?
Ou l’histoire du pion sans famille
GESTION ET TRAITEMENT DES ERREURS
Algorithmique et programmation (1)‏
Algorithmes Branch & Bound
Micro-intro aux stats.
Windows 2003 Server Modification du mode de domaine
BACCALAUREAT PROFESSIONNEL
Sujets spéciaux en informatique I
TIPE Les dames chinoises
Programme de physique – chimie Terminale S Rentrée scolaire
LE JEU QUI ORIENTE TON ESPRIT ! Trivial’Sup. Conditions et package Ce jeu se joue à 2 joueurs minimum et 6 joueurs maximum. Le jeu est constitué: - D’un.
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
LES JEUX POUR LES DEBUTANTS. SOMMAIRE JEUX DE MASSACRE JEUX DU DAMIER JEUX DU MORPION JEUX DU COMBINE.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Sortie des latinistes du collège Le musée archéologique de Bavay Et l’exposition sur les jeux et jouets Le vendredi 6 novembre 2015.
Transcription de la présentation:

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 ? Retenant l’idée de J.C. Routier, proposer aux élèves des projets axés sur la création d’un jeu ou d’une application autour de l’image ne sera pas vécu comme ne faire que des maths ou de la physique ! Même si on fait appelle à des notions mathématiques, elles ne seront pas vécues comme telles par les élèves, et le travail semblera ainsi plus ludique. Nous retenons l’idée des jeux à un ou deux joueurs, et nous viennent à l’esprit quelques jeux assez simples :

Le jeu du nombre mystère Exemple : L’ordinateur choisit un nombre compris entre 1 et 9999. à chaque tour : le joueur propose un nombre L’ordinateur donne une indication (supérieur ou inférieur). Obj : trouver le nombre mystère en un minimum de propositions. Le jeu est assez basique, il est possible de demander la programmation de la solution idéale afin que le joueur compare son résultat et cette dernière (sans toutefois lui indiquer la méthode).

Le jeu de Nim (qui existe sous différentes variantes) Exemple : Version de base au départ : un tas de 21 allumettes à tour de rôle : Chaque joueur retire une à trois allumettes du tas Objectif : ne pas être celui-qui retire la dernière allumette. Afin d’amener les élèves à créer une version un peu moins basique, il est possible de moduler le jeu avec 3 paramétres : le nombre d’allumettes initiales (par ex. de 20 à 50) le nombre d’allumettes que l’on peut retirer (3 à 6) choisir le niveau d’intelligence de l’ordinateur (choix aléatoire, avec une méthode infaillible à 100% ou avec un taux de 50%).

Le pendu Archiclassique, c’est la recherche d’un mot ou d’une expression, qui pourrait être une bonne occasion de manipuler des chaines de caractères. Les tours de Hanoï Un jeu sans doute intéressant et peu connu de nos élèves, qui consiste à faire passer une pile de disques classés par tailles croissantes, d’un piquet vers un autre avec un piquet intermédiaire, en conservant toujours un empilement ordonné.

on ne peut déplacer plus d'un disque à la fois, L’objectif est à atteindre en un minimum de coups, en respectant deux règles : on ne peut déplacer 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.

L’ordinateur donne deux indications : Le Mastermind Exemple : L’ordinateur choisit P pions de couleurs différentes parmi C couleurs possibles, avec un placement particulier (C > P mais inférieur à 10). à chaque tour : le joueur propose P pions disposés avec précision. L’ordinateur donne deux indications : - le nombre de jetons présents dans la combinaison - le nombre de jetons correctement placés Objectif du joueur : Trouver la combinaison gagnante.

Le jeu nous semble assez simple à programmer, et fera intervenir la manipulation de nombres, d’images, etc. nous retenons donc ce projet, d’abord à deux membres, avec un élargissement avec la venue d’Abdelkrim Morouche nous proposant sa collaboration, trouvant le projet intéressant, avec un rôle de membre ressource.

Première phase de développement

Objectifs: Définir les caractéristiques du jeu. Rechercher les algorithmes les plus pertinents afin d’évaluer le niveau de complexité. Développer un programme de test relativement simple afin de tester les solutions algorithmiques retenues.

Les variables qui caractérisent le jeu // La grille du jeu n'est rien d'autre qu'un tableau à 2 dimensions var NbrLignes = 10; // Correspond aussi au nombre maximum d'essais possibles pour // trouver la combinaison (10 par défaut). var NbrColonnes = 4; // Correspond aussi au nombre de pions dans la combinaison // (4 par défaut) 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 défaut et sera <= NbrMaxiCouleurs) var Combinaison = new Array(); // Tableau pour ranger la combinaison secrète.

Les variables pour gérer la partie var Gagne = false; // Passe à « true » si le joueur trouve la bonne combinaison. var Proposition = new Array(); // Tableau pour mémoriser la proposition du joueur. var NbrEssais = 0; // Mémorise le nombre de propositions faites par l'utilisateur. var NbrCoulPlacees = 0; // Nombre de couleurs bien placées dans la proposition var NbrCoulBonnes = 0; // Nombre de couleurs bonnes mais mal placées

«Tirage aléatoire d’une combinaison secrète » Algorithme «Tirage aléatoire d’une combinaison secrète » for(var i=0 ; i < NbrColonnes ; i++) { Combinaison[i] = Math.round(Math.random()*(NbrCouleurs - 1) + 1) } Cet algorithme va générée la combinaison gagnante avec des pions qui peuvent être de même couleur.

Dans une première ébauche, nous avions imaginé une combinaison secrète avec des pions différents, ce qui avait amené à un algorithme de cette forme : POUR i ALLANT DE 0 A NbPions – 1 TestCouleurValide = 0 // VARIABLE BOOLEENNE TANT QUE TestCouleurValide = 0 FAIRE CombGagn [i] = PartieEntière (NbreAléatoire () * NbCouleurs) TestCouleurValide = 1 POUR j ALLANT DE 0 A i – 1 SI CombGagn [i] == CombGagn [j] TestCouleurValide =0 FIN SI FIN POUR FIN TANT QUE for(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 secrète  » // Une copie de la Proposition et de la combinaison secrète qu'on pourra modifier var CopieS = new Array() ; var CopieP = new Array() ; for (var i=0 ; i<NbrColonnes ; i++) { CopieP[i] = Proposition[i]; CopieS[i] = Combinaison[i]; } // Réinitialisation pour un nouveau test NbrCoulPlacees = 0; NbrCoulBonnes = 0;

// 1er test : On teste si des couleurs sont bonnes (c’est-à-dire bien placées). for ( i=0 ; i<NbrColonnes ; i++) { if (CopieP[i] == CopieS[i]) NbrCoulPlacees++; // Une couleur de plus de bien placée CopieS[i] = 'x'; // On écrase cette couleur, on ne la // recompte pas comme étant bonne // mais mal placée CopieP[i] = 'y'; // dans le second test }

// 2nd test: On teste si une couleur est bonne mais mal placée for ( i = 0; i < NbrColonnes; i++ ) { for (j =0; j < NbrColonnes; j++ ) if(CopieS[i] == CopieP[j]) NbrCoulBonnes++; // Une couleur bonne CopieS[i] = 'x'; // on écrase cette couleur CopieP[j] = 'y‘; // on ne la compte plus } // On conclut sur les tests if(NbrCoulPlacees == NbrColonnes) // Si toutes les couleurs sont bien placées, Gagne = true; // la partie est gagnée. NbrEssais++; // Le joueur a testé une fois de plus une proposition

Une première version en mode texte nous a permis de tester et de mettre au point l’algorithme qui est au cœur du jeu, à savoir la comparaison d’une proposition par rapport à la combinaison secrète ; la proposition rentrée au clavier sous la forme d’une chaine de caractères est convertie en tableau. Cette première version est disponible dans le dossier nommé « MASTERMIND_ver1 ».

Deuxième phase de développement

Objectifs : Développer une couche graphique et l’intégrer au programme Séparation des éléments selon leur nature dans des fichiers différents : Les variables dans un fichier JS Les fonctions dans un fichier JS Le programme principal dans un fichier JS Page HTML basique permettant de tester le programme

Conclusion Une expérience enrichissante sur le plan informatique avec réinvestissement de nombreuses connaissances acquises au cours des séquences « Algorithmique & Programmation » , avec un apport bénéfique pour toutes les ressources mises en œuvre par Abdelkrim Une association qui a amené à maturité un projet réaliste pour des élèves de lycée Un bénéfice personnel quand au travail par projet, encore quelque peu éloigné de nos modes d’enseignement plus classique en lycée, pour des disciplines générales (mathématiques, sciences physiques).