timer shows remaining time
authorTomas Musil <tomik.musil@gmail.com>
Wed, 5 Sep 2012 14:05:32 +0000 (16:05 +0200)
committerTomas Musil <tomik.musil@gmail.com>
Wed, 5 Sep 2012 14:05:32 +0000 (16:05 +0200)
timer.py

index e1e247b..916d578 100755 (executable)
--- a/timer.py
+++ b/timer.py
@@ -10,15 +10,24 @@ import argparse
 import pygame
 
 class Timer:
 import pygame
 
 class Timer:
-    def __init__(self):
+    def __init__(self, main_time):
         self._last = 0
         self._elapsed = 0.
         self._last = 0
         self._elapsed = 0.
+        self._main_t = main_time
 
     def get_time(self):
         if self._last > 0:
 
     def get_time(self):
         if self._last > 0:
-            return time.time() - self._last + self._elapsed
+            r_time = main_time - (time.time() - self._last + self._elapsed)
+            if (r_time - int(r_time)) < 0.75:
+                sep = ":"
+            else:
+               sep = " "
         else:
         else:
-            return self._elapsed
+            r_time = main_time - self._elapsed
+            sep = ":"
+        if r_time < 0:
+            r_time = 0
+        return "{0:0>2}".format(int(r_time / 60)) + sep + "{0:0>2}".format(int(r_time % 60))
 
     def start(self):
         self._last = time.time()
 
     def start(self):
         self._last = time.time()
@@ -33,19 +42,27 @@ class Timer:
         else:
             return False
 
         else:
             return False
 
+parser = argparse.ArgumentParser(description=__doc__)
+parser.add_argument('-m', type=int, default=45,
+                    help="main time in minutes")
+args = parser.parse_args()
+
+
 pygame.init()
 pygame.init()
-pygame.display.set_mode((400, 100))
+pygame.display.set_mode((600, 100))
 pygame.display.set_caption("Go timer")
 screen = pygame.display.get_surface()
 
 clock = pygame.time.Clock()
 
 pygame.display.set_caption("Go timer")
 screen = pygame.display.get_surface()
 
 clock = pygame.time.Clock()
 
-font = pygame.font.Font(None, 50)
+font = pygame.font.Font(pygame.font.match_font('monospace'), 80)
 
 done = False
 first = True
 
 
 done = False
 first = True
 
-timers = (Timer(), Timer())
+main_time = args.m * 60
+
+timers = (Timer(main_time), Timer(main_time))
 
 while not done:
 
 
 while not done:
 
@@ -64,9 +81,9 @@ while not done:
                     timer.start()
 
     screen.fill([0, 0, 0])
                     timer.start()
 
     screen.fill([0, 0, 0])
-    text1 = font.render("{0:>6.2f}".format(timers[0].get_time()), True, [128, 255, 128])
+    text1 = font.render(timers[0].get_time(), True, [128, 255, 128])
     screen.blit(text1, [10, 10])
     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])
+    text2 = font.render(timers[1].get_time(), True, [128, 255, 128])
+    screen.blit(text2, [300, 10])
     pygame.display.flip()
     clock.tick(15)
     pygame.display.flip()
     clock.tick(15)