import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.time.LocalTime;
/**
* Write a description of class Clock here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Clock extends Actor
{
final float degrees06 = (float) (Math.PI / 30);
final float degrees30 = degrees06 * 5;
final float degrees90 = degrees30 * 3;
final int size = 590;
final int spacing = 100;
final int diameter = size - 2 * spacing;
final int cx = diameter / 2 + spacing;
final int cy = diameter / 2 + spacing;
public Clock()
{
}
/**
* Act - do whatever the Clock wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
// Add your action code here.
GreenfootImage gfim = new GreenfootImage(900,600);
paintComponent(gfim);
setImage(gfim);
}
public void paintComponent(GreenfootImage gfim) {
drawFace(gfim);
final LocalTime time = LocalTime.now();
int hour = time.getHour();
int minute = time.getMinute();
int second = time.getSecond();
float angle = degrees90 - (degrees06 * second);
drawHand(gfim, angle, diameter / 2 - 30, Color.RED);
float minsecs = (minute + second / 60.0F);
angle = degrees90 - (degrees06 * minsecs);
drawHand(gfim, angle, diameter / 3 + 10, Color.BLACK);
float hourmins = (hour + minsecs / 60.0F);
angle = degrees90 - (degrees30 * hourmins);
drawHand(gfim, angle, diameter / 4 + 10, Color.BLACK);
}
private void drawFace(GreenfootImage gfim) {
//gfim.setStroke(new BasicStroke(2));
gfim.setColor(Color.WHITE);
gfim.fillOval(spacing, spacing, diameter, diameter);
gfim.setColor(Color.BLACK);
gfim.drawOval(spacing, spacing, diameter, diameter);
//setLocation(600,300);
}
private void drawHand(GreenfootImage gfim, float angle, int radius, Color color) {
int x = cx + (int) (radius * Math.cos(angle));
int y = cy - (int) (radius * Math.sin(angle));
gfim.setColor(color);
gfim.drawLine(cx, cy, x, y);
}
}


