File: clock.py

package info (click to toggle)
minetest-mod-pycraft 0.22-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,744 kB
  • sloc: python: 79,282; makefile: 10
file content (61 lines) | stat: -rwxr-xr-x 1,954 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#
# 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)