Ergonomie, contrôle de la vitesse avec la souris

Durée estimée: 45 minutes

Ce que l’on va faire :

  • analyser les problèmes d'ergonomie,
  • améliorer le pilotage, en accélérant avec la souris,
  • un peu de mathématiques : les règles de trois.

Réalisation

Ressources de départ : vous pouvez partir du résultat de la leçon précédente, ou du projet https://scratch.mit.edu/projects/171778274/.

Notions abordées :

  1. l'ergonomie
  2. les capteurs de type physique : la distance
  3. l'utilisation des opérateurs mathématiques pour manipuler les variables

Déroulement

  1. Réflexions sur l'ergonomie
    Le jeu commence à devenir amusant, mais il est mal fichu!
    il faut une main pour diriger la souris, et l'autre pour accélérer ou freiner avec le clavier.
    C'est nul! Il vaudrait mieux choisir : ou bien la souris ou bien le clavier ...

    En fait, j'ai commencé à programmer sans réfléchir à la manière de jouer. C'est une erreur de conception et d'ergonomie.
    Le programme fonctionne, mais pour le joueur, il est presque impossible d'accélérer ou de freiner pendant la course. Il faut regrouper les commandes sur une seule main et pouvoir accélérer, tourner, ... en regardant uniquement l'écran.
    Comment faire ?

  2. Contrôle de la vitesse avec la souris :
    • On utilise déjà la direction du pointeur de la souris pour orienter la voiture,
    • Quelle autre information du pointeur, peut-on utiliser pour contrôler la vitesse?
    Regardez dans les blocs de la catégorie des capteurs si il n'y a pas un bloc ou une donnée qui pourrait convenir. (On cherche une donnée ou une variable, donc un bloc de forme arrondie sur les côtés)

    Cherchez une solution avant de lire la suite ... discutez en avec votre voisin ... ... Alors ?

    Eh bien on peut utiliser la distance entre la voiture et le pointeur de la souris pour régler la vitesse. Plus la souris est loin, plus la voiture va aller vite.
    On va faire une règle de trois pour calculer la vitesse à partir de la distance.

    2_04/assets/img/V3M1.png   ou   2_04/assets/img/V3M3.png

    La distance est mesurée avec x et y en points d'écran soit 480 x 360, c'est à dire entre -240 et +240 pour x et entre -180 et +180 pour y.
    Si on veut que la vitesse soit égale à 10 quand la distance est de 120 (soit 1/4 de la largeur)
    On a : nombre = distance/vitesse = 120/10 =12

    Donc on va définir une variable coeff par diviser initialisée à 12 et mettre à jour en permanence la variable vitesse comme la distance déivisée par coeff
    • créer la variable coeff et l'intialiser à 12 au démarrage (drapeau vert),
      On pourra ajuster cette valeur si ça va trop vite ou pas assez.
    • Création du bloc qui met la variable vitesse à la valeur de la distance divisée par coeff.
    • Insérer dans la boucle infinie, après le bloc d'orientation, une ligne de commande qui met à jour la vitesse. Elle sera donc mise à jour à chaque itération du programme dans la boucle infinie.
    • supprimer les scripts qui mettaient à jour la vitesse avec les flèches.

Revue des notions mises en oeuvre

  • Variables : nous avons utilisé une variable coeff pour calculer la vitesse.
    Pour l'instant, nous n'avons pas eu besoin d'y toucher, mais plus tard, chacun pourra régler facilement le jeu en modifiant uniquement cette variable, sans avoir à chercher les endroits où elle est utilisée.
  • La distance est similaire au chronomètre. C'est une valeur, qui est mise à jour en permanence. Le programme ne peut pas la modifier, mais peut l'utiliser comme eune variable.
  • La vitesse est calculée dans la boucle infinie, comme l'orientation.
  • Le jeu est plus facile, on bat facilement son record précédent. L'ergonomie est meilleure.