Programmer un chronomètre dans Javascool.

Fermé
Radiateur1 Messages postés 4 Date d'inscription mardi 24 mars 2015 Statut Membre Dernière intervention 30 mars 2015 - 24 mars 2015 à 18:52
Radiateur1 Messages postés 4 Date d'inscription mardi 24 mars 2015 Statut Membre Dernière intervention 30 mars 2015 - 30 mars 2015 à 22:31
Bonjour à tous et à toutes :)

Je suis élève de terminale, et pour mener à bien mon projet dans le cadre de l'option ISN ( Informatique et Science du Numérique ), j'ai besoin d'insérer un chronomètre dans mon programme - codé en Javascool -. Je ne peux malheureusement pas faire sans, c'est vraiment primordial.

Mon prof n'est pas en mesure de m'aider, et Google ne me propose que des programmes très longs et trop compliqués pour moi.

Ce qu'il me faut, pour être plus précis, c'est un chronomètre qui puisse tourner pendant que le programme s'effectue.

Dans un second temps, j'aurais aimé pouvoir afficher le temps écoulé sur un plateau, toujours dans Javascool, mais cela me semble compliqué.

Toute réponse, voire même piste ou remarque constructive est la bienvenue ! C'est à vous :)
A voir également:

2 réponses

Radiateur1 Messages postés 4 Date d'inscription mardi 24 mars 2015 Statut Membre Dernière intervention 30 mars 2015 1
25 mars 2015 à 22:12
D'accord, merci :) ce que tu me dis, c'est qu'il va falloir que je fasse appel à un autre algorithme dans une autre fenêtre javascool pour pouvoir chronométrer le temps ?

Pour info, la proglet utilisée est codage pixel.
1
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 26/03/2015 à 00:15
"appel à un autre algorithme dans une autre fenêtre javascool"
Non, là tu parles d'un programme, moi je parle d'un thread.
Il est possible de découper un programme pour exécuter plusieurs actions, Java se charge de passer de l'une à l'autre, pour faire comme si c'était en parallèle.

Voici un petit exemple, des "fourmis" se promènent aléatoirement traçant derrière elles une ligne de couleur. Chaque fourmi est gérée par un Thread différent.

private final java.util.Random RANDOM = new java.util.Random();

class Ant extends Thread 
{
    private final String color;
    
    public Ant(String color)
    {
        this.color = color;
    }
    
    private int next(int current, int max)
    {
        switch (RANDOM.nextInt(3))
        {
            case 0:
                return (current < max) ? current+1 : current;
            case 1:
                return (current > -max) ? current-1 : current;
            default:
                return current;
        }
    }
    
    @Override
    public void run() 
    {
        try 
        {
            for (int i=0, x=0, y=0; i<10000; i++)
            {
                sleep(2);
                x = next(x, getWidth());
                y = next(y, getHeight());
                setPixel(x,y,color);
            }
        }
        catch (InterruptedException e)
        {
        }
    }
}

void main()
{
    reset(100,100);
    
    new Ant("red").start();
    new Ant("green").start();
    new Ant("blue").start();
    new Ant("black").start();
}
0
Radiateur1 Messages postés 4 Date d'inscription mardi 24 mars 2015 Statut Membre Dernière intervention 30 mars 2015 1 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
30 mars 2015 à 18:31
D'accord, merci beaucoup ! C'est un peu compliqué pour moi, mais avec l'aide de mon prof, je vais y arriver.
Un problème subsiste, celui du chronomètre en lui-même, que ni moi ni personne dans mon entourage n'est en mesure de faire. Aurais-tu des indications que tu pourrais me donner pour cela ? Je t'en serais très reconnaissant^^
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
30 mars 2015 à 18:57
Tu peux compter l'heure de deux manières en Java :
  • en temps absolu avec System.currentTimeMillis() qui te donne le nombre de millisecondes écoulées depuis le 01/01/1970 00h00
  • en temps relatif avec System.nanoTime() qui te donne le nombre de nanosecondes écoulées depuis un instant donné (le 0 ne correspond à rien)


Dans les deux cas pour faire un chronomètre il faut compter le temps à l'instant où tu as démarrés le chrono et le soustraire au temps actuel.

long t1 = System..currentTimeMillis();
// ...
long t2 = System..currentTimeMillis();
System.out.println("Il s'est écoulé "+(t2-t1)+" ms");
0
Radiateur1 Messages postés 4 Date d'inscription mardi 24 mars 2015 Statut Membre Dernière intervention 30 mars 2015 1 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
30 mars 2015 à 22:31
Wouaouh ! Merci beaucoup, ca m'a l'air d'être exactement ce que je cherchais ! Je vais essayer ca dès demain :)
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
24 mars 2015 à 19:09
Bonjour,

Déjà ta gestion du temps devra s'effectuer dans un Thread à part, pour ne pas bloquer le reste de l'application.
Ensuite l'affichage dépend beaucoup du reste de ton application et de la proglet utilisée.
0