changeset 122:45dd79e9ba1b

Rudimentary FPS and clock ticking.
author Simon Cross <hodgestar@gmail.com>
date Sun, 11 Sep 2011 21:14:56 +0200
parents f670ef33ae2e
children 915fd0ee28f5
files mamba/constants.py mamba/engine.py mamba/snake.py mamba/world.py
diffstat 4 files changed, 17 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/constants.py	Sun Sep 11 21:09:52 2011 +0200
+++ b/mamba/constants.py	Sun Sep 11 21:14:56 2011 +0200
@@ -7,6 +7,7 @@
 
 # Miscellaneous constants
 NAME = "Unamed Mamba game"
+FPS = 60
 
 # Sound constants
 FREQ = 44100   # same as audio CD
--- a/mamba/engine.py	Sun Sep 11 21:09:52 2011 +0200
+++ b/mamba/engine.py	Sun Sep 11 21:14:56 2011 +0200
@@ -1,10 +1,11 @@
 """Game engine and top-level game loop."""
 
-from mamba.constants import SCREEN
+from mamba.constants import SCREEN, FPS
 from mamba.widgets.base import Container
 
 import pygame.event
 import pygame.display
+import pygame.time
 import pygame
 from pygame.locals import QUIT, USEREVENT
 
@@ -12,6 +13,7 @@
 class Engine(object):
     def __init__(self):
         self._habitat = None
+        self._fps = FPS
 
     def set_habitat(self, habitat):
         if self._habitat is not None:
@@ -24,6 +26,7 @@
         """Game loop."""
         get_events = pygame.event.get
         flip = pygame.display.flip
+        clock = pygame.time.Clock()
         while True:
             events = get_events()
             for ev in events:
@@ -36,6 +39,7 @@
             surface = pygame.display.get_surface()
             self._habitat.draw(surface)
             flip()
+            self._fps = 1000.0 / clock.tick(FPS)
 
 
 class Habitat(object):
--- a/mamba/snake.py	Sun Sep 11 21:09:52 2011 +0200
+++ b/mamba/snake.py	Sun Sep 11 21:14:56 2011 +0200
@@ -30,7 +30,7 @@
     def draw(self, surface):
         self.segment_group.draw(surface)
 
-    def update(self):
+    def update(self, dt):
         pass
 
     def set_orientation(self, orientation):
--- a/mamba/world.py	Sun Sep 11 21:09:52 2011 +0200
+++ b/mamba/world.py	Sun Sep 11 21:14:56 2011 +0200
@@ -1,5 +1,7 @@
 """World state (level, plus snake, plus other sprites)."""
 
+import time
+
 from mamba.snake import Snake
 
 
@@ -8,6 +10,7 @@
         self.level = level
         tile_pos, orientation = level.get_entry()
         self.snake = Snake(tile_pos, orientation)
+        self._prev = None
 
     def get_size(self):
         return self.level.get_size()
@@ -17,4 +20,10 @@
         self.snake.draw(surface)
 
     def update(self):
-        self.snake.update()
+        prev = self._prev
+        self._prev = time.time()
+        if prev is None:
+            return
+        dt = self._prev - prev
+
+        self.snake.update(dt)