mirror of
https://github.com/danbulant/introductionToProgramming
synced 2026-05-19 04:18:32 +00:00
38 lines
1.4 KiB
Java
38 lines
1.4 KiB
Java
import common.StdDraw;
|
|
|
|
public class Clock {
|
|
public static void main(String[] args) {
|
|
StdDraw.setScale(-1, 1);
|
|
StdDraw.enableDoubleBuffering();
|
|
|
|
while(true) {
|
|
var time = System.currentTimeMillis();
|
|
var ms = (int) (time % 1000);
|
|
// this could be changed to doubles to have smooth movement
|
|
var seconds = (int) (time / 1000 % 60);
|
|
var minutes = (int) (time / 60_000 % 60);
|
|
var hours = (int) (time / 3_600_000 % 12);
|
|
var secondsAngle = (double) seconds / 60 * 2*Math.PI;
|
|
var minutesAngle = (double) minutes / 60 * 2*Math.PI;
|
|
var hoursAngle = (double) hours / 12 * 2*Math.PI;
|
|
|
|
StdDraw.clear();
|
|
StdDraw.setPenColor(StdDraw.BLACK);
|
|
StdDraw.setPenRadius(0.004);
|
|
StdDraw.line(0, 0, Math.sin(minutesAngle) * 0.8, Math.cos(minutesAngle) * 0.8);
|
|
StdDraw.line(0, 0, Math.sin(hoursAngle), Math.cos(hoursAngle));
|
|
|
|
StdDraw.setPenColor(StdDraw.RED);
|
|
StdDraw.setPenRadius(0.002);
|
|
StdDraw.line(0, 0, Math.sin(secondsAngle), Math.cos(secondsAngle));
|
|
|
|
StdDraw.setPenRadius(0.004);
|
|
StdDraw.setPenColor(StdDraw.BLACK);
|
|
StdDraw.circle(0, 0, 1);
|
|
|
|
StdDraw.show();
|
|
StdDraw.pause(1000 - ms);
|
|
}
|
|
|
|
}
|
|
}
|