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 ./?sb=scratchCircuit3.

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 ...

    Avant de commncer à programmer, je n'ai pas réfléchi à la manière de jouer. c'est une errur de conception et d'ergonomie.
    Pour le programmeur ça fonctionne, mais pour le joueur non : 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 pourrait-on utiliser piur contrôler la vitesse?
    Cherchez une solution avant de lire la suite.
    Regardez dans les blocs de la catégorie des capteurs si il n'y a pas quelquechose qui pourrait convenir.
    (On cherche une variable continue, donc un bloc de forme arrondie sur les côtés)

    Cherchez avant de continuer ... discutez en avec votre voisin ... ... ... Alors, 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.

      ou  

    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 10 quand la distance est 1/4 de la largeur soit 480/4 = 120, on reprend ces valeurs :
    Ce qui nous donne : nombre = 120/120 =12

    Donc on va commencer par diviser par une variable initialisée à 12 et
    • création de la variable coeff et intialisation à 12 de cette variable au démarrage (drapeau vert),
      si ça va trop ou pas assez on augmentera ou on baissera la valeur de cette variable.
    • Création du bloc qui met la variable vitesse à la valeur de la disatnce divisée par coeff.
    • Insertion de ce bloc dans la boucle infinie, après le bloc d'orientation. De cette manière, la vitesse sera recalculée à chaque passe du programme dans la boucle infinie.
    • suppression ou désactivation des 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.