Les projets proposés

Les consignes

Les projets doivent être réalisés par équipes de deux ou trois élèves.
Deux équipes peuvent choisir le même projet.
La progression du projet doit être inscrite dans un carnet de bord. Un dossier de 5 à 10 pages, hors annexes, sera ainsi constitué pour documenter l’épreuve orale, même s’il n’est pas évalué en tant que tel.
Le travail collaboratif sera assuré par un outil de type Google Docs. Le langage de programmation sera choisi parmi Python, C, HTML/CSS, Arduino selon le projet choisi. Il sera possible de choisir un autre langage si les compétences des membres du groupe s’y prêtent, et si le choix est argumenté et partagé dans l’équipe.
La première partie du projet consistera à se documenter sur le principe du projet, et fixer un cahier des charges.
Par exemple, pour un jeu :

  • combien de joueurs,
  • l’ordinateur peut-il être un joueur,
  • quels paramètres peuvent varier avant de démarrer la partie,
  • quelles possibilités d’évolution envisager si le projet initial est terminé,
  • etc.
 
Le code sera nécessairement indenté et commenté. Les noms des variables seront explicites.
 
L’évaluation porte essentiellement sur votre capacité à établir des algorithmes et du code qui vous sont personnels. Mieux vaut un code simple mais qui fonctionne, que beaucoup de fioritures et de gadgets pour un code qui ne fonctionne pas.
Soyez peu ambitieux dans un premier temps : une fois seulement que le noyau sera fonctionnel, vous pourrez enjoliver votre interface utilisateur.
Ne vous contentez pas de faire un copier-coller de code trouvé sur Internet : cela se verra immédiatement à l’oral.

Projet 1 : Jeu de la vie (C)
Le jeu de la vie est un jeu d’automate cellulaire. Il se déroule sur une grille à deux dimensions dont les cases, appelées créatures par analogie avec les êtres vivants, peuvent prendre deux états distincts : “vivantes” ou “mortes”. Ces deux états sont représentés par 0 et 1 (ou noir et blanc par exemple en cas de représentation graphique).
Initialement, des créatures sont disposées de manière aléatoire sur la grille.
À chaque étape, l’évolution d’une créature est entièrement déterminée par l’état de ses huit voisines de la façon suivante :

 
 
Projet 2 : Site web de génération de QCM (HTML/CSS) ( Damien, Sophie et Quentin / Océane et Milana )
Le site affiche aléatoirement plusieurs questions ainsi que quelques propositions de réponses (typiquement 3) et l’utilisateur doit cocher la ou les bonnes réponses. Une évaluation est ensuite réalisée, avec ou sans points négatifs, etc. On peut prévoir également plusieurs niveaux de difficulté ou un chronométrage.
Les thèmes des questions seront pris dans les programmes de mathématiques, de physique-chimie, de sciences de l’ingénieur ou de sciences de la vie et de la Terre de Terminale S.
 
 
Projet n°3 : Jeu des bombardes (Python)
Deux joueurs s’affrontent au canon. Chacun doit ajuster son angle de tir pour tâcher d’atteindre son adversaire, les obus décrivant des trajectoires paraboliques.
L’emplacement des canons et leur angle de tir (la hausse) est défini au début du jeu de manière aléatoire. Après chaque tir, les canons se déplacent un peu.
Les coups au but sont comptabilisés.
On peut ensuite éventuellement faire évoluer les canons lorsqu’ils portent des coups au but par un système de niveaux d’expérience.
 
 
Projet 4 : Génération de fractales (Python)
De nombreuses structures naturelles, ainsi que beaucoup d’organismes vivants, ont une structure fractale décrite par un modèle récursif.
Le programme doit dessiner une fougère, un arbre, un flocon selon ce principe. D’autres courbes sont possibles.
On pourra par exemple utiliser une tortue logo en Python 3 pour dessiner ces courbes.
 
 
Projet 5 : Jeu d’awalé (C)
L’awalé est un jeu d’origine africaine, à deux joueurs, consistant à compter et capturer des graines.
Le joueur joue contre l’ordinateur ou contre un autre joueur. Le jeu démarre avec deux rangées de six cases, contenant chacune 4 graines. À chaque tour, le joueur prend les graines d’une case et les répartit, une par une, dans les cases suivantes (dans l’ordre de rotation fixé au départ). Si sa dernière graine tombe dans un trou du camp adverse et qu’il y a maintenant deux ou trois graines dans ce trou, le joueur récupère ces deux ou trois graines et les met de côté. Ensuite il regarde la case précédente : si elle est dans le camp adverse et contient deux ou trois graines, il récupère ces graines, et ainsi de suite jusqu’à ce qu’il arrive à son camp ou jusqu’à ce qu’il y ait un nombre de graines différent de deux ou trois.
On ne saute pas de case lorsqu’on égrène sauf lorsqu’on a douze graines ou plus, c’est-à-dire qu’on fait un tour complet : on ne remplit pas la case dans laquelle on vient de prendre les graines.
Le joueur propose une case sur laquelle il veut agir et le programme modifie le nombre de graines dans chaque case en conséquence. À chaque tour, l’état de l’ensemble des cases est affiché. Le programme enregistre le nombre de graines gagnées par chaque joueur. Le jeu s’arrête lorsque l’un des joueurs a récupéré 25 graines.
 
 
Projet 6 : Jeu de bataille navale (C)
Le plateau est une grille à deux dimensions sur laquelle on aura placé aléatoirement quelques bateaux. Le joueur propose des positions sur la grille et le programme lui dit si le bateau est coulé ou non. Le jeu s’arrête quand tous les bateaux sont coulés, ou quand il a atteint le nombre maximum de tentatives autorisées.
Pour plus de complexité, on pourra proposer au joueur de commencer par choisir le nombre de bateaux placés sur la grille.
On pourra aussi commencer par des bateaux occupant uniquement une case, puis envisager des bateaux de plusieurs cases.
 
 
Projet 7 : Jeu de Mastermind (C)
Le but du jeu est de trouver un code à 4 chiffres. Le code est entré en dur dès le départ dans le programme, ou généré aléatoirement en début de partie.
Le joueur propose une série de 4 chiffres, et le programme lui répond le nombre de chiffres exacts et correctement placés, et le nombre de chiffres exacts mais mal placés dans le code. Le jeu s’arrête quand le joueur a trouvé le code ou quand il a atteint le nombre maximum de tentatives autorisées.
 
 
Projet 8 : Jeu de Tic Tac Toe (C) ( Jean-Philippe et Vo Ky / Sebastiao et Demba )
Jeu pour deux joueurs, sur un plateau de 3*3 cases. Chacun à son tour, un joueur place son symbole (une croix ou un cercle) sur l’une des cases vides. L’objectif est d’aligner trois symboles.
Évolutions possibles : morpion (alignement de 5 symboles sur un très grand plateau), tic tac toe en 3 dimensions.  
 
