Défis à partir de Pong

Durée estimée: 45 minutes

Présentation :

La 1° version de l'application Pong est déjà assez difficile, avec la balle qui accélère, et l'utilisation des variables. Vous allez maintenant développer vos propres extensions.

Ce que vous allez faire :

Voici quelques idées d'extensions,

  • changez la couleur de la raquette en fonction du score,
  • réduisez la taille de la raquette en fonction du score,
  • donnez de l'effet à la balle, modifiez sa direction pour qu'elle n'aille pas tout droit (assez difficile),
  • donnez un angle différent à la balle en fonction de l'endroit où elle touche la raquette (difficile).

Choisissez en une et cherchez comment la réaliser.
(Si aucune de ces idées ne vous convient, demandez l'accord de votre enseignant pour en faire une autre.)

  • Ecrivez d'abord sur un papier ce que vous voulez coder et quand :
    • quand la balle touche la raquette d'un joueur, la raquette change de couleur, ...
  • Comment allez-vous faire, avec quels blocs ?
    • pour changer la couleur, je vais utiliser le bloc ...
  • Aurez-vous besoin de variables ?
    • par exemple pour la taille de la raquette ...

Ce que vous allez apprendre (notions abordées) :

Vous allez apprendre à analyser un objectif et à chercher des solutions pour l'atteindre avec les moyens dont vous disposez.

Il y a toujours plusieurs solutions. Travaillez de préférence à deux. Chacun devant expliquer à l'autre la solution qu'il propose. Vus verrez que le fait de devoir expliquer votre idée va vous permettre de l'améliorer.

Ensuite écrivez sur papier, puis dans votre portfolio comment vous allez faire.

Quand vous aurez terminé vous pourrez relire ce que vous avez écrit au début. Les différences sont très intéressantes! Elles vous permettront de progresser. Est-ce qu'il ya des choses que vous n'aviez pas prévues et qu'est-ce qui vous a fait changer ...

Ressources :

Commencez directement l'exercice à aprtir de la version de Pong que vous avez réalisée. Après 5 ou 10 mn, si vous avez du mal, vous pouvez lire les indices ci-dessous pour les différents sujets :000

  • Indices pour le changement de couleur de la raquette :
    Dans la catégorie des blocs d'apparence, quels sont ceux :
    • qui permettent d'avoir un effet sur la couleur ?
    • qui permettent d'annuler les effets sur la couleur au redémarrage ?
  • Indices pour le changement de taille de la raquette :
    • Y a t-il un bloc qui permet de modifier la taille de la raquette (par exemple en %) ?
    • Pouvez-vous définir une variable qui définti la taille initiale de la raquette et comment va t-in l'initailiser ?
    • Quand et comment allez vous réduire la taille de la raquette avec cette variable ?
    • Quand et comment allez vous revenir à la taille initiale de la raquette ?
  • Indices pour donner de l'effet à la balle :
    • quel paramètre décrit la direction de la balle ?
    • quand et comment va t'on modifier la direction de la balle pou qu'elle tourne ?
    • peut-on utiliser une variable pour qu'elle tourne plus ou moins vite ?
    • est-ce qu'il faut fixer une limite à la direction ou l'orientaton de la balle ?
  • Indices pour modifier le rebond en fonction de l'endroit où la balle touche la raquette :

    Pour cet exercice difficile, il faut connaitre la distance verticale entre la balle et la raquette au moment où la balle touche la raquette. Dans la direction verticale, la position de la raquette et de la balle sont données par le paramètre "ordonnée y"" qui est un bloc arrondi en bleu qui se trouve à la fin de la catagorie des blocs de mouvement.

    Par contre, cette information n'est pas partagée et on a besoin de connaitre en même temps, dans les scripts de la balle, l'ordonéne de la balle ET de la raquette. ...

    Pour ça, vous pouvez définir une variable globale Y-RaquetteW pour la raquette de Wissem et Y-RaquetteK pour celle de Khadija. Ensuite recopier le paramètre "ordonnée Y" dans cette variable à chaque mouvement de la raquette.

    Ensuite que devrez-vous faire ?

    • quand la balle touche une raquette, vous pouvez calculer la différence entre l'ordonnée de la balle et celle de la raquette touchée qui est dans la variable correspondante,
    • A aprtir de cette différence, vous pouvez modifier l'angle de rebond.

Auto-contrôle

à compléter ou supprimer

A ajouter dans votre Portfolio

Dans votre portfolio, allez à la page 1.06 défis Pong et répondez aux questions suivantes :

  1. Décrivez, avec des mots à vous, en quoi consiste la programmation évènementielle (event driven programming). Quel gestionnaire d'évènement (event handler) a été utilisé dans l'apppli I Have a Dream ? Comment a t-il été utilisé ?
  2. Est-il possible de cérer une application sans utiliser un gestionnaire d'évènement (event handler) ? Expliquez pourquoi.
  3. Quels éléments et composants constituent l'Interface Utilisateur (UI) dans l'appli Une petite idée comme ça ?
  4. Citez des éléments de l'interface utilisateur UI d'une voiture ? d'un distributeur de boissons ?