Programmer un chronomètre dans Javascool.

Radiateur1 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Radiateur1 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   1
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"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   Statut Membre Dernière intervention   1 > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   1 > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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