Projet 9 : Jeu de snake
Un serpent se promène dans un espace à deux dimensions. Il mange des pommes et gagne des points. La partie s’arrête si le serpent touche une paroi ou lui-même. La longueur du serpent augmente à chaque nouvelle pomme mangée. À chaque niveau, on configure des parois de plus en plus compliquées.  
 
Projet 10 : Jeu de Sudoku (C)
Le plateau est une grille à deux dimensions de 9*9 cases. Le but du jeu est de remplir la grille avec une série de chiffres tous différents (de 0 à 9), qui ne se trouvent jamais plus d’une fois sur une même ligne, une même colonne ou dans une même sous-grille (carrés de 3 par 3). Certaines cases sont déjà remplies au début de la partie.
 
 
Projet 11 : Jeu de puissance 4 (C) ( Thomas et Karima )
Jeu pour deux joueurs, sur un plateau à deux dimensions, de 6 lignes et 7 colonnes. Chacun à son tour, un joueur place l’un de ses 21 pions (jaune ou rouge) en haut de l’une des colonnes. Le pion glisse jusqu’à la position la plus basse possible de cette colonne. L’objectif est d’aligner quatre pions de la même couleur, horizontalement, verticalement, ou en diagonale.
 
 
Projet 12 : Jeu de Nim (C)
Le jeu contient initialement un lot d’allumettes. Chacun des joueurs, à son tour, prend 1, 2 ou 3 allumettes. Celui qui prend la dernière allumette perd la partie.
Évolution possible : proposer en début de partie le choix du dernier gagnant ou du dernier perdant.  
 
Projet 13 : Tours de Hanoi (C)
Jeu contenant une série de disques de diamètres différents et trois “tours”. Initialement, les disques sont tous placés dans une même tour, par ordre décroissant de diamètre. L’objectif est de déplacer l’ensemble des disques vers une autre tour, en un minimum de coups, en ne déplaçant qu’un seul disque à la fois, et en ne plaçant un disque que dans une tour vide ou sur un disque de diamètre supérieur.  
 
Projet 14 : Arduino : à la poursuite de la lumière (Arduino)
Programmer un Arduino pour qu’il mesure l’intensité lumineuse à deux endroits différents de son environnement, et qu’il se dirige vers la zone de plus grande luminosité.

 
 
Projet 15 : Chiffre de Vigenère (C) ( Sarah, Tessa et Théo )
Chiffrement d’un message par substitution des lettres. Le décalage dans l’alphabet est défini par une clé de chiffrement (cf. table de Vigenère). Exemple :
Lettre contenue dans la clé I S N
Position dans l’alphabet 9 19 14
Décalage 8 18 13
Ainsi, le message “Je suis en terminale s” devient grâce à la clé “ISN” :
J E S U I S E N T E R M I N A L E S
I S N I S N I S N I S N I S N I S N
R W F C A F M F G M J Z Q F N T W F
 
Projet 16 : Arduino et digicode (Arduino) ( Antoine et Ewenn )
Programmer un Arduino pour qu’il mesure l’intensité lumineuse à deux endroits différents de son environnement, et qu’il se dirige vers la zone de plus grande luminosité.