import pygame
import time
import math

# 初始化pygame
pygame.init()
WIDTH, HEIGHT = 400, 400
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Pygame时钟")
clock_center = (WIDTH // 2, HEIGHT // 2)
radius = 180

# 颜色设置
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (200, 0, 0)
BLUE = (20, 20, 120)

# 字体
font = pygame.font.SysFont(None, 35)

def get_point(angle, r):
    rad = math.radians(angle - 90)
    x = clock_center[0] + r * math.cos(rad)
    y = clock_center[1] + r * math.sin(rad)
    return int(x), int(y)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill(WHITE)
    now = time.localtime()
    h = now.tm_hour % 12
    m = now.tm_min
    s = now.tm_sec

    # 外圈轮廓
    pygame.draw.circle(screen, BLACK, clock_center, radius, 5)

    # 绘制1‑12数字刻度
    for i in range(12):
        angle = i * 30
        outer_p = get_point(angle, radius)
        inner_p = get_point(angle, radius - 20)
        pygame.draw.line(screen, BLACK, inner_p, outer_p, 4)
        num = 12 if i == 0 else i
        text_surface = font.render(str(num), True, BLACK)
        tx, ty = get_point(angle, radius - 45)
        screen.blit(text_surface, text_surface.get_rect(center=(tx, ty)))

    # 秒针
    sec_angle = s * 6
    sec_pos = get_point(sec_angle, radius - 30)
    pygame.draw.line(screen, RED, clock_center, sec_pos, 2)

    # 分针
    min_angle = m * 6 + s * 0.1
    min_pos = get_point(min_angle, radius - 50)
    pygame.draw.line(screen, BLACK, clock_center, min_pos, 4)

    # 时针
    hour_angle = h * 30 + m * 0.5
    hour_pos = get_point(hour_angle, radius - 70)
    pygame.draw.line(screen, BLUE, clock_center, hour_pos, 6)

    # 中心圆点
    pygame.draw.circle(screen, BLACK, clock_center, 8)

    pygame.display.update()
    pygame.time.Clock().tick(30)

pygame.quit()