l'utilisation des opérateurs mathématiques pour manipuler les variables
Déroulement
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 ?
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.
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 é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.