timer
authorTomas Musil <tomik.musil@gmail.com>
Tue, 4 Sep 2012 17:05:55 +0000 (19:05 +0200)
committerTomas Musil <tomik.musil@gmail.com>
Tue, 4 Sep 2012 17:06:21 +0000 (19:06 +0200)
timer.py [new file with mode: 0755]

diff --git a/timer.py b/timer.py
new file mode 100755 (executable)
index 0000000..e1e247b
--- /dev/null
+++ b/timer.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+
+"""Go timer"""
+
+import os
+import sys
+import time
+import argparse
+
+import pygame
+
+class Timer:
+    def __init__(self):
+        self._last = 0
+        self._elapsed = 0.
+
+    def get_time(self):
+        if self._last > 0:
+            return time.time() - self._last + self._elapsed
+        else:
+            return self._elapsed
+
+    def start(self):
+        self._last = time.time()
+
+    def stop(self):
+        self._elapsed += time.time() - self._last
+        self._last = 0
+
+    def is_running(self):
+        if self._last > 0:
+            return True
+        else:
+            return False
+
+pygame.init()
+pygame.display.set_mode((400, 100))
+pygame.display.set_caption("Go timer")
+screen = pygame.display.get_surface()
+
+clock = pygame.time.Clock()
+
+font = pygame.font.Font(None, 50)
+
+done = False
+first = True
+
+timers = (Timer(), Timer())
+
+while not done:
+
+    for event in pygame.event.get():
+        if event.type == pygame.QUIT:
+            done = True
+        elif event.type == pygame.KEYDOWN:
+            if first:
+                timers[0].start()
+                first = False
+                continue
+            for timer in timers:
+                if timer.is_running():
+                    timer.stop()
+                else:
+                    timer.start()
+
+    screen.fill([0, 0, 0])
+    text1 = font.render("{0:>6.2f}".format(timers[0].get_time()), True, [128, 255, 128])
+    screen.blit(text1, [10, 10])
+    text2 = font.render("{0:>6.2f}".format(timers[1].get_time()), True, [128, 255, 128])
+    screen.blit(text2, [200, 10])
+    pygame.display.flip()
+    clock.tick(15)