timer
[imago.git] / timer.py
1 #!/usr/bin/env python
2
3 """Go timer"""
4
5 import os
6 import sys
7 import time
8 import argparse
9
10 import pygame
11
12 class Timer:
13     def __init__(self):
14         self._last = 0
15         self._elapsed = 0.
16
17     def get_time(self):
18         if self._last > 0:
19             return time.time() - self._last + self._elapsed
20         else:
21             return self._elapsed
22
23     def start(self):
24         self._last = time.time()
25
26     def stop(self):
27         self._elapsed += time.time() - self._last
28         self._last = 0
29
30     def is_running(self):
31         if self._last > 0:
32             return True
33         else:
34             return False
35
36 pygame.init()
37 pygame.display.set_mode((400, 100))
38 pygame.display.set_caption("Go timer")
39 screen = pygame.display.get_surface()
40
41 clock = pygame.time.Clock()
42
43 font = pygame.font.Font(None, 50)
44
45 done = False
46 first = True
47
48 timers = (Timer(), Timer())
49
50 while not done:
51
52     for event in pygame.event.get():
53         if event.type == pygame.QUIT:
54             done = True
55         elif event.type == pygame.KEYDOWN:
56             if first:
57                 timers[0].start()
58                 first = False
59                 continue
60             for timer in timers:
61                 if timer.is_running():
62                     timer.stop()
63                 else:
64                     timer.start()
65
66     screen.fill([0, 0, 0])
67     text1 = font.render("{0:>6.2f}".format(timers[0].get_time()), True, [128, 255, 128])
68     screen.blit(text1, [10, 10])
69     text2 = font.render("{0:>6.2f}".format(timers[1].get_time()), True, [128, 255, 128])
70     screen.blit(text2, [200, 10])
71     pygame.display.flip()
72     clock.tick(15)