62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
#
|
|
# Code under the MIT license by Alexander Pruss
|
|
#
|
|
|
|
from drawing import *
|
|
import time
|
|
|
|
d = Drawing()
|
|
|
|
class Hand:
|
|
def __init__(self, center, scale, length, width, material, backMaterial):
|
|
self.center = center
|
|
self.length = length
|
|
self.width = width
|
|
self.scale = scale
|
|
self.previousValue = None
|
|
self.material = material
|
|
self.backMaterial = backMaterial
|
|
|
|
def update(self, value):
|
|
d.penwidth(self.width)
|
|
if self.previousValue != None and self.previousValue != value:
|
|
self.drawLine(self.previousValue, self.backMaterial)
|
|
self.drawLine(value, self.material)
|
|
self.previousValue = value
|
|
|
|
def drawLine(self, value, block):
|
|
angle = pi / 2 - (value % self.scale) * 2 * pi / self.scale
|
|
d.line(self.center[0],self.center[1],self.center[2],
|
|
self.center[0] + self.length * cos(angle),
|
|
self.center[1] + self.length * sin(angle),
|
|
self.center[2], block)
|
|
|
|
radius = 20
|
|
|
|
playerPos = d.mc.player.getPos();
|
|
|
|
center = (playerPos.x, playerPos.y + radius, playerPos.z - radius)
|
|
|
|
for x in range(-radius, radius+1):
|
|
for y in range(-radius, radius+1):
|
|
if x**2+y**2 <= radius**2:
|
|
d.point(center[0]+x, center[1]+y, center[2]-3, WOOL_BLACK)
|
|
|
|
d.penwidth(1)
|
|
for tick in range(0,12):
|
|
d.line(center[0]+0.85*radius*cos(tick * 2 * pi / 12),center[1]+0.85*radius*sin(tick * 2 * pi / 12), center[2]-3,
|
|
center[0]+radius*cos(tick * 2 * pi / 12),center[1]+radius*sin(tick * 2 * pi / 12), center[2]-3,
|
|
WOOL_BLUE)
|
|
|
|
hourHand = Hand(center, 12, radius * 0.5, 3, GOLD_BLOCK, AIR)
|
|
minuteHand = Hand(center, 60, radius * 0.8, 2, GOLD_BLOCK, AIR)
|
|
secondHand = Hand((center[0],center[1],center[2]+1), 60, radius * 0.8, 1, WOOL_RED, AIR)
|
|
|
|
while True:
|
|
t = time.localtime()
|
|
hourHand.update(t[3])
|
|
minuteHand.update(t[4])
|
|
secondHand.update(t[5])
|
|
time.sleep(1)
|
|
|