Algorithmique et programmation

Publié le 23 juin 2016 Modifié le : 25 oct. 2017

Écrire à l'auteur

Le  jeudi 23 juin 2016

Jeu de Pong

Programmer un jeu de Pong à l'aide de Scratch.

  • Jeu de Pong

     

     

     

     

     

    Présentation de l’activité


     

     

    Le but du problème est de reproduire ce jeu de pong puis de lui apporter des améliorations. On y consacrera deux heures.

     

     

     

     

     

     

     

    Public


     

     

    Cette situation s'adresse à des élèves de cycle 4 ayant déjà programmé des jeux à l'aide de Scratch, par exemple un jeu de calcul mental, un jeu de nombres ou un jeu dans un labyrinthe.

     

     

     

     

     

    Objectifs


     

     

    • Ecrire, tester, corriger un programme en réponse à un problème donné.

     

    • Réinvestir les notions de déclenchement d'une action par un événement extérieur, de boucles et d'instructions conditionnelles.

     

    • Décomposer un problème en sous-problèmes afin d'en structurer un programme.

     

    • Réinvestir des connaissances de géométrie (angles, repérage dans le plan).

     

     

     

     

     

    Prérequis


     

     

    Mathématiques

     

    • Notion d'angle, angles supplémentaires.

     

    • Repérage dans le plan.

     

     

    T.I.C.E.

     

     • Bases de la programmation à l'aide de Scratch (déplacement d'un lutin, boucles, instructions conditionnelles)

     

     

     

     

     

    Déroulement de l’activité


     

     

    Présentation

     

     

    On annonce aux élèves que leur travail va consister à programmer un jeu de Pong.

     

    Au vidéoprojecteur, on pourra le présenter à l'aide du fichier Jeu de pong.sb2 (mettre la scène en mode "plein écran" pour ne pas montrer l'aire des scripts) ou de cette version en ligne.

     

     

    S'il est nécessaire de faire découvrir aux élèves des nouveaux blocs, on pourra, selon les besoins :

     

    - S’appuyer sur les programme de démonstration : prog04, prog06 et prog08.

     

    - Faire réfléchir les élèves à une ébauche d’algorithme (en langage naturel) et au cours d’une mise en commun s’interroger sur les blocs dont il faudrait disposer pour le programmer. Le professeur montrera alors l’existence de ces blocs.

     

     

     

    Temps de recherche

     

     

    La programmation d'un algorithme permettant d'obtenir instantanément une évaluation de la pertinence et de la solidité de cet algorithme, on mettra des ordinateurs à disposition des élèves.

     

     

    Afin que chacun puisse analyser le jeu à programmer, on pourra diffuser ce lien auprès des élèves : https://scratch.mit.edu/projects/embed/114650659/?autostart=false

     

     

    Pour que les élèves s'approprient et réinvestissent plus facilement les nouveaux blocs, on pourra diffuser ou laisser visible les programmes de démonstration "Prog04", "Prog06" et "Prog08".

     

     

    Si nécessaire, on questionnera, au cas par cas, pour permettre à chacun d'avancer dans l'élaboration de son programme :

     

     

    - Pour chacun des objets (lutins), quelles sont les actions à prendre en compte et à programmer ?

     

    - Pour chacune de ces actions, quels blocs utiliser ?

     

     

    Les deux lutins seront cherchés et choisis dans la bibliothèque de lutins. L'arrière-plan pourra être diffusé dans les dossiers personnels des élèves. Ils pourront aussi en choisir un autre dans la bibliothèque, en dessiner un ou envisager de travailler sur "fond blanc". Ces choix influeront, plus tard, sur la condition d'arrêt du jeu (bord inférieur touché).

     

     

    Pong05

     


     

    Au cas par cas et selon les besoins, on questionnera à nouveau pour guider davantage dans la construction des deux sous-programmes :

     

     

    • Programmer le déplacement de la raquette

     

     

    - Au démarrage du jeu, comment amener la raquette dans sa position initiale ?

     

    Pong01

     

     

    - Quels blocs utiliser pour commander la raquette à l'aide des flèches "gauche" et "droite" du clavier ?

      

    Pong02

     

    ou

     

    Pong03

     

    ou, en utilisant une "boucle infinie". Cette solution présente l'avantage d'offrir un déplacement de la raquette beaucoup plus fluide, notamment au moment des changements de direction.

     

    Pong04

     

     

     

    • Programmer le déplacement de la balle

     

     

    - Quel bloc utiliser pour mettre la balle dans sa position d'origine ? Pour la réorienter ? Pour la faire se déplacer ?

     

    Pong11

     

    Les valeurs à donner à l'orientation initiale et au déplacement sont des variables que les élèves ajusteront par eux même après avoir exécuté leur programme. A la demande, on pourra présenter le bloc permettant d'obtenir une valeur entière, choisie aléatoirement entre deux bornes :

     

    Pong12

     

     

    - Quels blocs utiliser pour programmer l'arrêt de la balle ?

     

    Si l'arrière-plan à un bord inférieur d'une couleur unie, on pourra utiliser un capteur de couleur pour détecter la sortie de la boucle. Sinon, on pourra travailler en considérant l'ordonnée de la balle.

     

    Pong13

     

     

    - Quels blocs utiliser pour détecter la collision avec la raquette ? Comment alors réorienter la balle ? Dans quelle direction ?

     

    Pong14

     

    Différentes stratégies peuvent être envisagées pour redéfinir l'orientation de la balle après son rebond :

     

    - une réorientation fixe (par exemple : 30°)

     

    - une orientation aléatoire

     

    - une orientation conforme aux lois de la physique. Dans ce cas, on sera amené à modéliser le rebond et à effectuer des calculs d'angles pour établir que les directions "avant rebond" et "après rebond" sont supplémentaires.

     

    Pong15

     

     

     

    Pour permettre au plus grand nombre d'achever leur programme, on prolongera le travail des élèves les plus rapides en leur demandant d'imaginer des améliorations pour ce jeu (voir "prolongements possibles" ci-dessous).

     

     

     

    Bilan final

     

    Afin que les élèves gardent une trace de leur travail, les programmes pourront être imprimés.

     

    On reviendra sur la construction du programme (en le reconstruisant au vidéoprojecteur avec l'aide de la classe ou en projetant et en commentant ceux réalisés par les élèves). On mettra alors en avant les différentes stratégies pour répondre à un même sous-problème, les instructions nouvelles et quelques "schémas type".

     

     

    Pong17

     

     

     



    Prolongements possibles


     

     

    • On souhaite un rebond sur la raquette qui soit conforme aux lois de la physique.

     

     

    • On souhaite l'affichage d'un score qui est incrémenté de 1 à chaque rebond de la balle sur la raquette.

     

    Ce prolongement peut être utilisé pour découvrir ou réinvestir la notion de variable. Pour qu'il puisse bénéficier à tous, on pourra diffuser dans les dossiers personnels des élèves un fichier pong.sb2 opérationnel qu'ils auront alors en charge de modifier pour y intégrer un score.

     

     

    • On souhaite que la vitesse de la balle augmente au fur et à mesure que la partie avance.

     

     

    • Au démarrage, on souhaite pouvoir choisir parmi différents niveaux de difficulté qui influent sur la vitesse de la balle.

     

     

    • On souhaite une version avec deux raquettes : joueur 1 VS joueur 2

     

     

    • On souhaite une version avec deux raquettes : joueur VS ordinateur

     

     

     

     

     

    Documents utiles


     

     

    • Fichier Pong.sb2

     

    • Fichier Arrière-plan

     

    • Fichier Pong.sb2 (avec rebonds conformes aux lois de la physique)

     

    • Fichier Pong.sb2 (score)

     

    • Fichier Pong.sb2 (vitesse croissante)

     

    • Fichier Pong.sb2 (score + choix de la vitesse)

     

    • Fichier Pong.sb2 (2 joueurs)

     

    • Fichier Pong.sb2 (1 joueur VS ordinateur)