### インポート
import math
import datetime
import pygame
from pygame.locals import *
### 定数
WIDTH = 400 # 幅
HEIGHT = 400 # 高さ
RADIUS = 180 # 半径
NEEDLE_H = 120 # 長針
NEEDLE_M = 160 # 短針
NEEDLE_S = 150 # 秒針
BASE_AGL = 90 # 基準角度
CENTER = int(WIDTH/2),int(HEIGHT/2)
### モジュール初期化
pygame.init()
### 時間オブジェクト生成
clock = pygame.time.Clock()
### 画面設定
surface = pygame.display.set_mode((WIDTH,HEIGHT))
### 無限ループ
while True:
### 画面初期化
surface.fill((0,0,0))
### 円表示
pygame.draw.circle(surface, (255,0,0), (CENTER), RADIUS, 2)
### 現在時刻取得
now = datetime.datetime.now()
### 角度計算
angle_h = float(BASE_AGL - 30 * now.hour - 0.5 * now.minute) # 時
angle_m = int(BASE_AGL - 6 * now.minute) # 分
angle_s = int(BASE_AGL - 6 * now.second) # 秒
### 針の終端位置
pos_hx = round(math.cos(math.radians(angle_h))*NEEDLE_H) # 時のX座標
pos_hy = round(math.sin(math.radians(angle_h))*NEEDLE_H) # 時のY座標
pos_mx = round(math.cos(math.radians(angle_m))*NEEDLE_M) # 分のX座標
pos_my = round(math.sin(math.radians(angle_m))*NEEDLE_M) # 分のY座標
pos_sx = round(math.cos(math.radians(angle_s))*NEEDLE_S) # 秒のX座標
pos_sy = round(math.sin(math.radians(angle_s))*NEEDLE_S) # 秒のY座標
### 針表示
pygame.draw.line(surface, (255,255,255), (CENTER), (CENTER[0]+pos_hx,CENTER[1]-pos_hy), 9)
pygame.draw.line(surface, (255,255,255), (CENTER), (CENTER[0]+pos_mx,CENTER[1]-pos_my), 7)
pygame.draw.line(surface, (255,255,255), (CENTER), (CENTER[0]+pos_sx,CENTER[1]-pos_sy), 2)
### 画面更新
pygame.display.update()
### フレームレート設定
clock.tick(100)
### イベント処理
for event in pygame.event.get():
if event.type == KEYDOWN and event.key == K_ESCAPE:
break
else:
continue
### whileループ終了
break
### 終了処理
pygame.quit()