/******************************************************************************
 *  Compilation:  javac Clock.java
 *  Execution:    java Clock
 *  Dependences: StdDraw.java
 *
 ******************************************************************************/
import java.util.* ;

public class Horloge1 {

    public static void main(String[] args) {
        StdDraw.enableDoubleBuffering();
        StdDraw.setXscale(-0.6,0.6);
        StdDraw.setYscale(-0.6,0.6);

        final double LSEC = 0.37;
        final double LMIN = 0.3;
        final double LHOUR = 0.2;

        double hours ;
        double minutes ;
        double seconds ;

        while ( true ) {

	        hours = Calendar.getInstance().get(Calendar.HOUR) ;
	        minutes = Calendar.getInstance().get(Calendar.MINUTE) ;
	        seconds = Calendar.getInstance().get(Calendar.SECOND) ;

            StdDraw.clear(StdDraw.LIGHT_GRAY);
            StdDraw.setPenRadius();

            // cercle du fond
            StdDraw.setPenColor(StdDraw.BLACK);
            StdDraw.filledCircle(0, 0, 0.45);

            // points des minutes
            StdDraw.setPenColor(StdDraw.LIGHT_GRAY);
            for (int i = 0; i < 60; i++) {
                double theta = Math.toRadians(i * 6);
                StdDraw.filledCircle( 0.4 * Math.cos(theta), 0.4 * Math.sin(theta), .01);
            }

            // points des heures (par dessus)
            StdDraw.setPenColor(StdDraw.BLUE);
            for (int i = 0; i < 12; i++) {
                double theta = Math.toRadians(i * 30);
                StdDraw.filledCircle(0.4 * Math.cos(theta), 0.4 * Math.sin(theta), .02);
            }

            // aiguille des secondes
            StdDraw.setPenRadius(.01);
            StdDraw.setPenColor(StdDraw.YELLOW);
            double angle1 = Math.toRadians(6 * seconds);
            StdDraw.line(0, 0, LSEC * Math.sin(angle1), LSEC * Math.cos(angle1));

            // aiguille des minutes
            StdDraw.setPenRadius(.02);
            StdDraw.setPenColor(StdDraw.GRAY);
            double angle2 = Math.toRadians(6 * minutes);
            StdDraw.line(0, 0, LMIN * Math.sin(angle2), LMIN * Math.cos(angle2));

            // aiguille des heures
            StdDraw.setPenRadius(.025);
            StdDraw.setPenColor(StdDraw.WHITE);
            double angle3 = Math.toRadians(30 * hours);
            StdDraw.line(0, 0, LHOUR * Math.sin(angle3), LHOUR * Math.cos(angle3));

            // affichage numérique de l'heure
            String time = String.format("%2d:%02d:%02d", (int)hours, (int)minutes, (int)seconds);
            StdDraw.setPenColor(StdDraw.WHITE);
            StdDraw.text(0, -1, time);

            // rafraichissement chaque 1000ms
            StdDraw.show();
            StdDraw.pause(1000);
        }
    }

}
