On voit ici la nécessité de travailler avec plusieurs variables, une pour les secondes, une pour les minutes et une pour les heures.


DEFINITION DES VARIABLES DE TEMPS



Commence par modifier le nom de la variable globale Temps en la nommant sec

Puis crée deux blocs d'initialisation pour deux nouvelles variables globales min et heure

chrono_temps_2.png


BOUCLES IF THEN ELSE



Nous allons intervenir sur le bloc QUAND chrono CHRONOMETRE FAIRE :

chrono_blocs_3.png

En l'état actuel, quand chrono est actif, on se contente de faire deux actions :

  • Donner à la valeur globale sec la valeur sec+1 (soit sec = sec+1)
  • Afficher la valeur de sec dans Label_Temps


Nous allons maintenant introduire la boucle IF THEN ELSE suivante :

IF sec=60 THEN sec=0 AND min=min+1 ELSE sec=sec+1

SI on a compté 60s, ALORS mettre sec à zéro et ajouter 1 à min, SINON continuer à compter les secondes

chrono_orga_1.png

Ce qui donne sur App Inventor :

chrono_blocs_4.png


AFFICHAGE MIN:SEC



Il reste à adapter l'affichage qui ne donne pour l'instant que les secondes.

On va afficher un enchainement de textes : la valeur de min suivie de la valeur de sec séparées par deux points :.

La fonction Texte / Joint va nous permettre cet enchainement. Note que le petit engrenage bleu dans le bloc Joint permet d'ajouter des lignes à ton bloc de textes joints.

chrono_blocs_5.png


AFFICHAGE DES HEURES



On règle les mêmes problèmes que pour l'affichage des minutes. Il faut simplement penser à mettre à zéro les secondes ET les minutes quand min=60.

  • On insère un bloc IF THEN ELSE qui agit quand min=60
  • On ajoute deux lignes à l'affichage du temps (bloc Texte / Joint)

chrono_blocs_6.png


AMÉLIORATION DE L'AFFICHAGE DU TEMPS



En mode Designer, il faut changer les propriétés du Label_Temps

Label_Temps

  • Taille de police : 40
  • Hauteur : 56 pixels
  • Texte : 00:00:00

A ce stade, notre chronomètre présente un dernier défaut. Quand une valeur (heure, min, sec) est inférieur à 10, on affiche un seul chiffre. Exemple 0:2:25 au lieu de 00:02:25.

La solution à ce problème passe encore par des boucles IF THEN ELSE.

On peut jouer sur les séparateurs en les rendant variables :0 ou : suivant que la valeur suivante est inférieure à 10 ou pas.

Créons 3 nouvelles variables :

chrono_blocs_sep_1.png

Modifions le bloc Texte / Joint pour intégrer ces 3 variables :

chrono_blocs_sep_2.png

Il reste maintenant à créer 3 boucles IF THEN ELSE sur le modèle ci-dessous :

chrono_blocs_sep_3.png

Puis on les intègre dans le bloc du chrono et on pense à modifier la fonction remise à zéro avec bouton_RAZ pour obtenir le résultat final ci-dessous :

chrono_blocs_final.png


BILAN




Nous avons appris à utiliser des variables globale contenant un texte, des blocs Texte et à faire des boucles IF THEN ELSE.

Il resterait sans doute à améliorer ce chronomètre en apportant par exemple les fonctions suivantes :

  • Affichage des centièmes de secondes
  • Enregistrement d'un ou plusieurs temps intermédiaires

...

Tu vois qu'il y a toujours à faire pour améliorer une application. Note que tu as déjà les outils pour répondre à la première fonction d'amélioration (affichage des centièmes de secondes).



Tu peux télécharger l'application au format apk ici : chrono_v2.apk